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 1qWVvU-003V9k-A1 for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Aug 2023 05:52:08 +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 1qWVvS-00DbU6-VJ for pgsql-hackers@arkaria.postgresql.org; Thu, 17 Aug 2023 05:52:07 +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 1qWVvS-00DbTy-IO for pgsql-hackers@lists.postgresql.org; Thu, 17 Aug 2023 05:52:06 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qWVvK-000bnp-2d for pgsql-hackers@lists.postgresql.org; Thu, 17 Aug 2023 05:52:05 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-3fea0640d88so32236595e9.2 for ; Wed, 16 Aug 2023 22:51:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692251517; x=1692856317; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=FPnvp7Wn2woUESYj2wOesvRUOWUGJrMzp5RaZUWKPK8=; b=IlHWUxlW+vOsmzOJCQ9Uw4xYS4cPkXtEuHv9AJ1w5lX6MEsSBnBNvsrPi9+4KTS7JT HT2iK2Sfr9xgtC+4DrCM1SkAAzMuLY1vmJbsQQ3E2v1D1VzUo+99XYCuwFDZmo2hhKFf xk4klnMjqh9nYtw1t4u0Zhh9V1A6lfB4mitYvUwW+jt+52HqLyXigVGMoRoyrwGkedSf 5zgH/iAjtsZNMMo0rD62MnQB6tMrBHiLCUMjze9XrDDC/b/de18ySRZDD3IRwZSG8zB7 QkFtSi+0vgvSopSgcSSsGqzdBmgmedFAygJ8aCPtDLgdoksJOFGANbZwNhc8C4qD+5PH kT6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692251517; x=1692856317; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FPnvp7Wn2woUESYj2wOesvRUOWUGJrMzp5RaZUWKPK8=; b=RfnsF7hixvGhSaP2Qu+HpiWb4bKYtA4K4CDAh3OnDAUM3B5JlsYNZDo3E2/NwiBsIc noJPcGHHNQ22x8FBkItnvcUi4r5GCdAWiaHfbC8558PaVwNhucE0kaNNtOVukNl0UEiY ADER4mgOL/34GQ+9DDLaCRcIYujByMM7ZpR+vaOVf5hgxhcw6U2aBMkQps/ls41FjCoU neJK8aJdwAHrDnh7CFszQ/zXY/W/VZgQTyOmYwpRNslsbJtQmG67iBZ0Xes0d05C3A5q aWEHx/06z10rqmGCNT/FsdgOO+M56QfbwEg+rqQSfGoXZE+RrmqfLQWBPpJ7Mk5s5nXu EGUA== X-Gm-Message-State: AOJu0YzLuxoCs3uvVIL2xoOuBYky4qlneeKJGSSIA260SeovfiKCKsNo Zk5K875WfWKMtdL2cJY7Iq8= X-Google-Smtp-Source: AGHT+IHJ6L/0XMSqjOXlAuK+15ti9Kndu8xqNxq6M+v+7nkIX+Ix3VbuO4iorQEmHUM8mRPLOKQ0iQ== X-Received: by 2002:a7b:cd0f:0:b0:3fe:24df:4180 with SMTP id f15-20020a7bcd0f000000b003fe24df4180mr3189242wmj.13.1692251516592; Wed, 16 Aug 2023 22:51:56 -0700 (PDT) Received: from ?IPV6:2a01:cb11:55e:1700:bc13:eb48:995d:39bb? ([2a01:cb11:55e:1700:bc13:eb48:995d:39bb]) by smtp.gmail.com with ESMTPSA id u8-20020a05600c00c800b003fe2b081661sm1624901wmm.30.2023.08.16.22.51.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 16 Aug 2023 22:51:56 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------kdgHoUcNP99KszJi4jmd8WXh" Message-ID: Date: Thu, 17 Aug 2023 07:51:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: WIP: new system catalog pg_wait_event Content-Language: en-US To: Michael Paquier Cc: Kyotaro Horiguchi , tgl@sss.pgh.pa.us, pgsql-hackers@lists.postgresql.org References: <20230808.115332.301701413576096139.horikyota.ntt@gmail.com> <2f84b397-d020-493c-924c-610b9dd18f8d@gmail.com> From: "Drouvot, Bertrand" In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------kdgHoUcNP99KszJi4jmd8WXh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 8/16/23 2:08 PM, Michael Paquier wrote: > On Wed, Aug 16, 2023 at 01:43:35PM +0200, Drouvot, Bertrand wrote: >> Yeah, agree, done that way in v6 (also added a test in 001_worker_spi.pl >> to ensure that "worker_spi_main" is reported in pg_wait_event). > > -typedef struct WaitEventExtensionEntryByName > -{ > - char wait_event_name[NAMEDATALEN]; /* hash key */ > - uint16 event_id; /* wait event ID */ > -} WaitEventExtensionEntryByName; > > I'd rather keep all these structures local to wait_event.c, as these > cover the internals of the hash tables. > > Could you switch GetWaitEventExtensionEntries() so as it returns a > list of strings or an array of char*? We probably can live with the > list for that. > Yeah, I was not sure about this (returning a list of WaitEventExtensionEntryByName or a list of wait event names) while working on v6. That's true that the only need here is to get the names of the custom wait events. Returning only the names would allow us to move the WaitEventExtensionEntryByName definition back to the wait_event.c file. It makes sense to me, done in v7 attached and renamed the function to GetWaitEventExtensionNames(). > + char buf[NAMEDATALEN + 44]; //"Custom wait event \"%Name%\" defined by extension" + > Incorrect comment. This would be simpler as a StringInfo. Yeah and probably less error prone: done in v7. While at it, v7 is deliberately not calling "pfree(waiteventnames)" and "resetStringInfo(&buf)" in pg_get_wait_events(): reason is that they are palloc in a short-lived memory context while executing pg_get_wait_events(). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------kdgHoUcNP99KszJi4jmd8WXh Content-Type: text/plain; charset=UTF-8; name="v7-0001-Add-catalog-pg_wait_event.patch" Content-Disposition: attachment; filename="v7-0001-Add-catalog-pg_wait_event.patch" Content-Transfer-Encoding: base64 RnJvbSA0M2JhZjE2NmYxNGFlY2E0ZWYwOTc5ZDkzZTllZDM0ZmRjMzIzYTA5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogU2F0LCA1IEF1ZyAyMDIzIDEyOjM5OjQyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2N10gQWRkIGNhdGFsb2cgcGdfd2FpdF9ldmVudAoKQWRkaW5nIGEgbmV3IHN5c3RlbSB2 aWV3LCBuYW1lbHkgcGdfd2FpdF9ldmVudCwgdGhhdCBkZXNjcmliZXMgdGhlIHdhaXQKZXZl bnRzLgotLS0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAgICAg ICB8IDY0ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwgICAgICAgICAgfCAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8uZ2l0 aWdub3JlICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9NYWtl ZmlsZSAgICAgICAgICAgfCAgOCArLQogLi4uL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZl bnRfdHlwZXMucGwgICAgIHwgNTQgKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L21lc29uLmJ1aWxkICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8IDQ0ICsrKysrKysrKwogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9mdW5jcy5jIHwgOTMgKysrKysrKysrKysrKysr KysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg IDYgKysKIHNyYy9pbmNsdWRlL3V0aWxzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8 ICA0ICstCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgICAgICAg fCAgMSArCiAuLi4vbW9kdWxlcy93b3JrZXJfc3BpL3QvMDAxX3dvcmtlcl9zcGkucGwgICAg fCAgNiArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAg IHwgIDQgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQgICAgICAg IHwgMTYgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3lzdmlld3Muc3FsICAgICAgICAg ICAgIHwgIDQgKwogc3JjL3Rvb2xzL21zdmMvU29sdXRpb24ucG0gICAgICAgICAgICAgICAg ICAgIHwgIDMgKy0KIHNyYy90b29scy9tc3ZjL2NsZWFuLmJhdCAgICAgICAgICAgICAgICAg ICAgICB8ICAxICsKIDE4IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAxMCBk ZWxldGlvbnMoLSkKICAxNi4zJSBkb2Mvc3JjL3NnbWwvCiAgNjMuMSUgc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvCiAgIDMuNyUgc3JjL2luY2x1ZGUvY2F0YWxvZy8KICAgMy4wJSBz cmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8KICAgNC44JSBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkLwogICAzLjIlIHNyYy90b29scy9tc3ZjLwogICA1LjUlIHNyYy8KCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggNTdiMjI4MDc2ZS4uYjJlZDMwOWZlMiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMjIxLDYgKzIyMSwxMSBAQAogICAgICAgPGVudHJ5 PnZpZXdzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXdhaXQtZXZlbnQiPjxzdHJ1Y3RuYW1lPnBnX3dh aXRfZXZlbnQ8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+d2Fp dCBldmVudHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgIDwvdGJvZHk+CiAgICA8L3Rn cm91cD4KICAgPC90YWJsZT4KQEAgLTQ4MjUsNCArNDgzMCw2MyBAQCBTRUxFQ1QgKiBGUk9N IHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgPC90YWJs ZT4KICA8L3NlY3QxPgogCisKKyA8c2VjdDEgaWQ9InZpZXctcGctd2FpdC1ldmVudCI+Cisg IDx0aXRsZT48c3RydWN0bmFtZT5wZ193YWl0X2V2ZW50PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+ CisKKyAgPGluZGV4dGVybSB6b25lPSJ2aWV3LXBnLXdhaXQtZXZlbnQiPgorICAgPHByaW1h cnk+cGdfd2FpdF9ldmVudDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+ CisgICBUaGUgdmlldyA8c3RydWN0bmFtZT5wZ193YWl0X2V2ZW50PC9zdHJ1Y3RuYW1lPiBw cm92aWRlcyBkZXNjcmlwdGlvbiBhYm91dCB0aGUKKyAgIHdhaXQgZXZlbnRzLgorICA8L3Bh cmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3dhaXRfZXZlbnQ8 L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAg ICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVt biBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlv bgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisK KyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFdhaXQgZXZlbnQgdHlwZQorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFdhaXQg ZXZlbnQgbmFtZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5kZXNjcmlw dGlvbjwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBXYWl0IGV2ZW50IGRlc2NyaXB0aW9uCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgor ICA8L3RhYmxlPgorIDwvc2VjdDE+CisKIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvTWFrZWZpbGUKaW5kZXggMWM5MjkzODNj NC4uM2UyNzVhYzc1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvTWFrZWZpbGUKKysrIGIv c3JjL2JhY2tlbmQvTWFrZWZpbGUKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdG9yYWdlL2xtZ3Iv bHdsb2NrbmFtZXMuaDogc3RvcmFnZS9sbWdyL2dlbmVyYXRlLWx3bG9ja25hbWVzLnBsIHN0 b3JhZ2UvbG1nci9sdwogCSQoTUFLRSkgLUMgc3RvcmFnZS9sbWdyIGx3bG9ja25hbWVzLmgg bHdsb2NrbmFtZXMuYwogCiB1dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X3R5cGVzLmg6IHV0 aWxzL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwgdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudF9uYW1lcy50eHQKLQkkKE1BS0UpIC1DIHV0aWxzL2FjdGl2aXR5IHdh aXRfZXZlbnRfdHlwZXMuaCBwZ3N0YXRfd2FpdF9ldmVudC5jCisJJChNQUtFKSAtQyB1dGls cy9hY3Rpdml0eSB3YWl0X2V2ZW50X3R5cGVzLmggcGdzdGF0X3dhaXRfZXZlbnQuYyB3YWl0 X2V2ZW50X2Z1bmNzX2RhdGEuYwogCiAjIHJ1biB0aGlzIHVuY29uZGl0aW9uYWxseSB0byBh dm9pZCBuZWVkaW5nIHRvIGtub3cgaXRzIGRlcGVuZGVuY2llcyBoZXJlOgogc3VibWFrZS1j YXRhbG9nLWhlYWRlcnM6CkBAIC0zMTEsNiArMzExLDcgQEAgbWFpbnRhaW5lci1jbGVhbjog ZGlzdGNsZWFuCiAJICAgICAgc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLmMgXAogCSAgICAg IHN0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy5oIFwKIAkgICAgICB1dGlscy9hY3Rpdml0eS9w Z3N0YXRfd2FpdF9ldmVudC5jIFwKKwkgICAgICB1dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 X2Z1bmNzX2RhdGEuYyBcCiAJICAgICAgdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF90eXBl cy5oIFwKIAkgICAgICB1dGlscy9hZHQvanNvbnBhdGhfZ3JhbS5jIFwKIAkgICAgICB1dGls cy9hZHQvanNvbnBhdGhfZ3JhbS5oIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAppbmRleCBhZjY1YWY2YmRkLi5mODZhNGRkNzcwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMzQyLDMgKzEzNDIsNiBAQCBDUkVBVEUgVklFVyBw Z19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwogICAgICAgICBzcy5zdGF0c19yZXNldAog ICAgIEZST00gcGdfc3Vic2NyaXB0aW9uIGFzIHMsCiAgICAgICAgICBwZ19zdGF0X2dldF9z dWJzY3JpcHRpb25fc3RhdHMocy5vaWQpIGFzIHNzOworCitDUkVBVEUgVklFVyBwZ193YWl0 X2V2ZW50IEFTCisgICAgU0VMRUNUICogRlJPTSBwZ19nZXRfd2FpdF9ldmVudHMoKSBBUyB3 ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5Ly5naXRpZ25vcmUg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8uZ2l0aWdub3JlCmluZGV4IGQ3NzA3OTI4 NWIuLmJkMGMwYzc3NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 Ly5naXRpZ25vcmUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvLmdpdGlnbm9y ZQpAQCAtMSwyICsxLDMgQEAKIC9wZ3N0YXRfd2FpdF9ldmVudC5jCiAvd2FpdF9ldmVudF90 eXBlcy5oCisvd2FpdF9ldmVudF9mdW5jc19kYXRhLmMKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvTWFrZWZpbGUKaW5kZXggZjExMTc3NDVkNC4uZjU3Y2YzOTU4YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKQEAgLTMyLDEwICszMiwxNCBAQCBPQkpTID0gXAog CXBnc3RhdF9zdWJzY3JpcHRpb24ubyBcCiAJcGdzdGF0X3dhbC5vIFwKIAlwZ3N0YXRfeGFj dC5vIFwKLQl3YWl0X2V2ZW50Lm8KKwl3YWl0X2V2ZW50Lm8gXAorCXdhaXRfZXZlbnRfZnVu Y3MubwogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCiAK K3dhaXRfZXZlbnRfZnVuY3Mubzogd2FpdF9ldmVudF9mdW5jc19kYXRhLmMKK3dhaXRfZXZl bnRfZnVuY3NfZGF0YS5jOiB3YWl0X2V2ZW50X3R5cGVzLmgKKwogd2FpdF9ldmVudC5vOiBw Z3N0YXRfd2FpdF9ldmVudC5jCiBwZ3N0YXRfd2FpdF9ldmVudC5jOiB3YWl0X2V2ZW50X3R5 cGVzLmgKIAl0b3VjaCAkQApAQCAtNDQsNCArNDgsNCBAQCB3YWl0X2V2ZW50X3R5cGVzLmg6 ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9u YW1lcy50eAogCSQoUEVSTCkgJChzcmNkaXIpL2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMu cGwgLS1jb2RlICQ8CiAKIG1haW50YWluZXItY2xlYW46IGNsZWFuCi0Jcm0gLWYgd2FpdF9l dmVudF90eXBlcy5oIHBnc3RhdF93YWl0X2V2ZW50LmMKKwlybSAtZiB3YWl0X2V2ZW50X3R5 cGVzLmggcGdzdGF0X3dhaXRfZXZlbnQuYyB3YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVu dF90eXBlcy5wbCBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRf ZXZlbnRfdHlwZXMucGwKaW5kZXggNTYzMzVlODczMC4uOWQ1YmZkMjE0NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVudF90eXBl cy5wbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9nZW5lcmF0ZS13YWl0X2V2 ZW50X3R5cGVzLnBsCkBAIC00LDYgKzQsNyBAQAogIyBHZW5lcmF0ZSB3YWl0IGV2ZW50cyBz dXBwb3J0IGZpbGVzIGZyb20gd2FpdF9ldmVudF9uYW1lcy50eHQ6CiAjIC0gd2FpdF9ldmVu dF90eXBlcy5oIChpZiAtLWNvZGUgaXMgcGFzc2VkKQogIyAtIHBnc3RhdF93YWl0X2V2ZW50 LmMgKGlmIC0tY29kZSBpcyBwYXNzZWQpCisjIC0gd2FpdF9ldmVudF9mdW5jc19kYXRhLmMg KGlmIC0tY29kZSBpcyBwYXNzZWQpCiAjIC0gd2FpdF9ldmVudF90eXBlcy5zZ21sIChpZiAt LWRvY3MgaXMgcGFzc2VkKQogIwogIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy MywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKQEAgLTk4LDggKzk5LDEw IEBAIGlmICgkZ2VuX2NvZGUpCiAJIyBtdWx0aXBsZSB0aW1lcy4KIAlteSAkaHRtcCA9ICIk b3V0cHV0X3BhdGgvd2FpdF9ldmVudF90eXBlcy5oLnRtcCQkIjsKIAlteSAkY3RtcCA9ICIk b3V0cHV0X3BhdGgvcGdzdGF0X3dhaXRfZXZlbnQuYy50bXAkJCI7CisJbXkgJHdjdG1wID0g IiRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYy50bXAkJCI7CiAJb3BlbiBt eSAkaCwgJz4nLCAkaHRtcCBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRodG1wOiAkISI7CiAJ b3BlbiBteSAkYywgJz4nLCAkY3RtcCBvciBkaWUgIkNvdWxkIG5vdCBvcGVuICRjdG1wOiAk ISI7CisJb3BlbiBteSAkd2MsICc+JywgJHdjdG1wIG9yIGRpZSAiQ291bGQgbm90IG9wZW4g JHdjdG1wOiAkISI7CiAKIAlteSAkaGVhZGVyX2NvbW1lbnQgPQogCSAgJy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpAQCAtMTI5LDEyICsxMzIsMTQgQEAgaWYgKCRnZW5fY29kZSkKIAogCXBy aW50ZiAkYyAkaGVhZGVyX2NvbW1lbnQsICdwZ3N0YXRfd2FpdF9ldmVudC5jJzsKIAorCXBy aW50ZiAkd2MgJGhlYWRlcl9jb21tZW50LCAnd2FpdF9ldmVudF9mdW5jc19kYXRhLmMnOwor CisJIyBHZW5lcmF0ZSB0aGUgcGdzdGF0X3dhaXRfZXZlbnQuYyBhbmQgd2FpdF9ldmVudF90 eXBlcy5oIGZpbGVzCiAJIyB1YygpIGlzIGJlaW5nIHVzZWQgdG8gZm9yY2UgdGhlIGNvbXBh cmlzb24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZS4KIAlmb3JlYWNoIG15ICR3YWl0Y2xhc3Mg KHNvcnQgeyB1YygkYSkgY21wIHVjKCRiKSB9IGtleXMgJWhhc2h3ZSkKIAl7Ci0KLQkJIyBE b24ndCBnZW5lcmF0ZSAuYyBhbmQgLmggZmlsZXMgZm9yIEV4dGVuc2lvbiwgTFdMb2NrIGFu ZAotCQkjIExvY2ssIHRoZXNlIGFyZSBoYW5kbGVkIGluZGVwZW5kZW50bHkuCisJCSMgRG9u J3QgZ2VuZXJhdGUgdGhlIHBnc3RhdF93YWl0X2V2ZW50LmMgYW5kIHdhaXRfZXZlbnRfdHlw ZXMuaCBmaWxlcworCQkjIGZvciBFeHRlbnNpb24sIExXTG9jayBhbmQgTG9jaywgdGhlc2Ug YXJlIGhhbmRsZWQgaW5kZXBlbmRlbnRseS4KIAkJbmV4dAogCQkgIGlmICggJHdhaXRjbGFz cyBlcSAnV2FpdEV2ZW50RXh0ZW5zaW9uJwogCQkJfHwgJHdhaXRjbGFzcyBlcSAnV2FpdEV2 ZW50TFdMb2NrJwpAQCAtMTgzLDE0ICsxODgsNTUgQEAgaWYgKCRnZW5fY29kZSkKIAkJcHJp bnRmICRjICJ9XG5cbiI7CiAJfQogCisJIyBHZW5lcmF0ZSB3YWl0X2V2ZW50X2Z1bmNzX2Rh dGEuYywgZm9yIHRoZSBjb250ZW50cyBvZiBzdGF0aWMgQworCSMgc3RydWN0dXJlIGhvbGRp bmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2FpdCBldmVudHMuCisJIyB1Yygp IGlzIGJlaW5nIHVzZWQgdG8gZm9yY2UgdGhlIGNvbXBhcmlzb24gdG8gYmUgY2FzZS1pbnNl bnNpdGl2ZSwKKwkjIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBzdHJpY3RseSBtYW5kYXRvcnkg aGVyZS4KKwlmb3JlYWNoIG15ICR3YWl0Y2xhc3MgKHNvcnQgeyB1YygkYSkgY21wIHVjKCRi KSB9IGtleXMgJWhhc2h3ZSkKKwl7CisJCW15ICRsYXN0ID0gJHdhaXRjbGFzczsKKwkJJGxh c3QgPX4gcy9eV2FpdEV2ZW50Ly87CisKKwkJZm9yZWFjaCBteSAkd2V2IChAeyAkaGFzaHdl eyR3YWl0Y2xhc3N9IH0pCisJCXsKKwkJCW15ICRuZXdfZGVzYyA9IHN1YnN0ciAkd2V2LT5b Ml0sIDEsIC0yOworCQkJIyBFc2NhcGUgc2luZ2xlIHF1b3Rlcy4KKwkJCSRuZXdfZGVzYyA9 fiBzLycvXFwnL2c7CisKKwkJCSMgUmVwbGFjZSB0aGUgInF1b3RlIiBtYXJrdXBzIGJ5IHJl YWwgb25lcy4KKwkJCSRuZXdfZGVzYyA9fiBzLzxxdW90ZT4oLio/KTxcL3F1b3RlPi9cXCIk MVxcIi9nOworCisJCQkjIFJlbW92ZSBTR01MIG1hcmt1cHMuCisJCQkkbmV3X2Rlc2MgPX4g cy88Lio/PiguKj8pPC4qPz4vJDEvZzsKKworCQkJIyBUd2VhayBjb250ZW50cyBhYm91dCBs aW5rcyA8eHJlZiBsaW5rZW5kPSJ0ZXh0Ii8+IG9uIEdVQ3MsCisJCQl3aGlsZSAobXkgKCRj YXB0dXJlKSA9CisJCQkJJG5ld19kZXNjID1+IG0vPHhyZWYgbGlua2VuZD0iZ3VjLSguKj8p IlwvPi9nKQorCQkJeworCQkJCSRjYXB0dXJlID1+IHMvLS9fL2c7CisJCQkJJG5ld19kZXNj ID1+IHMvPHhyZWYgbGlua2VuZD0iZ3VjLS4qPyJcLz4vJGNhcHR1cmUvZzsKKwkJCX0KKwkJ CSMgVGhlbiByZW1vdmUgYW55IHJlZmVyZW5jZSB0byAic2VlIDx4cmVmIGxpbmtlbmQ9InRl eHQiLz4iLgorCQkJJG5ld19kZXNjID1+IHMvOyBzZWUuKiQvLzsKKworCQkJIyBPbmUgZWxl bWVudCB0byB0aGUgQyBzdHJ1Y3R1cmUgaG9sZGluZyB0aGUgd2FpdCBldmVudAorCQkJIyBp bmZvLCBhcyBvZiAodHlwZSwgbmFtZSwgZGVzY3JpcHRpb24pLgorCQkJcHJpbnRmICR3YyAi XHR7XCIlc1wiLCBcIiVzXCIsIFwiJXNcIn0sXG4iLCAkbGFzdCwgJHdldi0+WzFdLAorCQkJ ICAkbmV3X2Rlc2M7CisJCX0KKwl9CisKIAlwcmludGYgJGggIiNlbmRpZiAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogV0FJVF9FVkVOVF9UWVBFU19IICovXG4iOwogCWNsb3NlICRo OwogCWNsb3NlICRjOworCWNsb3NlICR3YzsKIAogCXJlbmFtZSgkaHRtcCwgIiRvdXRwdXRf cGF0aC93YWl0X2V2ZW50X3R5cGVzLmgiKQogCSAgfHwgZGllICJyZW5hbWU6ICRodG1wIHRv ICRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X3R5cGVzLmg6ICQhIjsKIAlyZW5hbWUoJGN0bXAs ICIkb3V0cHV0X3BhdGgvcGdzdGF0X3dhaXRfZXZlbnQuYyIpCiAJICB8fCBkaWUgInJlbmFt ZTogJGN0bXAgdG8gJG91dHB1dF9wYXRoL3Bnc3RhdF93YWl0X2V2ZW50LmM6ICQhIjsKKwly ZW5hbWUoJHdjdG1wLCAiJG91dHB1dF9wYXRoL3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIikK KwkgIHx8IGRpZSAicmVuYW1lOiAkY3RtcCB0byAkb3V0cHV0X3BhdGgvd2FpdF9ldmVudF9m dW5jc19kYXRhLmM6ICQhIjsKIH0KICMgR2VuZXJhdGUgdGhlIC5zZ21sIGZpbGUuCiBlbHNp ZiAoJGdlbl9kb2NzKQpAQCAtMjQ5LDcgKzI5NSw3IEBAIFVzYWdlOiBwZXJsICBbLS1vdXRw dXQgPHBhdGg+XSBbLS1jb2RlIF0gWyAtLXNnbWwgXSBpbnB1dF9maWxlCiAKIE9wdGlvbnM6 CiAgICAgLS1vdXRkaXIgICAgICAgICBPdXRwdXQgZGlyZWN0b3J5IChkZWZhdWx0ICcuJykK LSAgICAtLWNvZGUgICAgICAgICAgIEdlbmVyYXRlIHdhaXRfZXZlbnRfdHlwZXMuaCBhbmQg cGdzdGF0X3dhaXRfZXZlbnQuYy4KKyAgICAtLWNvZGUgICAgICAgICAgIEdlbmVyYXRlIEMg YW5kIGhlYWRlciBmaWxlcy4KICAgICAtLXNnbWwgICAgICAgICAgIEdlbmVyYXRlIHdhaXRf ZXZlbnRfdHlwZXMuc2dtbC4KIAogZ2VuZXJhdGUtd2FpdF9ldmVudF90eXBlcy5wbCBnZW5l cmF0ZXMgdGhlIFNHTUwgZG9jdW1lbnRhdGlvbiBhbmQgY29kZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9tZXNvbi5idWlsZAppbmRleCA5NjMzZjM2MjNjLi40NmEyN2U3NTQ4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZApAQCAtMjMsNiArMjMs NyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAjIHNlZW1zIG5pY2VyIHRvIG5vdCBh ZGQgdGhhdCBhcyBhbiBpbmNsdWRlIHBhdGggZm9yIHRoZSB3aG9sZSBiYWNrZW5kLgogd2Fp dGV2ZW50X3NvdXJjZXMgPSBmaWxlcygKICAgJ3dhaXRfZXZlbnQuYycsCisgICd3YWl0X2V2 ZW50X2Z1bmNzLmMnLAogKQogCiB3YWl0X2V2ZW50ID0gc3RhdGljX2xpYnJhcnkoJ3dhaXRf ZXZlbnRfbmFtZXMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv d2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CmluZGV4IDRiOWI1YzAxY2IuLmQzMTc2N2RmODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTI2NCw2ICsyNjQsNTAgQEAgR2V0V2FpdEV2ZW50 RXh0ZW5zaW9uSWRlbnRpZmllcih1aW50MTYgZXZlbnRJZCkKIH0KIAogCisvKgorICogUmV0 dXJucyBhIGxpc3Qgb2YgY3VycmVudGx5IGRlZmluZWQgY3VzdG9tIHdhaXQgZXZlbnQgbmFt ZXMgZm9yIGV4dGVuc2lvbnMuCisgKiBUaGUgcmVzdWx0IGlzIGEgcGFsbG9jJ2QgYXJyYXks IHdpdGggdGhlIG51bWJlciBvZiBlbGVtZW50cyByZXR1cm5lZCBpbnRvCisgKiAqbndhaXRl dmVudHMuCisgKi8KK2NoYXIgKioKK0dldFdhaXRFdmVudEV4dGVuc2lvbk5hbWVzKGludCAq bndhaXRldmVudHMpCit7CisJY2hhcgkgICoqd2FpdGV2ZW50bmFtZXM7CisJV2FpdEV2ZW50 RXh0ZW5zaW9uRW50cnlCeU5hbWUgKmhlbnRyeTsKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9z ZXE7CisJaW50CQkJaW5kZXg7CisJaW50CQkJZWxzOworCisJTFdMb2NrQWNxdWlyZShXYWl0 RXZlbnRFeHRlbnNpb25Mb2NrLCBMV19TSEFSRUQpOworCisJLyogTm93IHdlIGNhbiBzYWZl bHkgY291bnQgdGhlIG51bWJlciBvZiBlbnRyaWVzICovCisJZWxzID0gaGFzaF9nZXRfbnVt X2VudHJpZXMoV2FpdEV2ZW50RXh0ZW5zaW9uSGFzaEJ5TmFtZSk7CisKKwkvKiBBbGxvY2F0 ZSBlbm91Z2ggc3BhY2UgZm9yIGFsbCBlbnRyaWVzICovCisJd2FpdGV2ZW50bmFtZXMgPSBw YWxsb2MoZWxzICogc2l6ZW9mKGNoYXJbTkFNRURBVEFMRU5dKSk7CisKKwkvKiBOb3cgc2Nh biB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRhICovCisJaGFzaF9zZXFfaW5pdCgm aGFzaF9zZXEsIFdhaXRFdmVudEV4dGVuc2lvbkhhc2hCeU5hbWUpOworCisJaW5kZXggPSAw OworCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEV4dGVuc2lvbkVudHJ5QnlOYW1lICop IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCXsKKworCQl3YWl0ZXZl bnRuYW1lc1tpbmRleF0gPSBwYWxsb2Moc2l6ZW9mKGNoYXJbTkFNRURBVEFMRU5dKSk7CisJ CXN0cmxjcHkod2FpdGV2ZW50bmFtZXNbaW5kZXhdLCBoZW50cnktPndhaXRfZXZlbnRfbmFt ZSwKKwkJCQlzaXplb2YoY2hhcltOQU1FREFUQUxFTl0pKTsKKworCQlpbmRleCsrOworCX0K KworCUxXTG9ja1JlbGVhc2UoV2FpdEV2ZW50RXh0ZW5zaW9uTG9jayk7CisKKwlBc3NlcnQo aW5kZXggPT0gZWxzKTsKKworCSpud2FpdGV2ZW50cyA9IGluZGV4OworCXJldHVybiB3YWl0 ZXZlbnRuYW1lczsKK30KKwogLyoKICAqIENvbmZpZ3VyZSB3YWl0IGV2ZW50IHJlcG9ydGlu ZyB0byByZXBvcnQgd2FpdCBldmVudHMgdG8gKndhaXRfZXZlbnRfaW5mby4KICAqICp3YWl0 X2V2ZW50X2luZm8gbmVlZHMgdG8gYmUgdmFsaWQgdW50aWwgcGdzdGF0X3Jlc2V0X3dhaXRf ZXZlbnRfc3RvcmFnZSgpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50X2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50X2Z1bmNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u NzQ1MDZmOTg5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnRfZnVuY3MuYwpAQCAtMCwwICsxLDkzIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHdhaXRfZXZlbnRfZnVuY3MuYworICoJICBGdW5jdGlvbnMgZm9y IGFjY2Vzc2luZyB3YWl0IGV2ZW50IGRhdGEuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMv YmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X2Z1bmNzLmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUg ImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0 aWxzL3dhaXRfZXZlbnQuaCIKKworLyoKKyAqIEVhY2ggd2FpdCBldmVudCBoYXMgb25lIGNv cnJlc3BvbmRpbmcgZW50cnkgaW4gdGhpcyBzdHJ1Y3R1cmUsIGZlZCB0bworICogdGhlIFNR TCBmdW5jdGlvbiBvZiB0aGlzIGZpbGUuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QKK3sK Kwljb25zdCBjaGFyICp0eXBlOworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2hhciAq ZGVzY3JpcHRpb247Cit9CisKK3dhaXRFdmVudERhdGFbXSA9Cit7CisjaW5jbHVkZSAid2Fp dF9ldmVudF9mdW5jc19kYXRhLmMiCisJLyogZW5kIG9mIGxpc3QgKi8KKwl7TlVMTCwgTlVM TCwgTlVMTH0KK307CisKKworLyoKKyAqIHBnX2dldF93YWl0X2V2ZW50cworICoKKyAqIExp c3QgYWxsIHRoZSB3YWl0IGV2ZW50cyAodHlwZSwgbmFtZSkgYW5kIHRoZWlyIGRlc2NyaXB0 aW9ucy4KKyAqLworRGF0dW0KK3BnX2dldF93YWl0X2V2ZW50cyhQR19GVU5DVElPTl9BUkdT KQoreworI2RlZmluZSBQR19HRVRfV0FJVF9FVkVOVFNfQ09MUyAzCisJUmV0dXJuU2V0SW5m byAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOworCWNo YXIJICAqKndhaXRldmVudG5hbWVzOworCWludAkJCW5iZXh0d2FpdGV2ZW50czsKKworCS8q IEJ1aWxkIHR1cGxlc3RvcmUgdG8gaG9sZCB0aGUgcmVzdWx0IHJvd3MgKi8KKwlJbml0TWF0 ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CisKKwkvKiBJdGVyYXRlIG92ZXIgdGhlIGxpc3Qg b2Ygd2FpdCBldmVudHMgKi8KKwlmb3IgKGludCBpZHggPSAwOyB3YWl0RXZlbnREYXRhW2lk eF0udHlwZSAhPSBOVUxMOyBpZHgrKykKKwl7CisJCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1dB SVRfRVZFTlRTX0NPTFNdID0gezB9OworCQlib29sCQludWxsc1tQR19HRVRfV0FJVF9FVkVO VFNfQ09MU10gPSB7MH07CisKKwkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRleHREYXR1bSh3 YWl0RXZlbnREYXRhW2lkeF0udHlwZSk7CisJCXZhbHVlc1sxXSA9IENTdHJpbmdHZXRUZXh0 RGF0dW0od2FpdEV2ZW50RGF0YVtpZHhdLm5hbWUpOworCQl2YWx1ZXNbMl0gPSBDU3RyaW5n R2V0VGV4dERhdHVtKHdhaXRFdmVudERhdGFbaWR4XS5kZXNjcmlwdGlvbik7CisKKwkJdHVw bGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywg dmFsdWVzLCBudWxscyk7CisJfQorCisJLyogSGFuZGxpbmcgZXh0ZW5zaW9uIGN1c3RvbSB3 YWl0IGV2ZW50cyAqLworCXdhaXRldmVudG5hbWVzID0gR2V0V2FpdEV2ZW50RXh0ZW5zaW9u TmFtZXMoJm5iZXh0d2FpdGV2ZW50cyk7CisKKwlmb3IgKGludCBpZHggPSAwOyBpZHggPCBu YmV4dHdhaXRldmVudHM7IGlkeCsrKQorCXsKKwkJU3RyaW5nSW5mb0RhdGEgYnVmOworCQlE YXR1bQkJdmFsdWVzW1BHX0dFVF9XQUlUX0VWRU5UU19DT0xTXSA9IHswfTsKKwkJYm9vbAkJ bnVsbHNbUEdfR0VUX1dBSVRfRVZFTlRTX0NPTFNdID0gezB9OworCisKKwkJdmFsdWVzWzBd ID0gQ1N0cmluZ0dldFRleHREYXR1bSgiRXh0ZW5zaW9uIik7CisJCXZhbHVlc1sxXSA9IENT dHJpbmdHZXRUZXh0RGF0dW0od2FpdGV2ZW50bmFtZXNbaWR4XSk7CisKKwkJaW5pdFN0cmlu Z0luZm8oJmJ1Zik7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIkN1c3RvbSB3 YWl0IGV2ZW50IFwiIik7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwgd2FpdGV2 ZW50bmFtZXNbaWR4XSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIlwiIGRl ZmluZWQgYnkgZXh0ZW5zaW9uIik7CisKKwkJdmFsdWVzWzJdID0gQ1N0cmluZ0dldFRleHRE YXR1bShidWYuZGF0YSk7CisKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRS ZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CisJfQorCisJcmV0dXJu IChEYXR1bSkgMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY5OTYwNzM5 ODkuLjFhOTQyYzY3OGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQxNyw2 ICs1NDE3LDEyIEBACiAgIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCiAgIHByb2Fy Z25hbWVzID0+ICd7cGlkLGRhdGlkLHBpZCx1c2VzeXNpZCxhcHBsaWNhdGlvbl9uYW1lLHN0 YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlwZSx3YWl0X2V2ZW50LHhhY3Rfc3RhcnQscXVlcnlf c3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9jaGFuZ2UsY2xpZW50X2FkZHIsY2xpZW50X2hv c3RuYW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlkLGJhY2tlbmRfeG1pbixiYWNrZW5kX3R5 cGUsc3NsLHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJpdHMsc3NsX2NsaWVudF9kbixzc2xf Y2xpZW50X3NlcmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRoLGdzc19wcmluYyxnc3NfZW5j LGdzc19kZWxlZ2F0aW9uLGxlYWRlcl9waWQscXVlcnlfaWR9JywKICAgcHJvc3JjID0+ICdw Z19zdGF0X2dldF9hY3Rpdml0eScgfSwKK3sgb2lkID0+ICc4NDAzJywgZGVzY3IgPT4gJ2Rl c2NyaWJlIHdhaXQgZXZlbnRzJywKKyAgcHJvbmFtZSA9PiAncGdfZ2V0X3dhaXRfZXZlbnRz JywgcHJvY29zdCA9PiAnMTAnLCBwcm9yb3dzID0+ICcxMDAnLAorICBwcm9yZXRzZXQgPT4g J3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsdGV4dCx0ZXh0fScs CisgIHByb2FyZ21vZGVzID0+ICd7byxvLG99JywgcHJvYXJnbmFtZXMgPT4gJ3t0eXBlLG5h bWUsZGVzY3JpcHRpb259JywKKyAgcHJvc3JjID0+ICdwZ19nZXRfd2FpdF9ldmVudHMnIH0s CiB7IG9pZCA9PiAnMzMxOCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBpbmZvcm1hdGlv biBhYm91dCBwcm9ncmVzcyBvZiBiYWNrZW5kcyBydW5uaW5nIG1haW50ZW5hbmNlIGNvbW1h bmQnLAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvJywgcHJvcm93 cyA9PiAnMTAwJywgcHJvcmV0c2V0ID0+ICd0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWVzb24uYnVpbGQKaW5k ZXggNmRlNWQ5Mzc5OS4uYzE3OTQ3ODYxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbWVzb24uYnVpbGQKQEAg LTEsNiArMSw2IEBACiAjIENvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAogCi13YWl0X2V2ZW50X291dHB1dCA9IFsnd2FpdF9l dmVudF90eXBlcy5oJywgJ3Bnc3RhdF93YWl0X2V2ZW50LmMnXQord2FpdF9ldmVudF9vdXRw dXQgPSBbJ3dhaXRfZXZlbnRfdHlwZXMuaCcsICdwZ3N0YXRfd2FpdF9ldmVudC5jJywgJ3dh aXRfZXZlbnRfZnVuY3NfZGF0YS5jJ10KIHdhaXRfZXZlbnRfdGFyZ2V0ID0gY3VzdG9tX3Rh cmdldCgnd2FpdF9ldmVudF9uYW1lcycsCiAgIGlucHV0OiBmaWxlcygnLi4vLi4vYmFja2Vu ZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCcpLAogICBvdXRwdXQ6IHdh aXRfZXZlbnRfb3V0cHV0LApAQCAtMTEsNyArMTEsNyBAQCB3YWl0X2V2ZW50X3RhcmdldCA9 IGN1c3RvbV90YXJnZXQoJ3dhaXRfZXZlbnRfbmFtZXMnLAogICBdLAogICBidWlsZF9ieV9k ZWZhdWx0OiB0cnVlLAogICBpbnN0YWxsOiB0cnVlLAotICBpbnN0YWxsX2RpcjogW2Rpcl9p bmNsdWRlX3NlcnZlciAvICd1dGlscycsIGZhbHNlXSwKKyAgaW5zdGFsbF9kaXI6IFtkaXJf aW5jbHVkZV9zZXJ2ZXIgLyAndXRpbHMnLCBmYWxzZSwgZmFsc2VdLAogKQogCiB3YWl0X2V2 ZW50X3R5cGVzX2ggPSB3YWl0X2V2ZW50X3RhcmdldFswXQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVu dC5oCmluZGV4IDNlZWJkZmFkMzguLjAwOWIwM2E1MjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2 ZW50LmgKQEAgLTYzLDYgKzYzLDcgQEAgZXh0ZXJuIHZvaWQgV2FpdEV2ZW50RXh0ZW5zaW9u U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIFNpemUgV2FpdEV2ZW50RXh0ZW5zaW9uU2htZW1T aXplKHZvaWQpOwogCiBleHRlcm4gdWludDMyIFdhaXRFdmVudEV4dGVuc2lvbk5ldyhjb25z dCBjaGFyICp3YWl0X2V2ZW50X25hbWUpOworZXh0ZXJuIGNoYXIgKipHZXRXYWl0RXZlbnRF eHRlbnNpb25OYW1lcyhpbnQgKm53YWl0ZXZlbnRzKTsKIAogLyogLS0tLS0tLS0tLQogICog cGdzdGF0X3JlcG9ydF93YWl0X3N0YXJ0KCkgLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy93b3JrZXJfc3BpL3QvMDAxX3dvcmtlcl9zcGkucGwgYi9zcmMvdGVzdC9tb2R1bGVz L3dvcmtlcl9zcGkvdC8wMDFfd29ya2VyX3NwaS5wbAppbmRleCAyNmI4YTQ5YmVjLi5jZDQ4 ZjQyMjY5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFf d29ya2VyX3NwaS5wbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvdC8wMDFf d29ya2VyX3NwaS5wbApAQCAtNDcsNiArNDcsMTIgQEAgJHJlc3VsdCA9ICRub2RlLT5wb2xs X3F1ZXJ5X3VudGlsKAogaXMoJHJlc3VsdCwgMSwKIAknZHluYW1pYyBiZ3dvcmtlciBoYXMg cmVwb3J0ZWQgIndvcmtlcl9zcGlfbWFpbiIgYXMgd2FpdCBldmVudCcpOwogCisjIENoZWNr IHRoZSB3YWl0IGV2ZW50IHVzZWQgYnkgdGhlIGR5bmFtaWMgYmd3b3JrZXIgYXBwZWFycyBp biBwZ193YWl0X2V2ZW50CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXFbU0VMRUNUIGNvdW50KCopID4gMCBmcm9tIHBnX3dhaXRfZXZlbnQgd2hlcmUgdHlw ZSA9ICdFeHRlbnNpb24nIGFuZCBuYW1lID0gJ3dvcmtlcl9zcGlfbWFpbic7XQorKTsKK2lz KCRyZXN1bHQsICd0JywgJyJ3b3JrZXJfc3BpX21haW4iIGlzIHJlcG9ydGVkIGluIHBnX3dh aXRfZXZlbnQnKTsKKwogbm90ZSAidGVzdGluZyBiZ3dvcmtlcnMgbG9hZGVkIHdpdGggc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzIjsKIAogIyBDcmVhdGUgdGhlIGRhdGFiYXNlIGZpcnN0 IHNvIGFzIHRoZSB3b3JrZXJzIGNhbiBjb25uZWN0IHRvIGl0IHdoZW4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZTA3YWZjZDRhYS4uZDY5MjAyOTkxZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTI2MzEsNiArMjYzMSwxMCBA QCBwZ192aWV3c3wgU0VMRUNUIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgRlJPTSAo cGdfY2xhc3MgYwogICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gKChuLm9pZCA9 IGMucmVsbmFtZXNwYWNlKSkpCiAgIFdIRVJFIChjLnJlbGtpbmQgPSAndic6OiJjaGFyIik7 CitwZ193YWl0X2V2ZW50fCBTRUxFQ1QgdHlwZSwKKyAgICBuYW1lLAorICAgIGRlc2NyaXB0 aW9uCisgICBGUk9NIHBnX2dldF93YWl0X2V2ZW50cygpIHdlKHR5cGUsIG5hbWUsIGRlc2Ny aXB0aW9uKTsKIFNFTEVDVCB0YWJsZW5hbWUsIHJ1bGVuYW1lLCBkZWZpbml0aW9uIEZST00g cGdfcnVsZXMKIFdIRVJFIHNjaGVtYW5hbWUgPSAncGdfY2F0YWxvZycKIE9SREVSIEJZIHRh YmxlbmFtZSwgcnVsZW5hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N5c3ZpZXdzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mu b3V0CmluZGV4IDAwMWM2ZTdlYjkuLmMxYTc5NDRjN2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0CkBAIC0xMzQsNiArMTM0LDIyIEBAIHNlbGVjdCBuYW1l LCBzZXR0aW5nIGZyb20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsK ICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgogKDIxIHJvd3MpCiAKKy0t IFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMg dHlwZXMuCitzZWxlY3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9l dmVudAorICBncm91cCBieSB0eXBlIG9yZGVyIGJ5IHR5cGUgQ09MTEFURSAiQyI7CisgICB0 eXBlICAgIHwgb2sgCistLS0tLS0tLS0tLSstLS0tCisgQWN0aXZpdHkgIHwgdAorIEJ1ZmZl clBpbiB8IHQKKyBDbGllbnQgICAgfCB0CisgRXh0ZW5zaW9uIHwgdAorIElPICAgICAgICB8 IHQKKyBJUEMgICAgICAgfCB0CisgTFdMb2NrICAgIHwgdAorIExvY2sgICAgICB8IHQKKyBU aW1lb3V0ICAgfCB0CisoOSByb3dzKQorCiAtLSBUZXN0IHRoYXQgdGhlIHBnX3RpbWV6b25l X25hbWVzIGFuZCBwZ190aW1lem9uZV9hYmJyZXZzIHZpZXdzIGFyZQogLS0gbW9yZS1vci1s ZXNzIHdvcmtpbmcuICBXZSBjYW4ndCB0ZXN0IHRoZWlyIGNvbnRlbnRzIGluIGFueSBncmVh dCBkZXRhaWwKIC0tIHdpdGhvdXQgdGhlIG91dHB1dHMgY2hhbmdpbmcgYW55dGltZSBJQU5B IHVwZGF0ZXMgdGhlIHVuZGVybHlpbmcgZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N5c3ZpZXdzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N5c3ZpZXdz LnNxbAppbmRleCAzNTFlNDY5Yzc3Li4zZDQzMTA4YWFlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zeXN2aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3lzdmlld3Muc3FsCkBAIC01NSw2ICs1NSwxMCBAQCBzZWxlY3QgY291bnQoKikgPSAwIGFz IG9rIGZyb20gcGdfc3RhdF93YWxfcmVjZWl2ZXI7CiAtLSBhIHJlZ3Jlc3Npb24gdGVzdCBy dW4uCiBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdoZXJlIG5hbWUg bGlrZSAnZW5hYmxlJSc7CiAKKy0tIFRoZXJlIGFyZSBhbHdheXMgd2FpdCBldmVudCBkZXNj cmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuCitzZWxlY3QgdHlwZSwgY291bnQoKikgPiAw IGFzIG9rIEZST00gcGdfd2FpdF9ldmVudAorICBncm91cCBieSB0eXBlIG9yZGVyIGJ5IHR5 cGUgQ09MTEFURSAiQyI7CisKIC0tIFRlc3QgdGhhdCB0aGUgcGdfdGltZXpvbmVfbmFtZXMg YW5kIHBnX3RpbWV6b25lX2FiYnJldnMgdmlld3MgYXJlCiAtLSBtb3JlLW9yLWxlc3Mgd29y a2luZy4gIFdlIGNhbid0IHRlc3QgdGhlaXIgY29udGVudHMgaW4gYW55IGdyZWF0IGRldGFp bAogLS0gd2l0aG91dCB0aGUgb3V0cHV0cyBjaGFuZ2luZyBhbnl0aW1lIElBTkEgdXBkYXRl cyB0aGUgdW5kZXJseWluZyBkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvU29s dXRpb24ucG0gYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQppbmRleCBjOThhMWU5Zjlh Li5hNTBmNzMwMjYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQor KysgYi9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbQpAQCAtNTg4LDcgKzU4OCw4IEBAIHN1 YiBHZW5lcmF0ZUZpbGVzCiAJCQknc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudF90eXBl cy5oJywKIAkJCSdzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVz LnR4dCcpKQogCXsKLQkJcHJpbnQgIkdlbmVyYXRpbmcgcGdzdGF0X3dhaXRfZXZlbnQuYyBh bmQgd2FpdF9ldmVudF90eXBlcy5oLi4uXG4iOworCQlwcmludAorCQkgICJHZW5lcmF0aW5n IHBnc3RhdF93YWl0X2V2ZW50LmMsIHdhaXRfZXZlbnRfdHlwZXMuaCBhbmQgd2FpdF9ldmVu dF9mdW5jc19kYXRhLmMuLi5cbiI7CiAJCW15ICRhY3RpdiA9ICdzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eSc7CiAJCXN5c3RlbSgKIAkJCSJwZXJsICRhY3Rpdi9nZW5lcmF0ZS13YWl0 X2V2ZW50X3R5cGVzLnBsIC0tb3V0ZGlyICRhY3RpdiAtLWNvZGUgJGFjdGl2L3dhaXRfZXZl bnRfbmFtZXMudHh0IgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL21zdmMvY2xlYW4uYmF0IGIv c3JjL3Rvb2xzL21zdmMvY2xlYW4uYmF0CmluZGV4IDdjYjIzZWE4OTQuLmFjOGRhNTgxZTQg MTAwNzU1Ci0tLSBhL3NyYy90b29scy9tc3ZjL2NsZWFuLmJhdAorKysgYi9zcmMvdG9vbHMv bXN2Yy9jbGVhbi5iYXQKQEAgLTU1LDYgKzU1LDcgQEAgaWYgZXhpc3Qgc3JjXGluY2x1ZGVc Y2F0YWxvZ1xoZWFkZXItc3RhbXAgZGVsIC9xIHNyY1xpbmNsdWRlXGNhdGFsb2dcaGVhZGVy LXN0YW0KIGlmIGV4aXN0IGRvY1xzcmNcc2dtbFx2ZXJzaW9uLnNnbWwgZGVsIC9xIGRvY1xz cmNcc2dtbFx2ZXJzaW9uLnNnbWwKIAogaWYgJURJU1QlPT0xIGlmIGV4aXN0IHNyY1xiYWNr ZW5kXHV0aWxzXGFjdGl2aXR5XHBnc3RhdF93YWl0X2V2ZW50LmMgZGVsIC9xIHNyY1xiYWNr ZW5kXHV0aWxzXGFjdGl2aXR5XHBnc3RhdF93YWl0X2V2ZW50LmMKK2lmICVESVNUJT09MSBp ZiBleGlzdCBzcmNcYmFja2VuZFx1dGlsc1xhY3Rpdml0eVx3YWl0X2V2ZW50X2Z1bmNzX2Rh dGEuYyBkZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNcYWN0aXZpdHlcd2FpdF9ldmVudF9mdW5j c19kYXRhLmMKIGlmICVESVNUJT09MSBpZiBleGlzdCBzcmNcYmFja2VuZFx1dGlsc1xhY3Rp dml0eVx3YWl0X2V2ZW50X3R5cGVzLmggZGVsIC9xIHNyY1xiYWNrZW5kXHV0aWxzXGFjdGl2 aXR5XHdhaXRfZXZlbnRfdHlwZXMuaAogaWYgJURJU1QlPT0xIGlmIGV4aXN0IHNyY1xiYWNr ZW5kXHV0aWxzXGZtZ3JvaWRzLmggZGVsIC9xIHNyY1xiYWNrZW5kXHV0aWxzXGZtZ3JvaWRz LmgKIGlmICVESVNUJT09MSBpZiBleGlzdCBzcmNcYmFja2VuZFx1dGlsc1xmbWdycHJvdG9z LmggZGVsIC9xIHNyY1xiYWNrZW5kXHV0aWxzXGZtZ3Jwcm90b3MuaAotLSAKMi4zNC4xCgo= --------------kdgHoUcNP99KszJi4jmd8WXh--