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 1v0bIh-00GApm-Vu for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Sep 2025 07:49:32 +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 1v0bHi-00HG70-6W for pgsql-hackers@arkaria.postgresql.org; Mon, 22 Sep 2025 07:48:30 +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 1v0bHh-00HG6s-F9 for pgsql-hackers@lists.postgresql.org; Mon, 22 Sep 2025 07:48:29 +0000 Received: from mail-vk1-xa32.google.com ([2607:f8b0:4864:20::a32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v0bHe-001jF2-38 for pgsql-hackers@lists.postgresql.org; Mon, 22 Sep 2025 07:48:28 +0000 Received: by mail-vk1-xa32.google.com with SMTP id 71dfb90a1353d-54bbd648c8fso284112e0c.3 for ; Mon, 22 Sep 2025 00:48:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758527306; x=1759132106; 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=7Oo3m5a4GW4vYT6261g5txi22AvoEA3MvxslxO1xBI8=; b=LHMExK4iRhoDBsSSYDOYm6SHY2AVoD1S5Y5cq6mJIkvHbAnho6igyHl/xHJGm1KTQI xlYachNFRFhwq51d/IPL5/XD4k6WVE/bydJ6xo0aff9rKn5z7DgFJYD4RO94goHqHkSA WoXOzkVCWzAESMG5z1e+KU5o/8l0DIQr49KydetP4xL1CkiO+cb8L5rH8k6COYvd2ds4 Rykftjp047zmDotnAytqKptYqKpxmGttAbKKYs/hBA3IF8/bJtE+fwmNoiMzALe+CJax 06HV4KhZAisu9ywWi3dPJkhLIzVEpapMzlBEZj01pR6HCeerZJFNezwMlSY8r04MWSjl MOGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758527306; x=1759132106; 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=7Oo3m5a4GW4vYT6261g5txi22AvoEA3MvxslxO1xBI8=; b=gsB+WMX1lPVSl4ogFKMAIJFVIEoJE4BvTid41t/U66HKC4pk2XGS5NSBCdA75gRZ2+ 0d1QdlPK6UpRZA/d2Y0gGNAXDlMJ90GE8rpjs9oNceGgyurS16SK1ba9IyfwBLZwRjkD 90dcRx3E7Q6DLx9axmHTisrvXB/NLgbOsPCeTiLFBHz6IjssOpMfctj4gWegASFjaDVc HUIQb7gLMXM6cbq1MaOfbc8X8ZdZYyjmnkMkml5FLmY9A10pIKlmM58s/XqOMYYaxczK g3bE0cJRQHhumDMw5Vd6gtwtwv8ghO4Han4iQRnBQGhBv8J3h98Wi033NrcKSpAXTnBH 6IPA== X-Gm-Message-State: AOJu0YzVRPBOwJd8UidmjgilBDrQup4BN1I8M3JSxeBvC7tF2c8o9R0c Y26DTCV8Zc0Lgxaacd8H1/R1taOZyCQgDb5NCslumaQ5nPXnTkjfWuHGiUnL+2RYQlTexYI2B6V E5wCT2iLfuNtplzOd+XSGolGIjLy+uRyMkqMg3zmlXA== X-Gm-Gg: ASbGncslJuEmU+QkGe9gf30AKovpR0N9teeo55jn17AJFI3St1EYJi7AqYapydF2nOP VuU1SMC8GpYVzqQGTCSBxPanXvT4eU2BzyVIAA5rpZ3HiGYBIpYslQK3h7JtECkklNXF/oyMM9M ruF6KJbHksp/Hj+3FciXI1U9+vvnA5ix/PYsTc0SGjSeaOZOABJMfQUVM//MrSLlcCcaiUu0D/U ho90kMWLWaC2JfFHrioMC3fOgCMySEWhbHftVl601wGPp95g7ks7ZkKc7wbkWP272Vichp3iF8v PxrTQrw= X-Google-Smtp-Source: AGHT+IF3GcPEYTa9uyuN9FjPIWlknu8rvW76d95q9+0B915PaoZO6ZYXiRhtnluYH98J4CQCy6ZhpRdUa4wQhj0cmdY= X-Received: by 2002:a05:6122:caa:b0:544:98a0:4869 with SMTP id 71dfb90a1353d-54a83720fa7mr3424931e0c.3.1758527306242; Mon, 22 Sep 2025 00:48:26 -0700 (PDT) MIME-Version: 1.0 References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> <57a94d8a-d7b6-4c5e-9001-be1cd403b172@postgrespro.ru> <54414932-9E82-47AA-902B-2DED18F07F64@gmail.com> <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> In-Reply-To: <3280c458-a886-4c58-8e2b-4d220b73161d@postgrespro.ru> From: jian he Date: Mon, 22 Sep 2025 15:47:49 +0800 X-Gm-Features: AS18NWBFd2_O-_At_hshldJ4ev8B3bvVTEdMhCmes-WdGEZBnbw9aLOVAfp9WIk Message-ID: Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Dmitry Koval Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000006ad406063f5f0bea" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006ad406063f5f0bea Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Sep 20, 2025 at 4:06=E2=80=AFAM Dmitry Koval wrote: > > Hi, Jiah He! > > Thanks! > > >list_intersection seems not right, how can we be sure it deals with > >collation correctly? > > list_intersection function replaced by new partitions_lists_intersection > function. > hi, more about v60. + /* + * If new partition has the same name as split partition then we should + * rename split partition for reusing name. + */ + if (isSameName) + { + /* + * We must bump the command counter to make the split partition tuple + * visible for renaming. + */ + CommandCounterIncrement(); + /* Rename partition. */ + sprintf(tmpRelName, "split-%u-%X-tmp", RelationGetRelid(rel), MyProcPid); + RenameRelationInternal(splitRelOid, tmpRelName, true, false); + + /* + * We must bump the command counter to make the split partition tuple + * visible after renaming. + */ + CommandCounterIncrement(); + } duplicated CommandCounterIncrement call? + +/* + * get_list_partvalue_string + * A C string representation of one list partition value + */ +char * +get_list_partvalue_string(Const *val) +{ + deparse_context context; + StringInfo buf =3D makeStringInfo(); + + memset(&context, 0, sizeof(deparse_context)); + context.buf =3D buf; + + get_const_expr(val, &context, -1); + + return buf->data; +} + ereport(ERROR, + errcode(ERRCODE_INVALID_OBJECT_DEFINITION), + errmsg("new partitions do not have value %s but split partition does", + searchNull ? "NULL" : get_list_partvalue_string(notFoundVal))); get_list_partvalue_string seems not quite right, because it won't print Con= st node collation info. However, sometimes we do really need to print the collation, i think. give that we can do: CREATE TABLE x(a text collate "C") PARTITION BY LIST (a collate case_insensitive); we can simply call deparse_expression. so I removed the get_list_partvalue_string. partitions_lists_intersection will get all the common Const nodes in two PartitionBoundSpec->listdatums. but that's expensive, and we only need the first common Const location for error reporting, so I refactored it too. I propose to change the function name check_partitions_not_overlap_list to check_list_partitions_overlap, what do you think? I also heavily refactor the test again. (arrange some error check test code together, combine several tests togethe= r, remove/reduce unnecessary tests). For example, the below code can be merged together to make it more readable= . SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid =3D 'salespeople2_3'::regclass::oid ORDER BY attnum; SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid =3D 'salespeople3_4'::regclass::oid ORDER BY attnum; SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid =3D 'salespeople4_5'::regclass::oid ORDER BY attnum; please check the attached v60 refactor for SPLIT PARTITION. --0000000000006ad406063f5f0bea Content-Type: application/octet-stream; name="v60-0001-refactor-v60.no-cfbot" Content-Disposition: attachment; filename="v60-0001-refactor-v60.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfutn2uk0 RnJvbSBlMGIxZjgyYmIwY2UxMGUwN2RiNDMxNmQxZDgxY2RhZWFjNmIyOWYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgU2VwIDIwMjUgMTU6NDQ6MjIgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 MCAxLzFdIHJlZmFjdG9yIHY2MAoKbWFpbmx5IHJlZmFjdG9yOgpwYXJ0aXRpb25zX2xpc3RzX2lu dGVyc2VjdGlvbgpjaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zCnJlZ3Jlc3Mg dGVzdAotLS0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAgICB8 IDEzMSArKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAg ICAgICAgICB8ICAxOCAtLQogc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggICAgICAgICAg ICAgICAgIHwgICAyIC0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0 Lm91dCB8IDE4OCArKysrKysrLS0tLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9zcGxpdC5zcWwgICAgICB8IDEwNCArKysrLS0tLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDE4 MyBpbnNlcnRpb25zKCspLCAyNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0Ym91bmRzLmMKaW5kZXggNWYyZWU2ZTAyYTcuLjgxMTVjYWFjYzZhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTUxOTksNTUgKzUxOTksNjYgQEAgY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogfQogCiAvKgotICog cGFydGl0aW9uc19saXN0c19pbnRlcnNlY3Rpb24KKyAqIHBhcnRpdGlvbnNfbGlzdGRhdHVtX2lu dGVyc2VjdGlvbgogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCiAg KgogICogRnVuY3Rpb24gY29tcGFyZXMgbGlzdHMgb2YgdmFsdWVzIGZvciBkaWZmZXJlbnQgcGFy dGl0aW9ucy4KLSAqIFJldHVybiBhIGxpc3QgdGhhdCBjb250YWlucyBhbGwgdGhlIGNlbGxzIHRo YXQgYXJlIGluIGJvdGggbGlzdDEgYW5kCisgKiBSZXR1cm4gYSBsaXN0IHRoYXQgY29udGFpbnMg Km9uZSogY2VsbCB0aGF0IGFyZSBpbiBib3RoIGxpc3QxIGFuZAogICogbGlzdDIuICBUaGUgcmV0 dXJuZWQgbGlzdCBpcyBmcmVzaGx5IGFsbG9jYXRlZCB2aWEgcGFsbG9jKCksIGJ1dCB0aGUKICAq IGNlbGxzIHRoZW1zZWx2ZXMgcG9pbnQgdG8gdGhlIHNhbWUgb2JqZWN0cyBhcyB0aGUgY2VsbHMg b2YgdGhlCiAgKiBpbnB1dCBsaXN0cy4KKyAqCisgKiBDdXJyZW50bHksIHRoZXJlIGlzIG5vIG5l ZWQgdG8gY29sbGVjdCBhbGwgY29tbW9uIHBhcnRpdGlvbiBkYXR1bXMgZnJvbSB0aGUKKyAqIHR3 byBsaXN0cy4KICAqLwogc3RhdGljIExpc3QgKgotcGFydGl0aW9uc19saXN0c19pbnRlcnNlY3Rp b24oRm1nckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xsYXRpb24sCi0JCQkJCQkJICBj b25zdCBMaXN0ICpsaXN0MSwgY29uc3QgTGlzdCAqbGlzdDIpCitwYXJ0aXRpb25zX2xpc3RkYXR1 bV9pbnRlcnNlY3Rpb24oRm1nckluZm8gKnBhcnRzdXBmdW5jLCBPaWQgKnBhcnRjb2xsYXRpb24s CisJCQkJCQkJCSAgY29uc3QgTGlzdCAqbGlzdDEsIGNvbnN0IExpc3QgKmxpc3QyKQogewotCUxp c3QJICAgKnJlc3VsdDsKLQljb25zdCBMaXN0Q2VsbCAqY2VsbDsKKwlMaXN0CSAgICpyZXN1bHQg PSBOSUw7CisJYm9vbAkJaXNudWxsMSA9IGZhbHNlOworCWJvb2wJCWlzbnVsbDIgPSBmYWxzZTsK IAogCWlmIChsaXN0MSA9PSBOSUwgfHwgbGlzdDIgPT0gTklMKQotCQlyZXR1cm4gZmFsc2U7CisJ CXJldHVybiByZXN1bHQ7CiAKLQlyZXN1bHQgPSBOSUw7Ci0JZm9yZWFjaChjZWxsLCBsaXN0MSkK Kwlmb3JlYWNoX25vZGUoQ29uc3QsIHZhbDEsIGxpc3QxKQogCXsKLQkJQ29uc3QJICAgKnZhbDEg PSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbCk7Ci0KLQkJaWYgKCF2YWwxLT5jb25zdGlzbnVsbCkK KwkJaWYgKHZhbDEtPmNvbnN0aXNudWxsKQogCQl7Ci0JCQljb25zdCBMaXN0Q2VsbCAqY2VsbDI7 Ci0KLQkJCWZvcmVhY2goY2VsbDIsIGxpc3QyKQorCQkJaWYgKGlzbnVsbDIpCiAJCQl7Ci0JCQkJ Q29uc3QJICAgKnZhbDIgPSBsZmlyc3Rfbm9kZShDb25zdCwgY2VsbDIpOwotCi0JCQkJaWYgKHZh bDItPmNvbnN0aXNudWxsKQotCQkJCQljb250aW51ZTsKKwkJCQlyZXN1bHQgPSBsYXBwZW5kKHJl c3VsdCwgdmFsMSk7CisJCQkJcmV0dXJuIHJlc3VsdDsKKwkJCX0KKwkJCWlzbnVsbDEgPSB0cnVl OworCQkJY29udGludWU7CisJCX0KIAotCQkJCS8qIENvbXBhcmUgdHdvIGRhdHVtcyB2YWx1ZXMu ICovCi0JCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5j WzBdLAotCQkJCQkJCQkJCQkJCXBhcnRjb2xsYXRpb25bMF0sCi0JCQkJCQkJCQkJCQkJdmFsMS0+ Y29uc3R2YWx1ZSwKLQkJCQkJCQkJCQkJCQl2YWwyLT5jb25zdHZhbHVlKSkgPT0gMCkKKwkJZm9y ZWFjaF9ub2RlKENvbnN0LCB2YWwyLCBsaXN0MikKKwkJeworCQkJaWYgKHZhbDItPmNvbnN0aXNu dWxsKQorCQkJeworCQkJCWlmIChpc251bGwxKQogCQkJCXsKLQkJCQkJcmVzdWx0ID0gbGFwcGVu ZChyZXN1bHQsIGxmaXJzdChjZWxsKSk7Ci0JCQkJCWJyZWFrOworCQkJCQlyZXN1bHQgPSBsYXBw ZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJCXJldHVybiByZXN1bHQ7CiAJCQkJfQorCQkJCWlzbnVs bDIgPSB0cnVlOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKiBDb21wYXJlIHR3byBkYXR1 bXMgdmFsdWVzLiAqLworCQkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBh cnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJcGFydGNvbGxhdGlvblswXSwKKwkJCQkJCQkJCQkJ CXZhbDEtPmNvbnN0dmFsdWUsCisJCQkJCQkJCQkJCQl2YWwyLT5jb25zdHZhbHVlKSkgPT0gMCkK KwkJCXsKKwkJCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdmFsMSk7CisJCQkJcmV0dXJuIHJl c3VsdDsKIAkJCX0KIAkJfQotCQllbHNlIGlmIChsaXN0X21lbWJlcihsaXN0MiwgbGZpcnN0KGNl bGwpKSkKLQkJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBsZmlyc3QoY2VsbCkpOwogCX0KIAog CXJldHVybiByZXN1bHQ7CkBAIC01Mjg4LDEzICs1Mjk5LDEzIEBAIGNoZWNrX3BhcnRpdGlvbnNf bm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQsCiAJCXsKIAkJCXNwczIgPSBwYXJ0c1tq XTsKIAotCQkJb3ZlcmxhcCA9IHBhcnRpdGlvbnNfbGlzdHNfaW50ZXJzZWN0aW9uKCZrZXktPnBh cnRzdXBmdW5jWzBdLAotCQkJCQkJCQkJCQkJCWtleS0+cGFydGNvbGxhdGlvbiwKLQkJCQkJCQkJ CQkJCQlzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywKLQkJCQkJCQkJCQkJCQlzcHMyLT5ib3VuZC0+ bGlzdGRhdHVtcyk7CisJCQlvdmVybGFwID0gcGFydGl0aW9uc19saXN0ZGF0dW1faW50ZXJzZWN0 aW9uKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQkJCQkga2V5LT5wYXJ0Y29sbGF0 aW9uLAorCQkJCQkJCQkJCQkJCQkgc3BzMS0+Ym91bmQtPmxpc3RkYXR1bXMsCisJCQkJCQkJCQkJ CQkJCSBzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CiAJCQlpZiAobGlzdF9sZW5ndGgob3Zlcmxh cCkgPiAwKQogCQkJewotCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikgbGZpcnN0KGxpc3Rf aGVhZChvdmVybGFwKSk7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25zdCAqKSBsaW5pdGlhbF9u b2RlKENvbnN0LCBvdmVybGFwKTsKIAogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCkBAIC01NDEwLDcgKzU0MjEsNyBA QCBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlvbiBwYXJlbnQs CiAJCQkJCQkJCSAgIHJlbG5hbWUsCiAJCQkJCQkJCSAgIGdldF9yZWxfbmFtZShzcGxpdFBhcnRP aWQpKSwKIAkJCQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24iLAotCQkJCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIiksCisJ CQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMiKSwKIAkJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgZGF0dW0pKSk7CiAJ CQl9CiAJCQllbHNlIGlmIChjbXB2YWwgPCAwKQpAQCAtNTQyMCw3ICs1NDMxLDcgQEAgY2hlY2tf cGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJ CSAgIHJlbG5hbWUsCiAJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHNwbGl0UGFydE9pZCkpLAogCQkJ CQkJZXJyaGludCgiJXMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMg bXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIiwKLQkJ CQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIiksCisJCQkJCQkJCSJBTFRF UiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyIpLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIGRhdHVtKSkpOwogCQl9CiAJCWVsc2UKQEAg LTU0NTIsNyArNTQ2Myw3IEBAIGNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3Jhbmdl KFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJICAgcmVsbmFtZSwKIAkJCQkJCQkJICAgZ2V0X3Jl bF9uYW1lKHNwbGl0UGFydE9pZCkpLAogCQkJCQkJCWVycmhpbnQoIiVzIHJlcXVpcmUgY29tYmlu ZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQg b2YgdGhlIHNwbGl0IHBhcnRpdGlvbiIsCi0JCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMiKSwKKwkJCQkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O UyIpLAogCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigoTm9k ZSAqKSBkYXR1bSkpKTsKIAkJCX0KIAkJCWVsc2UgaWYgKGNtcHZhbCA+IDApCkBAIC01NDYyLDcg KzU0NzMsNyBAQCBjaGVja19wYXJ0aXRpb25fYm91bmRzX2Zvcl9zcGxpdF9yYW5nZShSZWxhdGlv biBwYXJlbnQsCiAJCQkJCQkJICAgcmVsbmFtZSwKIAkJCQkJCQkgICBnZXRfcmVsX25hbWUoc3Bs aXRQYXJ0T2lkKSksCiAJCQkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBv ZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxp dCBwYXJ0aXRpb24iLAotCQkJCQkJCQkiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMi KSwKKwkJCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIiksCiAJCQkJCQlw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24oKE5vZGUgKikgZGF0dW0pKSk7 CiAJCX0KIAl9CkBAIC01NjMyLDcgKzU2NDMsNiBAQCBjaGVja19wYXJlbnRfdmFsdWVzX2luX25l d19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKIAlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRp bmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKIAlpbnQJCQlpOwogCWJvb2wJCWZvdW5kID0gdHJ1 ZTsKLQlib29sCQlzZWFyY2hOdWxsID0gZmFsc2U7CiAJRGF0dW0JCWRhdHVtID0gUG9pbnRlckdl dERhdHVtKE5VTEwpOwogCiAJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFU RUdZX0xJU1QpOwpAQCAtNTY0NiwxMiArNTY1NiwxOCBAQCBjaGVja19wYXJlbnRfdmFsdWVzX2lu X25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKIAl7CiAJCWlmICghZmluZF92YWx1ZV9p bl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBmdW5jWzBdLAogCQkJCQkJCQkJCQkg ICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCB0cnVlKSkKLQkJewog CQkJZm91bmQgPSBmYWxzZTsKLQkJCXNlYXJjaE51bGwgPSB0cnVlOwotCQl9CiAJfQogCisJaWYg KCFmb3VuZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBjb21iaW5lZCBw YXJ0aXRpb24gYm91bmRzIGRvIG5vdCBjb250YWluIHZhbHVlICglcykgYnV0IHNwbGl0IHBhcnRp dGlvbiBcIiVzXCIgZG9lcyIsCisJCQkJCSAgICJOVUxMIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1l KHBhcnRPaWQpKSwKKwkJCQllcnJoaW50KCIlcyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBu ZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBw YXJ0aXRpb24iLAorCQkJCQkJIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIikpOwor CiAJLyoKIAkgKiBTZWFyY2ggYWxsIHZhbHVlcyBvZiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBwYXJ0 T2lkIGluIFBhcnRpdGlvbkRlc2Mgb2YKIAkgKiBwYXJ0aXRpb25lZCB0YWJsZS4KQEAgLTU2NzUs MjQgKzU2OTEsMjUgQEAgY2hlY2tfcGFyZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucyhSZWxh dGlvbiBwYXJlbnQsCiAJewogCQlDb25zdAkgICAqbm90Rm91bmRWYWw7CiAKLQkJaWYgKCFzZWFy Y2hOdWxsKQotCi0JCQkvKgotCQkJICogTWFrZSBDb25zdCBmb3IgZ2V0dGluZyBzdHJpbmcgcmVw cmVzZW50YXRpb24gb2Ygbm90IGZvdW5kCi0JCQkgKiB2YWx1ZS4KLQkJCSAqLwotCQkJbm90Rm91 bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0sCi0JCQkJCQkJCQlrZXktPnBhcnR0 eXBtb2RbMF0sCi0JCQkJCQkJCQlrZXktPnBhcnR0eXBjb2xsWzBdLAotCQkJCQkJCQkJa2V5LT5w YXJ0dHlwbGVuWzBdLAotCQkJCQkJCQkJZGF0dW0sCi0JCQkJCQkJCQlmYWxzZSwJLyogaXNudWxs ICovCi0JCQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7CisJCS8qCisJCSAqIE1ha2UgQ29u c3QgZm9yIGdldHRpbmcgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG5vdCBmb3VuZAorCQkgKiB2 YWx1ZS4KKwkJKi8KKwkJbm90Rm91bmRWYWwgPSBtYWtlQ29uc3Qoa2V5LT5wYXJ0dHlwaWRbMF0s CisJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJa2V5LT5wYXJ0dHlwY29sbFsw XSwKKwkJCQkJCQkJa2V5LT5wYXJ0dHlwbGVuWzBdLAorCQkJCQkJCQlkYXR1bSwKKwkJCQkJCQkJ ZmFsc2UsCS8qIGlzbnVsbCAqLworCQkJCQkJCQlrZXktPnBhcnR0eXBieXZhbFswXSk7CiAKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCi0JCQkJZXJybXNnKCJuZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAlcyBi dXQgc3BsaXQgcGFydGl0aW9uIGRvZXMiLAotCQkJCQkgICBzZWFyY2hOdWxsID8gIk5VTEwiIDog Z2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhub3RGb3VuZFZhbCkpKTsKKwkJCQllcnJtc2coIm5l dyBwYXJ0aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlvbiBib3VuZHMgZG8gbm90IGNvbnRhaW4gdmFs dWUgKCVzKSBidXQgc3BsaXQgcGFydGl0aW9uIFwiJXNcIiBkb2VzIiwKKwkJCQkJICAgZGVwYXJz ZV9leHByZXNzaW9uKChOb2RlICopIG5vdEZvdW5kVmFsLCBOSUwsIGZhbHNlLCBmYWxzZSksCisJ CQkJCSAgIGdldF9yZWxfbmFtZShwYXJ0T2lkKSksCisJCQkJZXJyaGludCgiJXMgcmVxdWlyZSBj b21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBi b3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCSJBTFRFUiBUQUJMRSAuLi4gU1BM SVQgUEFSVElUSU9OUyIpKTsKIAl9CiB9CiAKQEAgLTU3MTIsNyArNTcyOSw3IEBAIGNoZWNrX3Bh cmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMoUmVsYXRpb24gcGFyZW50LAogICoKICAqIHBh cmVudDoJCQlwYXJ0aXRpb25lZCB0YWJsZQogICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRp b24gT2lkCi0gKiBsaXN0OgkJCWxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIHBhcnRsaXN0OgkJ bGlzdCBvZiBuZXcgcGFydGl0aW9ucyBhZnRlciBwYXJ0aXRpb24gc3BsaXQKICAqIHBzdGF0ZToJ CQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRp b24KICAqLwogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGMxNjVmYzYwMTJl Li4wNDA4YTk1OTQxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTM3MDksMjEg KzEzNzA5LDMgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91bmRfZGF0dW1z KQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KLQotLyoKLSAqIGdldF9saXN0X3BhcnR2YWx1ZV9z dHJpbmcKLSAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9uZSBsaXN0IHBhcnRpdGlv biB2YWx1ZQotICovCi1jaGFyICoKLWdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcoQ29uc3QgKnZh bCkKLXsKLQlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKLQlTdHJpbmdJbmZvCWJ1ZiA9IG1ha2VT dHJpbmdJbmZvKCk7Ci0KLQltZW1zZXQoJmNvbnRleHQsIDAsIHNpemVvZihkZXBhcnNlX2NvbnRl eHQpKTsKLQljb250ZXh0LmJ1ZiA9IGJ1ZjsKLQotCWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRl eHQsIC0xKTsKLQotCXJldHVybiBidWYtPmRhdGE7Ci19CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9ydWxldXRpbHMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oCmluZGV4 IDcyNmU0MTgxOTNmLi43YmE3ZDg4NzkxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0LDYg KzU0LDQgQEAgZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJv dW5kX2RhdHVtcyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJp bmcoT2lkIHN0YXRleHRpZCk7CiAKLWV4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3Ry aW5nKENvbnN0ICp2YWwpOwotCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3NwbGl0Lm91dAppbmRleCA4YzExYzZj MzA5Yy4uNzAyOTQyODZmMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3NwbGl0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9zcGxpdC5vdXQKQEAgLTExLDcgKzExLDcgQEAgU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0 aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOwogLS0KIC0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCiAt LQotQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBpbnQsIHNhbGVzcGVy c29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0ZSkg UEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CiBDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0w MScpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScp OwogQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKQEAgLTU3LDcgKzU3LDcgQEAgQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiBFUlJPUjogIGxvd2VyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9m IHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgogTElORSAyOiAgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8uLi4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1I SU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZSBjb21iaW5lZCBi b3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0 aGUgc3BsaXQgcGFydGl0aW9uCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElP TlMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5 IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCiAtLSBFUlJPUjogIHBhcnRp dGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2VkCiAt LSAoV2UgY2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBh cnRpdGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5h bWUpCiBBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KQEAgLTEwMCw3ICsxMDAsNyBAQCBBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KIEVSUk9SOiAgdXBw ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdXBw ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCiBMSU5F IDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAo JzIwMjItMDYtMC4uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KLUhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElU SU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0 bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KK0hJTlQ6ICBBTFRFUiBU QUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcg cGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0 aXRpb24KIC0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIgogQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiAg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCkBAIC0xMjIsNyArMTIyLDcgQEAgQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCiBFUlJPUjog IGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRv IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgog TElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAyJykgVE8uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCi1ISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVx dWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNo IHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCitISU5UOiAgQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMgcmVxdWlyZSBjb21iaW5lZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlv bnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uCiAt LSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4gdGhlIHNlYXJjaCBwYXRoCiBTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMiwgcHVibGljOwogQUxURVIgVEFC TEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19yYW5nZQpAQCAtMTMyLDEzICsxMzIsMTEg QEAgU1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViX21hcl9h cHIyMDIyIElOVE8KICAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CiBTRVQgc2VhcmNoX3BhdGggPSBwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CiBcZCsgc2FsZXNfcmFuZ2UKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX3JhbmdlIgotICAgICAgQ29sdW1uICAgICAgfCAgICAgICAgIFR5cGUgICAgICAg ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRh cmdldCB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHNhbGVzcGVyc29uX2lkICAgfCBpbnRlZ2VyICAgICAg ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAg ICAgICAgICAgICB8IAotIHNhbGVzcGVyc29uX25hbWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkg fCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAg ICB8IAotIHNhbGVzX2Ftb3VudCAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAotIHNh bGVzX2RhdGUgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorICAgICAgICAgICAg ICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X3JhbmdlIgorICAgICBDb2x1bW4gICAgIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorIHNhbGVzX2RhdGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKIFBhcnRpdGlvbiBrZXk6 IFJBTkdFIChzYWxlc19kYXRlKQogUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIu c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0y MDIyJyksCiAgICAgICAgICAgICBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjInKSwKQEAgLTE0 Nyw2ICsxNDUsMjEgQEAgUGFydGl0aW9uczogcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykKIAogRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKIERST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworLS0gQWRkaXRpb25hbCB0ZXN0cyBm b3IgZXJyb3IgbWVzc2FnZXMsIG5vIGRlZmF1bHQgcGFydGl0aW9uCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CistLSBFUlJPUjog IHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRv IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgor LS0gSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUgY29tYmlu ZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQg b2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKK0xJTkUgNDog Li4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05T IHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBt YXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgorRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKIC0tCiAtLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQg cGFydGl0aW9uCiAtLQpAQCAtMjAwLDYgKzIxMywyMSBAQCBDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZQogQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKIENSRUFURSBU QUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKIENSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0w MS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyks CisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4 MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTkn KSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0 aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CiAtLSBTcGxpdCBwYXJ0aXRpb24sIGFsc28gY2hl Y2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRpdGlvbnMKIEFMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwogICAo UEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCkBAIC0yMjAsMjEgKzI0OCw2 IEBAIFBhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpCiAgICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKSwKICAgICAgICAg ICAgIHNhbGVzX290aGVycyBERUZBVUxUCiAKLUlOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UwotICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCi0gICgyLCAgJ1NtaXJu b2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKLSAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpLAotICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCi0gICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKLSAgKDYsICAnUG9pcm90JywgICAx NTAsICAnMjAyMi0wMi0xMScpLAotICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 JyksCi0gICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKLSAgKDksICAnTXVs bGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAotICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCi0gICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKLSAg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAotICAoMTMsICdHYW5kaScsICAg IDM3NywgICcyMDIyLTAxLTA5JyksCi0gICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUt MDQnKTsKIFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OwogICAgICAgICAgICAgICAgdGFibGVvaWQgICAgICAgICAgICAgICAgfCBzYWxlc3BlcnNvbl9p ZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQpAQCAtMzE1LDExICszMjgs NiBAQCBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQwogIHNhbGVzX290aGVyICAgfCBNYW5hZ2VyMyAg ICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAyMi4wNS4w MSB8IFNhbGVzIGRlcGFydG1lbnQKICgxMSByb3dzKQogCi0tLUVSUk9SOiAgcmVsYXRpb24gInNh bGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAotU0VMRUNUICogRlJPTSBzYWxlc19qYW5f ZmViMjAyMjsKLUVSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBl eGlzdAotTElORSAxOiBTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOwotICAgICAgICAg ICAgICAgICAgICAgIF4KIERST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOwogLS0KIC0tIFRl c3Q6IHNwbGl0IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtl eTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKQEAgLTQ2MCw3ICs0NjgsNyBAQCBEUk9QIFRBQkxF IHNhbGVzX3JhbmdlIENBU0NBREU7CiAtLQogLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXR0 aW5nIERFRkFVTFQgcGFydGl0aW9uIChkaWZmZXJlbnQgYm91bmRzKQogLS0KLUNSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNI QVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIElOVCkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgSU5ULCBzYWxlc19hbW91bnQgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Ftb3Vu dCk7CiBDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOwogLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxv d2VyIGJvdW5kKQogLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNf ZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIxIgpAQCAtNTMyLDcg KzU0MCw3IEBAIENSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIERFRkFVTFQ7CiAtLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVx dWFsIHRvIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNf ZmViMjAyMgogQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290 aGVycyBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZB TFVFUyBGUk9NICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19u b2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCiAgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAz MDEpLAogICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKIERST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CkBAIC03MTAsMjggKzcxOCw2IEBAIENSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTFf MiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CiBD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBOVUxMLCBz YWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKIEFMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFU VEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7 CiBJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9p cm90JyksICgnSXZhbm92Jyk7Ci1TRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVy YXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwotICAgICBhdHRuYW1l ICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCi0gc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAg ICAgIHwgCi0gc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCi0oMiByb3dzKQotCi1T RUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwotICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0 eSB8IGF0dGdlbmVyYXRlZCAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tCi0gc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCi0gc2FsZXNwZXJz b25fbmFtZSB8ICAgICAgICAgICAgIHwgCi0oMiByb3dzKQotCi0tLSBTcGxpdCBwYXJ0aXRpb24g aGFzIGlkZW50aXR5IGNvbHVtbjoKLVNFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2Vu ZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0g J3NhbGVzcGVvcGxlMl81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07Ci0gICAgIGF0 dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAotLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KLSBzYWxlc3BlcnNvbl9pZCAgIHwgYSAg ICAgICAgICAgfCAKLSBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKLSgyIHJvd3Mp Ci0KIEFMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJf NSBJTlRPCiAgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBU TyAoMyksCiAgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgzKSBU TyAoNCksCkBAIC03NDYsNDEgKzczMiwyNiBAQCBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0CiAgc2Fs ZXNwZW9wbGU0XzUgfCAgICAgICAgICAgICAgNCB8IEZvcmQKICg0IHJvd3MpCiAKLVNFTEVDVCBh dHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07Ci0gICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2Vu ZXJhdGVkIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K LSBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKLSBzYWxlc3BlcnNvbl9uYW1lIHwg ICAgICAgICAgICAgfCAKLSgyIHJvd3MpCi0KLVNFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwg YXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMV8yJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07Ci0g ICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAotLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KLSBzYWxlc3BlcnNvbl9pZCAg IHwgYSAgICAgICAgICAgfCAKLSBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKLSgy IHJvd3MpCi0KLS0tIE5ldyBwYXJ0aXRpb25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKLVNFTEVD VCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdI RVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3M6 Om9pZCBPUkRFUiBCWSBhdHRudW07Ci0gICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwg YXR0Z2VuZXJhdGVkIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KLSBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAgfCAKLSBzYWxlc3BlcnNvbl9u YW1lIHwgICAgICAgICAgICAgfCAKLSgyIHJvd3MpCi0KLVNFTEVDVCBhdHRuYW1lLCBhdHRpZGVu dGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRu dW07Ci0gICAgIGF0dG5hbWUgICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAotLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KLSBzYWxlc3BlcnNv bl9pZCAgIHwgYSAgICAgICAgICAgfCAKLSBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAg fCAKLSgyIHJvd3MpCi0KLVNFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVk IEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVz cGVvcGxlNF81Jzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07Ci0gICAgIGF0dG5hbWUg ICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KLSBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAg ICAgfCAKLSBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKLSgyIHJvd3MpCistLSBj aGVjayBuZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5IG9yIG5vdCBhZnRlciBzcGxpdCBwYXJ0 aXRpb24KK1NFTEVDVCBhdHRyZWxpZDo6cmVnY2xhc3MsIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBh dHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUKK1dIRVJFIGF0dG51bSA+IDAKK0FORCBhdHRy ZWxpZDo6cmVnY2xhc3MgSU4gKAorICAnc2FsZXNwZW9wbGUyXzMnOjpyZWdjbGFzcywgJ3NhbGVz cGVvcGxlJywgJ3NhbGVzcGVvcGxlMl8zJywKKyAgJ3NhbGVzcGVvcGxlMV8yJywgJ3NhbGVzcGVv cGxlM180JywgJ3NhbGVzcGVvcGxlNF81JykKK09SREVSIEJZIGF0dHJlbGlkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgYXR0bnVtOworICAgIGF0dHJlbGlkICAgIHwgICAgIGF0dG5hbWUg ICAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxl ICAgIHwgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGUgICAg fCBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTFfMiB8IHNh bGVzcGVyc29uX2lkICAgfCBhICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxlMV8yIHwgc2FsZXNw ZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGUyXzMgfCBzYWxlc3BlcnNv bl9pZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTJfMyB8IHNhbGVzcGVyc29uX25h bWUgfCAgICAgICAgICAgICB8IAorIHNhbGVzcGVvcGxlM180IHwgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZW9wbGUzXzQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgICAg ICAgICAgICAgfCAKKyBzYWxlc3Blb3BsZTRfNSB8IHNhbGVzcGVyc29uX2lkICAgfCBhICAgICAg ICAgICB8IAorIHNhbGVzcGVvcGxlNF81IHwgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAg IHwgCisoMTAgcm93cykKIAogRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOwogLS0KQEAg LTg5MiwxMyArODYzLDcgQEAgRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKIC0tCiAtLSBUZXN0OiBz cGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCiAtLQotQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKLShzYWxlc3BlcnNvbl9pZCBJTlQsCi0gc2FsZXNwZXJzb25fbmFtZSBWQVJD SEFSKDMwKSwKLSBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKLSBzYWxlc19hbW91bnQgSU5ULAot IHNhbGVzX2RhdGUgREFURSkKLVBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdCAoc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCkpIFBBUlRJVElPTiBC WSBMSVNUIChzYWxlc19zdGF0ZSk7CiBDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04g T0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdI ZWxzaW5raScpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CiBD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7 CkBAIC05NjAsMTMgKzkyNSw3IEBAIERST1AgVEFCTEUgdDsKIC0tICAgKiBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgogLS0g ICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRp b24gaGFzLgogLS0KLUNSRUFURSBUQUJMRSBzYWxlc19saXN0Ci0oc2FsZXNwZXJzb25faWQgSU5U LAotIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCi0gc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCi0gc2FsZXNfYW1vdW50IElOVCwKLSBzYWxlc19kYXRlIERBVEUpCi1QQVJUSVRJT04gQlkg TElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3Qoc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCkpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CiBDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnSGVs c2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX2Fs bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdL eWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CiAtLSBFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRv IG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCkBAIC05NzQsMTMg KzkzMywxNSBAQCBBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTwogICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jvbics ICdOZXcgWW9yaycsICdNYWRyaWQnKSwKICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxV RVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKICAgIFBBUlRJVElPTiBz YWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7 Ci1FUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0 IHBhcnRpdGlvbiBkb2VzCitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlv biBib3VuZHMgZG8gbm90IGNvbnRhaW4gdmFsdWUgKE5VTEwpIGJ1dCBzcGxpdCBwYXJ0aXRpb24g InNhbGVzX2FsbCIgZG9lcworSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05T IHJlcXVpcmUgY29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBt YXRjaCB0aGUgYm91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgogLS0gRVJST1I6ICBuZXcgcGFy dGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2Vz CiBBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwog ICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9y aycsICdNYWRyaWQnKSwKICAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdC ZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKICAgIFBBUlRJVElPTiBzYWxlc19jZW50 cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgTlVMTCkpOwotRVJST1I6ICBu ZXcgcGFydGl0aW9ucyBkbyBub3QgaGF2ZSB2YWx1ZSAnS3lpdicgYnV0IHNwbGl0IHBhcnRpdGlv biBkb2VzCitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGNvbWJpbmVkIHBhcnRpdGlvbiBib3VuZHMg ZG8gbm90IGNvbnRhaW4gdmFsdWUgKCdLeWl2Jzo6Y2hhcmFjdGVyIHZhcnlpbmcoMjApKSBidXQg c3BsaXQgcGFydGl0aW9uICJzYWxlc19hbGwiIGRvZXMKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OUyByZXF1aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9u cyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KIC0t IEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCiBBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTwogICAoUEFSVElUSU9OIHNhbGVz X3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKQEAg LTE1MTEsMjEgKzE0NzIsNiBAQCBBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5U TwogICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5E RVIgMCkpOwogRVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0 IGxlYXN0IHR3byBwYXJ0aXRpb25zCiBEUk9QIFRBQkxFIHQ7Ci0tLSBBZGRpdGlvbmFsIHRlc3Rz IGZvciBlcnJvciBtZXNzYWdlcwotQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQs IHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKLUNSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7Ci1DUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7Ci0tLSBFUlJPUjogIHVwcGVyIGJv dW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFsIHRvIHVwcGVyIGJv dW5kIG9mIHNwbGl0IHBhcnRpdGlvbiAic2FsZXNfZmViX21hcl9hcHIyMDIyIgotLS0gSElOVDog IEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUgY29tYmluZWQgYm91bmRz IG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgYm91bmQgb2YgdGhlIHNw bGl0IHBhcnRpdGlvbgotQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCi0gIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCi0gICBQQVJUSVRJ T04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIy LTA0LTAxJyksCi0gICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAxJykpOwotRVJST1I6ICB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBz cGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIKLUxJTkUgNDogLi4uIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wLi4u Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgotSElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmUg Y29tYmluZWQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIG11c3QgZXhhY3RseSBtYXRjaCB0aGUg Ym91bmQgb2YgdGhlIHNwbGl0IHBhcnRpdGlvbgotRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKIC0t IFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgogLS0gKiBTVEFUSVNUSUNTIGlz IGVtcHR5CiAtLSAqIENPTU1FTlQgaXMgZW1wdHkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BhcnRpdGlvbl9zcGxpdC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fc3BsaXQuc3FsCmluZGV4IDIwMzQyYzQ1NDFkLi44YjBmNjdjNTM3OSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3FsCkBAIC0xNCw3ICsxNCw3IEBAIFNFVCBzZWFy Y2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKIC0tCiAtLSBUZXN0IGZv ciBlcnJvciBjb2RlcwogLS0KLUNSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25f aWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBz YWxlc19kYXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDItMDEnKTsKIENSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDUtMDEnKTsKIENSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIERFRkFVTFQ7CkBAIC0xMTYsNiArMTE2LDIwIEBAIFNFVCBzZWFyY2hfcGF0 aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKIERST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CiBEUk9QIFRBQkxFIHNhbGVzX290aGVyczsKIAorLS0gQWRkaXRpb25hbCB0ZXN0cyBmb3Ig ZXJyb3IgbWVzc2FnZXMsIG5vIGRlZmF1bHQgcGFydGl0aW9uCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisKKy0tIEVSUk9SOiAg dXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWwgdG8g dXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCist LSBISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZSBjb21iaW5l ZCBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBib3VuZCBv ZiB0aGUgc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAg IFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDYtMDEnKSk7CisKK0RST1AgVEFCTEUgc2Fs ZXNfcmFuZ2U7CisKIC0tCiAtLSBBZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxlIHRoZW4g c3BsaXQgcGFydGl0aW9uCiAtLQpAQCAtMTU2LDYgKzE3MCwyMiBAQCBDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMQogQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0w MScpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug REVGQVVMVDsKIAorSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0 LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAy NTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTEx JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJp Y3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEt MDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCiAtLSBTcGxp dCBwYXJ0aXRpb24sIGFsc28gY2hlY2sgc2NoZW1hIHF1YWxpZmljYXRpb24gb2YgbmV3IHBhcnRp dGlvbnMKIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTwogICAoUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCkBAIC0xNjMsMjIgKzE5Myw2IEBAIEFMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwogICAgUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK IFxkKyBzYWxlc19yYW5nZQogCi1JTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKLSAgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAotICAoMiwgICdTbWlybm9mZicsIDUw MCwgICcyMDIyLTAyLTEwJyksCi0gICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAn KSwKLSAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAotICAoNSwgICdEZWV2 JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCi0gICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIw MjItMDItMTEnKSwKLSAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAotICAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCi0gICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKLSAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpLAotICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCi0gICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKLSAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpLAotICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7Ci0K IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOwogCiBE Uk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CkBAIC0yMjIsOSArMjM2LDYgQEAgSU5TRVJU IElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250 aCwgc2FsZXNfZGF5KSBWQUwKIAogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX2RhdGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5OwogCi0tLUVSUk9SOiAgcmVsYXRpb24g InNhbGVzX2phbl9mZWIyMDIyIiBkb2VzIG5vdCBleGlzdAotU0VMRUNUICogRlJPTSBzYWxlc19q YW5fZmViMjAyMjsKLQogRFJPUCBUQUJMRSBzYWxlc19kYXRlIENBU0NBREU7CiAKIC0tCkBAIC0y ODQsNyArMjk1LDcgQEAgRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOwogLS0KIC0tIFRl c3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZBVUxUIHBhcnRpdGlvbiAoZGlmZmVyZW50 IGJvdW5kcykKIC0tCi1DUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUg c2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNfYW1vdW50IElOVCkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc19hbW91bnQpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKIAogLS0gc2FsZXNfZXJyb3IgaW50ZXJz ZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGxvd2VyIGJvdW5kKQpAQCAtMzQxLDcgKzM1Miw3IEBA IENSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CiAtLSBubyBlcnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgYXJlIGVxdWFsIHRvIGxv d2VyIGFuZCB1cHBlciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMSBhbmQgc2FsZXNfZmViMjAyMgog QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CiAgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAyMjAxMDEpLAotICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCiAgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAogICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKIApAQCAtNDg5LDExICs1MDAsNiBAQCBB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IEZP UiBWQUxVRVMgRlJPTSAoMikgVE8gKAogCiBJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNw ZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90JyksICgnSXZhbm92Jyk7CiAKLVNFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRF UiBCWSBhdHRudW07Ci1TRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Bl b3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwotLS0gU3BsaXQgcGFydGl0 aW9uIGhhcyBpZGVudGl0eSBjb2x1bW46Ci1TRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc3Blb3BsZTJfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwotCiBB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzUgSU5U TwogICAoUEFSVElUSU9OIHNhbGVzcGVvcGxlMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMp LAogICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlM180IEZPUiBWQUxVRVMgRlJPTSAoMykgVE8gKDQp LApAQCAtNTAzLDEyICs1MDksMTMgQEAgSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVy c29uX25hbWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKIAogU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CiAKLVNFTEVDVCBhdHRuYW1lLCBhdHRp ZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAg QU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRu dW07Ci1TRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6 OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwotLS0gTmV3IHBhcnRpdGlvbnMgaGF2ZSBp ZGVudGl0eS1jb2x1bW5zOgotU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0 ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2Fs ZXNwZW9wbGUyXzMnOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKLVNFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0 dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlM180Jzo6cmVnY2xhc3M6Om9pZCBP UkRFUiBCWSBhdHRudW07Ci1TRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworLS0gY2hlY2sgbmV3 IHBhcnRpdGlvbnMgaGF2ZSBpZGVudGl0eSBvciBub3QgYWZ0ZXIgc3BsaXQgcGFydGl0aW9uCitT RUxFQ1QgYXR0cmVsaWQ6OnJlZ2NsYXNzLCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJh dGVkIEZST00gcGdfYXR0cmlidXRlCitXSEVSRSBhdHRudW0gPiAwCitBTkQgYXR0cmVsaWQ6OnJl Z2NsYXNzIElOICgKKyAgJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3MsICdzYWxlc3Blb3BsZScs ICdzYWxlc3Blb3BsZTJfMycsCisgICdzYWxlc3Blb3BsZTFfMicsICdzYWxlc3Blb3BsZTNfNCcs ICdzYWxlc3Blb3BsZTRfNScpCitPUkRFUiBCWSBhdHRyZWxpZDo6cmVnY2xhc3M6OnRleHQgQ09M TEFURSAiQyIsIGF0dG51bTsKIAogRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOwogCkBA IC01OTUsMTMgKzYwMiw3IEBAIERST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CiAtLQogLS0gVGVzdDog c3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZwogLS0KLUNSRUFURSBUQUJM RSBzYWxlc19saXN0Ci0oc2FsZXNwZXJzb25faWQgSU5ULAotIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksCi0gc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCi0gc2FsZXNfYW1vdW50IElOVCwK LSBzYWxlc19kYXRlIERBVEUpCi1QQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QgKHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApKSBQQVJUSVRJT04g QlkgTElTVCAoc2FsZXNfc3RhdGUpOwogCiBDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycs ICdIZWxzaW5raScpOwogQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRy aWQnLCAnQmVqaW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7 CkBAIC02NTQsMTMgKzY1NSw3IEBAIERST1AgVEFCTEUgdDsKIC0tICAgKiBuZXcgcGFydGl0aW9u cyBkbyBub3QgaGF2ZSBOVUxMIHZhbHVlLCB3aGljaCBzcGxpdCBwYXJ0aXRpb24gaGFzLgogLS0g ICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0aXRp b24gaGFzLgogLS0KLUNSRUFURSBUQUJMRSBzYWxlc19saXN0Ci0oc2FsZXNwZXJzb25faWQgSU5U LAotIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCi0gc2FsZXNfc3RhdGUgVkFSQ0hBUigy MCksCi0gc2FsZXNfYW1vdW50IElOVCwKLSBzYWxlc19kYXRlIERBVEUpCi1QQVJUSVRJT04gQlkg TElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3Qoc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCkpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CiAKIENSRUFURSBU QUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdI ZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7CiBDUkVBVEUgVEFCTEUgc2FsZXNf YWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlz Ym9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywg J0t5aXYnLCAnVmxhZGl2b3N0b2snLCBOVUxMKTsKQEAgLTEwNDgsMjEgKzEwNDMsNiBAQCBBTFRF UiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTwogRFJPUCBUQUJMRSB0OwogCiAKLS0t IEFkZGl0aW9uYWwgdGVzdHMgZm9yIGVycm9yIG1lc3NhZ2VzCi1DUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwg c2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOwotQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsK LUNSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKLQot LS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5v dCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24gInNhbGVzX2ZlYl9tYXJf YXByMjAyMiIKLS0tIEhJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1 aXJlIGNvbWJpbmVkIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBtdXN0IGV4YWN0bHkgbWF0Y2gg dGhlIGJvdW5kIG9mIHRoZSBzcGxpdCBwYXJ0aXRpb24KLUFMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwotICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpLAotICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAotICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKLQotRFJP UCBUQUJMRSBzYWxlc19yYW5nZTsKLQotCiAtLSBUZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJv cGVydGllczoKIC0tICogU1RBVElTVElDUyBpcyBlbXB0eQogLS0gKiBDT01NRU5UIGlzIGVtcHR5 Ci0tIAoyLjM0LjEKCg== --0000000000006ad406063f5f0bea--