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 1tJivm-004nI3-2C for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Dec 2024 00:44:22 +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 1tJivh-00EZcP-Qv for pgsql-hackers@arkaria.postgresql.org; Sat, 07 Dec 2024 00:44:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tJivh-00EZcG-E3 for pgsql-hackers@lists.postgresql.org; Sat, 07 Dec 2024 00:44:18 +0000 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tJive-001R0T-NW for pgsql-hackers@lists.postgresql.org; Sat, 07 Dec 2024 00:44:17 +0000 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-725c49b5c93so946507b3a.1 for ; Fri, 06 Dec 2024 16:44:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1733532253; x=1734137053; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=eTPsQFp4S9LE9YBYlvDoVDYl2STkCDg0wfB0oG/BGuM=; b=fOghh+JFy8aWWGK9tJEFD029f6dKfP/dRBSEmBDQf8NSDxEmsd7iqDnKh+P2eMOVVr a3eA3U73UcA9GFy3GMS+EFZlJEkuhEecfZNWG/WkGVZKKO+oMghAxZcSfMJjUPaUASSS i2HBrr0GdEPHygglHSizunSyNXXF8OxyQkh9eua3iB6qZji0/530yciBsspJ3Z8a/VEz 26xZ2WbZe1uRi5hOuOFQ/2y16rZJFR0ABfbaT+gyV2WzYNhC2T/nbHehVamdEC44mXaY 13GIrcDPCTWRouPLP/WW4s/aCYZZXbJ9oEwOtBDHP2y13IUXVMfh05P2jha+8UrokbPe LKUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733532253; x=1734137053; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eTPsQFp4S9LE9YBYlvDoVDYl2STkCDg0wfB0oG/BGuM=; b=Ued555sYfh/etaVgmo2lfxRK1H6kbhD+KoiF8mFI41dOiQyAC9hA9sQBGhqftAq5SX BKTySkQ540z2CiDvhldsy3WOBXJneSQV7JbSAmXUpvLaIuu8HGJmwHh+3H4HBesQX9ak X58Rfq85yKUN904xrzV8q8aCT03SVI4C8sHvRjXpzFc65AiKkjEyUdfcR6T3K4xoLoRM yiM8Z/PYi7wChrgxN8FHKHncl7Xpi+3zRsSnmcSwuDbvZDzyI4NbQ0+HfnptnqznQpXT bElaFQltOoGdX6iBqUcDwbnJ3XjBWKs/gwyCMzGZxo0JLXu0xSYJzJwnlJJHYlFw+BxX PMlA== X-Forwarded-Encrypted: i=1; AJvYcCXFWQ58m0H/NCmlt3NITL30hXEzHPyZ4zXDXmjYmvhijrjgUjuh9tssqfaiedQgIAq5mOCGcrvEHokdtYg9@lists.postgresql.org X-Gm-Message-State: AOJu0YyMGp7JWFAKwEID5uKCkarKfZAmpBAwRUaZnLbNmlMXE1lVcA4i oYgqBTnlXxidSPFWDSvg8nf+EjEs1OCeJ73sfGuXeisM0N/c+BIOVynnr1dn9w== X-Gm-Gg: ASbGncsj3WTdDUedzL/Q6TAJx5BYd2RO16ImYlnHzQGKFM8SZZD+Djd55Uv3wPn+M0L PDxg7ll/P26XENHo/HWdWFr/e6PcDPqAMbOO2L0hHD2DcqsyXXMqfHB0q98ICp5wzy0g9XDp3Ej 7/SpWARfv77WCD/iaAsWK+TlD/7jUYVcYdLMNEx92Vwcu6WOvDMNizU0zBUm8gqZiEZW5bJHLKX wwc5eYVkOP3TAWUP3Of2I9QfzSd+IXLmEOSd1+lYGNG8RxSI+rXhNiY6fKWoVJuj60GkxGq7v24 zOz2yMkTZ2ug1xbE X-Google-Smtp-Source: AGHT+IEhK9y6f4piVGA2/jC+dvHz4efJ7xOLEutKYmpbvWbkMiMtEY5bs2RKF0EVfjK20hQyz5a+9g== X-Received: by 2002:a05:6a00:3e10:b0:725:996c:3a17 with SMTP id d2e1a72fcca58-725b80fdcc7mr7815977b3a.8.1733532252869; Fri, 06 Dec 2024 16:44:12 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-725c82b4852sm794739b3a.135.2024.12.06.16.44.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 16:44:12 -0800 (PST) Message-ID: Subject: Re: Statistics Import and Export From: Jeff Davis To: Corey Huinker Cc: Bruce Momjian , jian he , Matthias van de Meent , Tom Lane , Nathan Bossart , Magnus Hagander , Stephen Frost , Ashutosh Bapat , Peter Smith , PostgreSQL Hackers , alvherre@alvh.no-ip.org Date: Fri, 06 Dec 2024 16:44:10 -0800 In-Reply-To: References: <11bb2c7403d4a7421fe8b09df6737aa83976266e.camel@j-davis.com> <5d3a24216d15ce8a50d0fc085a13a410202014ca.camel@j-davis.com> Content-Type: multipart/mixed; boundary="=-SPsnRW/WuzSuFTnHdVK/" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-SPsnRW/WuzSuFTnHdVK/ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2024-11-27 at 00:08 -0500, Corey Huinker wrote: >=20 > 0003 - Re-enabling in-place updates because catalog bloat bad. Attached is my version of this patch, which I intend to commit soon. I added docs and tests, and I refactored a bit to check the arguments first. Also, I separated the mvcc and in-place paths, so that it was easier to review that each one is following the right protocol. Regards, Jeff Davis --=-SPsnRW/WuzSuFTnHdVK/ Content-Disposition: attachment; filename*0=v33j-0001-Use-in-place-updates-for-pg_restore_relation_st.pat; filename*1=ch Content-Type: text/x-patch; name="v33j-0001-Use-in-place-updates-for-pg_restore_relation_st.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBhNDE1MDNiODI0NjkyOTc3OTdkYjc4MTYzNDI2YzQwYTdhODYzMTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBG cmksIDYgRGVjIDIwMjQgMTI6MzI6MjkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYzM2pdIFVzZSBp bi1wbGFjZSB1cGRhdGVzIGZvciBwZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKCkuCgpUaGlzIG1h dGNoZXMgdGhlIGJlaGF2aW9yIG9mIHZhY191cGRhdGVfcmVsc3RhdHMoKSwgd2hpY2ggaXMgaW1w b3J0YW50CnRvIGF2b2lkIGJsb2F0aW5nIHBnX2NsYXNzLgoKQXV0aG9yOiBDb3JleSBIdWlua2Vy CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEa0xNPWZjM2plK3VmdjNnc0hxampT U2YrdDg2NzRSWHB1WFc2MkVMNTVNVUVRZC1nQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvcmVsYXRpb25fc3RhdHMuYyAgICB8IDE5OCArKysrKysrKysrKysrLS0tLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dCB8ICA2MSArKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19pbXBvcnQuc3FsICAgICAgfCAgMzcgKysrKwog NCBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwK aW5kZXggOGI4MTEwNmZhMjMuLjJjMzUyNTJkYzA2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAgLTMwMTc1LDYgKzMwMTc1 LDE0IEBAIHBvc3RncmVzPSMgU0VMRUNUICcwLzAnOjpwZ19sc24gKyBwZC5zZWdtZW50X251bWJl ciAqIHBzLnNldHRpbmc6OmludCArIDpvZmZzZXQKICAgICAgICAgIGZ1bmN0aW9uIGlzIHRvIG1h aW50YWluIGEgY29uc2lzdGVudCBmdW5jdGlvbiBzaWduYXR1cmUgdG8gYXZvaWQKICAgICAgICAg IGVycm9ycyB3aGVuIHJlc3RvcmluZyBzdGF0aXN0aWNzIGZyb20gcHJldmlvdXMgdmVyc2lvbnMu CiAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUbyBtYXRjaCB0aGUg YmVoYXZpb3Igb2YgPHhyZWYgbGlua2VuZD0ic3FsLXZhY3V1bSIvPiBhbmQgPHhyZWYKKyAgICAg ICAgIGxpbmtlbmQ9InNxbC1hbmFseXplIi8+IHdoZW4gdXBkYXRpbmcgcmVsYXRpb24gc3RhdGlz dGljcywKKyAgICAgICAgIDxmdW5jdGlvbj5wZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKCk8L2Z1 bmN0aW9uPiBkb2VzIG5vdCBmb2xsb3cgTVZDQworICAgICAgICAgdHJhbnNhY3Rpb25hbCBzZW1h bnRpY3MgKHNlZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KS4gTmV3IHJlbGF0aW9uCisgICAgICAg ICBzdGF0aXN0aWNzIG1heSBiZSBkdXJhYmxlIGV2ZW4gaWYgdGhlIHRyYW5zYWN0aW9uIGFib3J0 cywgYW5kIHRoZQorICAgICAgICAgY2hhbmdlcyBhcmUgbm90IGlzb2xhdGVkIGZyb20gb3RoZXIg dHJhbnNhY3Rpb25zLgorICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgogICAgICAgICAg QXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgcGFpcnMgb2YgPHJlcGxhY2VhYmxlPmFyZ25hbWU8L3Jl cGxhY2VhYmxlPgogICAgICAgICAgYW5kIDxyZXBsYWNlYWJsZT5hcmd2YWx1ZTwvcmVwbGFjZWFi bGU+LCB3aGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9yZWxhdGlvbl9z dGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9yZWxhdGlvbl9zdGF0cy5jCmluZGV4IGU2 MTlkNWNmNWIxLi5mODQxNTdiMTZhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGlj cy9yZWxhdGlvbl9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvcmVsYXRpb25f c3RhdHMuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNp bmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0X3V0 aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy cHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNTAsNTkgKzUxLDI4 IEBAIHN0YXRpYyBzdHJ1Y3QgU3RhdHNBcmdJbmZvIHJlbGFyZ2luZm9bXSA9CiAJW05VTV9SRUxB VElPTl9TVEFUU19BUkdTXSA9IHswfQogfTsKIAotc3RhdGljIGJvb2wgcmVsYXRpb25fc3RhdGlz dGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2ZWwpOworc3RhdGlj IGJvb2wgcmVsYXRpb25fc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8s IGludCBlbGV2ZWwsCisJCQkJCQkJCQkgICBib29sIGlucGxhY2UpOwogCiAvKgogICogSW50ZXJu YWwgZnVuY3Rpb24gZm9yIG1vZGlmeWluZyBzdGF0aXN0aWNzIGZvciBhIHJlbGF0aW9uLgogICov CiBzdGF0aWMgYm9vbAotcmVsYXRpb25fc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5m byBmY2luZm8sIGludCBlbGV2ZWwpCityZWxhdGlvbl9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlv bkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCwgYm9vbCBpbnBsYWNlKQogewogCU9pZAkJCXJl bG9pZDsKIAlSZWxhdGlvbgljcmVsOwotCUhlYXBUdXBsZQljdHVwOwotCUZvcm1fcGdfY2xhc3Mg cGdjZm9ybTsKLQlpbnQJCQlyZXBsYWNlc1szXSA9IHswfTsKLQlEYXR1bQkJdmFsdWVzWzNdID0g ezB9OwotCWJvb2wJCW51bGxzWzNdID0gezB9OwotCWludAkJCW5jb2xzID0gMDsKLQlUdXBsZURl c2MJdHVwZGVzYzsKKwlpbnQzMgkJcmVscGFnZXMgPSBERUZBVUxUX1JFTFBBR0VTOworCWJvb2wJ CXVwZGF0ZV9yZWxwYWdlcyA9IGZhbHNlOworCWZsb2F0CQlyZWx0dXBsZXMgPSBERUZBVUxUX1JF TFRVUExFUzsKKwlib29sCQl1cGRhdGVfcmVsdHVwbGVzID0gZmFsc2U7CisJaW50MzIJCXJlbGFs bHZpc2libGUgPSBERUZBVUxUX1JFTEFMTFZJU0lCTEU7CisJYm9vbAkJdXBkYXRlX3JlbGFsbHZp c2libGUgPSBmYWxzZTsKIAlib29sCQlyZXN1bHQgPSB0cnVlOwogCi0Jc3RhdHNfY2hlY2tfcmVx dWlyZWRfYXJnKGZjaW5mbywgcmVsYXJnaW5mbywgUkVMQVRJT05fQVJHKTsKLQlyZWxvaWQgPSBQ R19HRVRBUkdfT0lEKFJFTEFUSU9OX0FSRyk7Ci0KLQlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkp Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCi0JCQkJIGVycm1zZygicmVjb3ZlcnkgaXMgaW4gcHJvZ3Jlc3Mi KSwKLQkJCQkgZXJyaGludCgiU3RhdGlzdGljcyBjYW5ub3QgYmUgbW9kaWZpZWQgZHVyaW5nIHJl Y292ZXJ5LiIpKSk7Ci0KLQlzdGF0c19sb2NrX2NoZWNrX3ByaXZpbGVnZXMocmVsb2lkKTsKLQot CS8qCi0JICogVGFrZSBSb3dFeGNsdXNpdmVMb2NrIG9uIHBnX2NsYXNzLCBjb25zaXN0ZW50IHdp dGgKLQkgKiB2YWNfdXBkYXRlX3JlbHN0YXRzKCkuCi0JICovCi0JY3JlbCA9IHRhYmxlX29wZW4o UmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCXR1cGRlc2MgPSBSZWxh dGlvbkdldERlc2NyKGNyZWwpOwotCWN0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwg T2JqZWN0SWRHZXREYXR1bShyZWxvaWQpKTsKLQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY3R1cCkp Ci0JewotCQllcmVwb3J0KGVsZXZlbCwKLQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9V U0UpLAotCQkJCSBlcnJtc2coInBnX2NsYXNzIGVudHJ5IGZvciByZWxpZCAldSBub3QgZm91bmQi LCByZWxvaWQpKSk7Ci0JCXRhYmxlX2Nsb3NlKGNyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCQly ZXR1cm4gZmFsc2U7Ci0JfQotCi0JcGdjZm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1Qo Y3R1cCk7Ci0KLQkvKiByZWxwYWdlcyAqLwogCWlmICghUEdfQVJHSVNOVUxMKFJFTFBBR0VTX0FS RykpCiAJewotCQlpbnQzMgkJcmVscGFnZXMgPSBQR19HRVRBUkdfSU5UMzIoUkVMUEFHRVNfQVJH KTsKKwkJcmVscGFnZXMgPSBQR19HRVRBUkdfSU5UMzIoUkVMUEFHRVNfQVJHKTsKIAogCQkvKgog CQkgKiBQYXJ0aXRpb25lZCB0YWJsZXMgbWF5IGhhdmUgcmVscGFnZXM9LTEuIE5vdGU6IGZvciBy ZWxhdGlvbnMgd2l0aApAQCAtMTE2LDE3ICs4NiwxMyBAQCByZWxhdGlvbl9zdGF0aXN0aWNzX3Vw ZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkJCQkJIGVycm1zZygi cmVscGFnZXMgY2Fubm90IGJlIDwgLTEiKSkpOwogCQkJcmVzdWx0ID0gZmFsc2U7CiAJCX0KLQkJ ZWxzZSBpZiAocmVscGFnZXMgIT0gcGdjZm9ybS0+cmVscGFnZXMpCi0JCXsKLQkJCXJlcGxhY2Vz W25jb2xzXSA9IEFudW1fcGdfY2xhc3NfcmVscGFnZXM7Ci0JCQl2YWx1ZXNbbmNvbHNdID0gSW50 MzJHZXREYXR1bShyZWxwYWdlcyk7Ci0JCQluY29scysrOwotCQl9CisJCWVsc2UKKwkJCXVwZGF0 ZV9yZWxwYWdlcyA9IHRydWU7CiAJfQogCiAJaWYgKCFQR19BUkdJU05VTEwoUkVMVFVQTEVTX0FS RykpCiAJewotCQlmbG9hdAkJcmVsdHVwbGVzID0gUEdfR0VUQVJHX0ZMT0FUNChSRUxUVVBMRVNf QVJHKTsKKwkJcmVsdHVwbGVzID0gUEdfR0VUQVJHX0ZMT0FUNChSRUxUVVBMRVNfQVJHKTsKIAog CQlpZiAocmVsdHVwbGVzIDwgLTEuMCkKIAkJewpAQCAtMTM1LDE4ICsxMDEsMTMgQEAgcmVsYXRp b25fc3RhdGlzdGljc191cGRhdGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGludCBlbGV2ZWwp CiAJCQkJCSBlcnJtc2coInJlbHR1cGxlcyBjYW5ub3QgYmUgPCAtMS4wIikpKTsKIAkJCXJlc3Vs dCA9IGZhbHNlOwogCQl9Ci0JCWVsc2UgaWYgKHJlbHR1cGxlcyAhPSBwZ2Nmb3JtLT5yZWx0dXBs ZXMpCi0JCXsKLQkJCXJlcGxhY2VzW25jb2xzXSA9IEFudW1fcGdfY2xhc3NfcmVsdHVwbGVzOwot CQkJdmFsdWVzW25jb2xzXSA9IEZsb2F0NEdldERhdHVtKHJlbHR1cGxlcyk7Ci0JCQluY29scysr OwotCQl9Ci0KKwkJZWxzZQorCQkJdXBkYXRlX3JlbHR1cGxlcyA9IHRydWU7CiAJfQogCiAJaWYg KCFQR19BUkdJU05VTEwoUkVMQUxMVklTSUJMRV9BUkcpKQogCXsKLQkJaW50MzIJCXJlbGFsbHZp c2libGUgPSBQR19HRVRBUkdfSU5UMzIoUkVMQUxMVklTSUJMRV9BUkcpOworCQlyZWxhbGx2aXNp YmxlID0gUEdfR0VUQVJHX0lOVDMyKFJFTEFMTFZJU0lCTEVfQVJHKTsKIAogCQlpZiAocmVsYWxs dmlzaWJsZSA8IDApCiAJCXsKQEAgLTE1NSwyMyArMTE2LDExOCBAQCByZWxhdGlvbl9zdGF0aXN0 aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgaW50IGVsZXZlbCkKIAkJCQkJIGVy cm1zZygicmVsYWxsdmlzaWJsZSBjYW5ub3QgYmUgPCAwIikpKTsKIAkJCXJlc3VsdCA9IGZhbHNl OwogCQl9Ci0JCWVsc2UgaWYgKHJlbGFsbHZpc2libGUgIT0gcGdjZm9ybS0+cmVsYWxsdmlzaWJs ZSkKKwkJZWxzZQorCQkJdXBkYXRlX3JlbGFsbHZpc2libGUgPSB0cnVlOworCX0KKworCXN0YXRz X2NoZWNrX3JlcXVpcmVkX2FyZyhmY2luZm8sIHJlbGFyZ2luZm8sIFJFTEFUSU9OX0FSRyk7CisJ cmVsb2lkID0gUEdfR0VUQVJHX09JRChSRUxBVElPTl9BUkcpOworCisJaWYgKFJlY292ZXJ5SW5Q cm9ncmVzcygpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlY292ZXJ5IGlzIGlu IHByb2dyZXNzIiksCisJCQkJIGVycmhpbnQoIlN0YXRpc3RpY3MgY2Fubm90IGJlIG1vZGlmaWVk IGR1cmluZyByZWNvdmVyeS4iKSkpOworCisJc3RhdHNfbG9ja19jaGVja19wcml2aWxlZ2VzKHJl bG9pZCk7CisKKwkvKgorCSAqIFRha2UgUm93RXhjbHVzaXZlTG9jayBvbiBwZ19jbGFzcywgY29u c2lzdGVudCB3aXRoCisJICogdmFjX3VwZGF0ZV9yZWxzdGF0cygpLgorCSAqLworCWNyZWwgPSB0 YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlpZiAo aW5wbGFjZSkKKwl7CisJCUhlYXBUdXBsZQljdHVwID0gTlVMTDsKKwkJU2NhbktleURhdGEga2V5 WzFdOworCQlGb3JtX3BnX2NsYXNzIHBnY2Zvcm07CisJCXZvaWQJICAgKmlucGxhY2Vfc3RhdGUg PSBOVUxMOworCQlib29sCQlkaXJ0eSA9IGZhbHNlOworCisJCVNjYW5LZXlJbml0KCZrZXlbMF0s IEFudW1fcGdfY2xhc3Nfb2lkLCBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJ CU9iamVjdElkR2V0RGF0dW0ocmVsb2lkKSk7CisJCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2Jl Z2luKGNyZWwsIENsYXNzT2lkSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwga2V5LAorCQkJCQkJCQkJ ICAmY3R1cCwgJmlucGxhY2Vfc3RhdGUpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY3R1cCkp CisJCQllbG9nKEVSUk9SLCAicGdfY2xhc3MgZW50cnkgZm9yIHJlbGlkICV1IHZhbmlzaGVkIHdo aWxlIHVwZGF0aW5nIHN0YXRpc3RpY3MiLAorCQkJCSByZWxvaWQpOworCQlwZ2Nmb3JtID0gKEZv cm1fcGdfY2xhc3MpIEdFVFNUUlVDVChjdHVwKTsKKworCQlpZiAodXBkYXRlX3JlbHBhZ2VzICYm IHJlbHBhZ2VzICE9IHBnY2Zvcm0tPnJlbHBhZ2VzKQorCQl7CisJCQlwZ2Nmb3JtLT5yZWxwYWdl cyA9IHJlbHBhZ2VzOworCQkJZGlydHkgPSB0cnVlOworCQl9CisJCWlmICh1cGRhdGVfcmVsdHVw bGVzICYmIHBnY2Zvcm0tPnJlbHR1cGxlcyAhPSByZWx0dXBsZXMpCiAJCXsKLQkJCXJlcGxhY2Vz W25jb2xzXSA9IEFudW1fcGdfY2xhc3NfcmVsYWxsdmlzaWJsZTsKLQkJCXZhbHVlc1tuY29sc10g PSBJbnQzMkdldERhdHVtKHJlbGFsbHZpc2libGUpOwotCQkJbmNvbHMrKzsKKwkJCXBnY2Zvcm0t PnJlbHR1cGxlcyA9IHJlbHR1cGxlczsKKwkJCWRpcnR5ID0gdHJ1ZTsKKwkJfQorCQlpZiAodXBk YXRlX3JlbGFsbHZpc2libGUgJiYgcGdjZm9ybS0+cmVsYWxsdmlzaWJsZSAhPSByZWxhbGx2aXNp YmxlKQorCQl7CisJCQlwZ2Nmb3JtLT5yZWxhbGx2aXNpYmxlID0gcmVsYWxsdmlzaWJsZTsKKwkJ CWRpcnR5ID0gdHJ1ZTsKIAkJfQotCX0KIAotCS8qIG9ubHkgdXBkYXRlIHBnX2NsYXNzIGlmIHRo ZXJlIGlzIGEgbWVhbmluZ2Z1bCBjaGFuZ2UgKi8KLQlpZiAobmNvbHMgPiAwKQorCQlpZiAoZGly dHkpCisJCQlzeXN0YWJsZV9pbnBsYWNlX3VwZGF0ZV9maW5pc2goaW5wbGFjZV9zdGF0ZSwgY3R1 cCk7CisJCWVsc2UKKwkJCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2NhbmNlbChpbnBsYWNlX3N0 YXRlKTsKKwl9CisJZWxzZQogCXsKLQkJSGVhcFR1cGxlCW5ld3R1cDsKKwkJVHVwbGVEZXNjCXR1 cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGNyZWwpOworCQlIZWFwVHVwbGUJY3R1cDsKKwkJRm9y bV9wZ19jbGFzcyBwZ2Nmb3JtOworCQlpbnQJCQlyZXBsYWNlc1szXSA9IHswfTsKKwkJRGF0dW0J CXZhbHVlc1szXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbM10gPSB7MH07CisJCWludAkJCW5yZXBs YWNlcyA9IDA7CisKKwkJY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0 RGF0dW0ocmVsb2lkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChjdHVwKSkKKwkJeworCQkJ ZXJlcG9ydChlbGV2ZWwsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCisJ CQkJCSBlcnJtc2coInBnX2NsYXNzIGVudHJ5IGZvciByZWxpZCAldSBub3QgZm91bmQiLCByZWxv aWQpKSk7CisJCQl0YWJsZV9jbG9zZShjcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCQlwZ2Nmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChjdHVw KTsKKworCQlpZiAodXBkYXRlX3JlbHBhZ2VzICYmIHJlbHBhZ2VzICE9IHBnY2Zvcm0tPnJlbHBh Z2VzKQorCQl7CisJCQlyZXBsYWNlc1tucmVwbGFjZXNdID0gQW51bV9wZ19jbGFzc19yZWxwYWdl czsKKwkJCXZhbHVlc1tucmVwbGFjZXNdID0gSW50MzJHZXREYXR1bShyZWxwYWdlcyk7CisJCQlu cmVwbGFjZXMrKzsKKwkJfQorCisJCWlmICh1cGRhdGVfcmVsdHVwbGVzICYmIHJlbHR1cGxlcyAh PSBwZ2Nmb3JtLT5yZWx0dXBsZXMpCisJCXsKKwkJCXJlcGxhY2VzW25yZXBsYWNlc10gPSBBbnVt X3BnX2NsYXNzX3JlbHR1cGxlczsKKwkJCXZhbHVlc1tucmVwbGFjZXNdID0gRmxvYXQ0R2V0RGF0 dW0ocmVsdHVwbGVzKTsKKwkJCW5yZXBsYWNlcysrOworCQl9CisKKwkJaWYgKHVwZGF0ZV9yZWxh bGx2aXNpYmxlICYmIHJlbGFsbHZpc2libGUgIT0gcGdjZm9ybS0+cmVsYWxsdmlzaWJsZSkKKwkJ eworCQkJcmVwbGFjZXNbbnJlcGxhY2VzXSA9IEFudW1fcGdfY2xhc3NfcmVsYWxsdmlzaWJsZTsK KwkJCXZhbHVlc1tucmVwbGFjZXNdID0gSW50MzJHZXREYXR1bShyZWxhbGx2aXNpYmxlKTsKKwkJ CW5yZXBsYWNlcysrOworCQl9CisKKwkJaWYgKG5yZXBsYWNlcyA+IDApCisJCXsKKwkJCUhlYXBU dXBsZQluZXd0dXA7CisKKwkJCW5ld3R1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlX2J5X2NvbHMoY3R1 cCwgdHVwZGVzYywgbnJlcGxhY2VzLAorCQkJCQkJCQkJCQkgICByZXBsYWNlcywgdmFsdWVzLCBu dWxscyk7CisJCQlDYXRhbG9nVHVwbGVVcGRhdGUoY3JlbCwgJm5ld3R1cC0+dF9zZWxmLCBuZXd0 dXApOworCQkJaGVhcF9mcmVldHVwbGUobmV3dHVwKTsKKwkJfQogCi0JCW5ld3R1cCA9IGhlYXBf bW9kaWZ5X3R1cGxlX2J5X2NvbHMoY3R1cCwgdHVwZGVzYywgbmNvbHMsIHJlcGxhY2VzLCB2YWx1 ZXMsCi0JCQkJCQkJCQkJICAgbnVsbHMpOwotCQlDYXRhbG9nVHVwbGVVcGRhdGUoY3JlbCwgJm5l d3R1cC0+dF9zZWxmLCBuZXd0dXApOwotCQloZWFwX2ZyZWV0dXBsZShuZXd0dXApOworCQlSZWxl YXNlU3lzQ2FjaGUoY3R1cCk7CiAJfQogCiAJLyogcmVsZWFzZSB0aGUgbG9jaywgY29uc2lzdGVu dCB3aXRoIHZhY191cGRhdGVfcmVsc3RhdHMoKSAqLwpAQCAtMTg4LDcgKzI0NCw3IEBAIHJlbGF0 aW9uX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBpbnQgZWxldmVs KQogRGF0dW0KIHBnX3NldF9yZWxhdGlvbl9zdGF0cyhQR19GVU5DVElPTl9BUkdTKQogewotCXJl bGF0aW9uX3N0YXRpc3RpY3NfdXBkYXRlKGZjaW5mbywgRVJST1IpOworCXJlbGF0aW9uX3N0YXRp c3RpY3NfdXBkYXRlKGZjaW5mbywgRVJST1IsIGZhbHNlKTsKIAlQR19SRVRVUk5fVk9JRCgpOwog fQogCkBAIC0yMTIsNyArMjY4LDcgQEAgcGdfY2xlYXJfcmVsYXRpb25fc3RhdHMoUEdfRlVOQ1RJ T05fQVJHUykKIAluZXdmY2luZm8tPmFyZ3NbM10udmFsdWUgPSBERUZBVUxUX1JFTEFMTFZJU0lC TEU7CiAJbmV3ZmNpbmZvLT5hcmdzWzNdLmlzbnVsbCA9IGZhbHNlOwogCi0JcmVsYXRpb25fc3Rh dGlzdGljc191cGRhdGUobmV3ZmNpbmZvLCBFUlJPUik7CisJcmVsYXRpb25fc3RhdGlzdGljc191 cGRhdGUobmV3ZmNpbmZvLCBFUlJPUiwgZmFsc2UpOwogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CiAK QEAgLTIzMCw3ICsyODYsNyBAQCBwZ19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCQkJCQkJCQkJICByZWxhcmdpbmZvLCBXQVJOSU5HKSkKIAkJcmVzdWx0ID0gZmFs c2U7CiAKLQlpZiAoIXJlbGF0aW9uX3N0YXRpc3RpY3NfdXBkYXRlKHBvc2l0aW9uYWxfZmNpbmZv LCBXQVJOSU5HKSkKKwlpZiAoIXJlbGF0aW9uX3N0YXRpc3RpY3NfdXBkYXRlKHBvc2l0aW9uYWxf ZmNpbmZvLCBXQVJOSU5HLCB0cnVlKSkKIAkJcmVzdWx0ID0gZmFsc2U7CiAKIAlQR19SRVRVUk5f Qk9PTChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0 c19pbXBvcnQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0c19pbXBvcnQub3V0 CmluZGV4IGFhYjg2MmM5N2M3Li5mYjUwZGExY2Q4MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdGF0c19pbXBvcnQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3RhdHNfaW1wb3J0Lm91dApAQCAtMTA1LDYgKzEwNSw0NyBAQCBXSEVSRSBvaWQgPSAn c3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKICAgICAgICAxOCB8ICAgICAgIDQwMSB8ICAg ICAgICAgICAgIDUKICgxIHJvdykKIAorLS0gdGVzdCBNVkNDIGJlaGF2aW9yOiBjaGFuZ2VzIGRv IG5vdCBwZXJzaXN0IGFmdGVyIGFib3J0IChpbiBjb250cmFzdAorLS0gdG8gcGdfcmVzdG9yZV9y ZWxhdGlvbl9zdGF0cygpLCB3aGljaCB1c2VzIGluLXBsYWNlIHVwZGF0ZXMpLgorQkVHSU47CitT RUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3NldF9yZWxhdGlvbl9zdGF0cygKKyAgICAgICAgcmVs YXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCisgICAgICAgIHJlbHBhZ2Vz ID0+IE5VTEw6OmludGVnZXIsCisgICAgICAgIHJlbHR1cGxlcyA9PiA0MDAwLjA6OnJlYWwsCisg ICAgICAgIHJlbGFsbHZpc2libGUgPT4gNDo6aW50ZWdlcik7CisgcGdfc2V0X3JlbGF0aW9uX3N0 YXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQUJPUlQ7CitTRUxF Q1QgcmVscGFnZXMsIHJlbHR1cGxlcywgcmVsYWxsdmlzaWJsZQorRlJPTSBwZ19jbGFzcworV0hF UkUgb2lkID0gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3M7CisgcmVscGFnZXMgfCByZWx0 dXBsZXMgfCByZWxhbGx2aXNpYmxlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0KKyAgICAgICAxOCB8ICAgICAgIDQwMSB8ICAgICAgICAgICAgIDUKKygxIHJvdykKKwor QkVHSU47CitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX2NsZWFyX3JlbGF0aW9uX3N0YXRzKAor ICAgICAgICAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzcyk7CisgcGdfY2xlYXJfcmVsYXRp b25fc3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0FCT1JU OworU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUKK0ZST00gcGdfY2xh c3MKK1dIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzOworIHJlbHBhZ2Vz IHwgcmVsdHVwbGVzIHwgcmVsYWxsdmlzaWJsZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tCisgICAgICAgMTggfCAgICAgICA0MDEgfCAgICAgICAgICAgICA1CisoMSBy b3cpCisKIC0tIGNsZWFyCiBTRUxFQ1QKICAgICBwZ19jYXRhbG9nLnBnX2NsZWFyX3JlbGF0aW9u X3N0YXRzKApAQCAtNzA1LDYgKzc0NiwyNSBAQCBXSEVSRSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRl c3QnOjpyZWdjbGFzczsKICgxIHJvdykKIAogLS0gb2s6IGp1c3QgcmVscGFnZXMKK1NFTEVDVCBw Z19yZXN0b3JlX3JlbGF0aW9uX3N0YXRzKAorICAgICAgICAncmVsYXRpb24nLCAnc3RhdHNfaW1w b3J0LnRlc3QnOjpyZWdjbGFzcywKKyAgICAgICAgJ3ZlcnNpb24nLCAxNTAwMDA6OmludGVnZXIs CisgICAgICAgICdyZWxwYWdlcycsICcxNSc6OmludGVnZXIpOworIHBnX3Jlc3RvcmVfcmVsYXRp b25fc3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NF TEVDVCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlCitGUk9NIHBnX2NsYXNzCitX SEVSRSBvaWQgPSAnc3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKKyByZWxwYWdlcyB8IHJl bHR1cGxlcyB8IHJlbGFsbHZpc2libGUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgIDE1IHwgICAgICAgNDAwIHwgICAgICAgICAgICAgNAorKDEgcm93KQor CistLSB0ZXN0IG5vbi1NVkNDIGJlaGF2aW9yOiBuZXcgdmFsdWUgc2hvdWxkIHBlcnNpc3QgYWZ0 ZXIgYWJvcnQKK0JFR0lOOwogU0VMRUNUIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCiAgICAg ICAgICdyZWxhdGlvbicsICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAogICAgICAgICAn dmVyc2lvbicsIDE1MDAwMDo6aW50ZWdlciwKQEAgLTcxNCw2ICs3NzQsNyBAQCBTRUxFQ1QgcGdf cmVzdG9yZV9yZWxhdGlvbl9zdGF0cygKICB0CiAoMSByb3cpCiAKK0FCT1JUOwogU0VMRUNUIHJl bHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUKIEZST00gcGdfY2xhc3MKIFdIRVJFIG9p ZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3RhdHNfaW1wb3J0LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRz X2ltcG9ydC5zcWwKaW5kZXggMzE0NTViNThjMWQuLmQzMDU4YmY4ZjZiIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0c19pbXBvcnQuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3N0YXRzX2ltcG9ydC5zcWwKQEAgLTc2LDYgKzc2LDMxIEBAIFNFTEVDVCByZWxwYWdl cywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlCiBGUk9NIHBnX2NsYXNzCiBXSEVSRSBvaWQgPSAn c3RhdHNfaW1wb3J0LnRlc3QnOjpyZWdjbGFzczsKIAorLS0gdGVzdCBNVkNDIGJlaGF2aW9yOiBj aGFuZ2VzIGRvIG5vdCBwZXJzaXN0IGFmdGVyIGFib3J0IChpbiBjb250cmFzdAorLS0gdG8gcGdf cmVzdG9yZV9yZWxhdGlvbl9zdGF0cygpLCB3aGljaCB1c2VzIGluLXBsYWNlIHVwZGF0ZXMpLgor QkVHSU47CitTRUxFQ1QKKyAgICBwZ19jYXRhbG9nLnBnX3NldF9yZWxhdGlvbl9zdGF0cygKKyAg ICAgICAgcmVsYXRpb24gPT4gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCisgICAgICAg IHJlbHBhZ2VzID0+IE5VTEw6OmludGVnZXIsCisgICAgICAgIHJlbHR1cGxlcyA9PiA0MDAwLjA6 OnJlYWwsCisgICAgICAgIHJlbGFsbHZpc2libGUgPT4gNDo6aW50ZWdlcik7CitBQk9SVDsKKwor U0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUKK0ZST00gcGdfY2xhc3MK K1dIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzOworCitCRUdJTjsKK1NF TEVDVAorICAgIHBnX2NhdGFsb2cucGdfY2xlYXJfcmVsYXRpb25fc3RhdHMoCisgICAgICAgICdz dGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzKTsKK0FCT1JUOworCitTRUxFQ1QgcmVscGFnZXMs IHJlbHR1cGxlcywgcmVsYWxsdmlzaWJsZQorRlJPTSBwZ19jbGFzcworV0hFUkUgb2lkID0gJ3N0 YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3M7CisKIC0tIGNsZWFyCiBTRUxFQ1QKICAgICBwZ19j YXRhbG9nLnBnX2NsZWFyX3JlbGF0aW9uX3N0YXRzKApAQCAtNTY1LDEwICs1OTAsMjIgQEAgRlJP TSBwZ19jbGFzcwogV0hFUkUgb2lkID0gJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3M7CiAK IC0tIG9rOiBqdXN0IHJlbHBhZ2VzCitTRUxFQ1QgcGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cygK KyAgICAgICAgJ3JlbGF0aW9uJywgJ3N0YXRzX2ltcG9ydC50ZXN0Jzo6cmVnY2xhc3MsCisgICAg ICAgICd2ZXJzaW9uJywgMTUwMDAwOjppbnRlZ2VyLAorICAgICAgICAncmVscGFnZXMnLCAnMTUn OjppbnRlZ2VyKTsKKworU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUK K0ZST00gcGdfY2xhc3MKK1dIRVJFIG9pZCA9ICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNz OworCistLSB0ZXN0IG5vbi1NVkNDIGJlaGF2aW9yOiBuZXcgdmFsdWUgc2hvdWxkIHBlcnNpc3Qg YWZ0ZXIgYWJvcnQKK0JFR0lOOwogU0VMRUNUIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCiAg ICAgICAgICdyZWxhdGlvbicsICdzdGF0c19pbXBvcnQudGVzdCc6OnJlZ2NsYXNzLAogICAgICAg ICAndmVyc2lvbicsIDE1MDAwMDo6aW50ZWdlciwKICAgICAgICAgJ3JlbHBhZ2VzJywgJzE2Jzo6 aW50ZWdlcik7CitBQk9SVDsKIAogU0VMRUNUIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZp c2libGUKIEZST00gcGdfY2xhc3MKLS0gCjIuMzQuMQoK --=-SPsnRW/WuzSuFTnHdVK/--