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 1qWvI7-004h0g-3r for pgsql-hackers@arkaria.postgresql.org; Fri, 18 Aug 2023 08:57:11 +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 1qWvI4-009PNd-Or for pgsql-hackers@arkaria.postgresql.org; Fri, 18 Aug 2023 08:57:08 +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 1qWvI3-009PNV-SP for pgsql-hackers@lists.postgresql.org; Fri, 18 Aug 2023 08:57:08 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qWvHv-000mUl-8W for pgsql-hackers@lists.postgresql.org; Fri, 18 Aug 2023 08:57:06 +0000 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-31792ac0fefso618670f8f.2 for ; Fri, 18 Aug 2023 01:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692349017; x=1692953817; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=qXTxWtF7ID0huWr0ZWmQF8US/yScUT+qsjNDqs2azxM=; b=TWKF+Fcs1lQAkuzdHPiV4CqPq0Xpx5hJuIqWDvQv1JNcpXEkJOtpdSci/nBCOm9FXd 8xxTZq3OosmzsHLv7t7kGfAf1SqZyHZExVAgaM1tBweM/ZQqsB6ovwN46k0ZVLuZhfsa o6pXiU0cAhvQ2WIav68r6ZlJRmky/SaC68u31GC65itFQv7e0cvMyn02vWsx7HXCzTxL oNOP/7U6HJdJ/lZ+g0w30NWytyYqkuY7RzFOCDoAg3rn4p9fBj9H7MsnV4prFlQOHDN8 dzT6E56Yr4z660q9OHV9EjEd/qwVAQA2cIOLgrxTK7l4ba3dgtHRu2zqlSXtu0Sji9h1 GCYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692349017; x=1692953817; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qXTxWtF7ID0huWr0ZWmQF8US/yScUT+qsjNDqs2azxM=; b=XLkdZP9varxq/uZwCuKjYlfp9uTWJl/FS75caSCRchSaY4obHK+Mq9d+XsXLjBuZbz /8yChL1JAftN/6+Y0/lLSYnf37SIISIMs96EOQEePrvpBYcaClZN/SS76cfD2OEVwziF 8un9syCSpS8L73D96kXsj+IcyK5Ee346rDRugfU/qHHTuUm7LI0DqXX1+L4p2nBuUTaS ugsu48mJX1reI5Zns/px/L7ZXcSMCd19BkqjgGSuru023ZoPOBnYcIQ0QzClTBpFFiHB A+qu/Qi/zjzihKYTLLuFKbICySpjCJi4jqg4NyvY/7U0YnVbGyldpkcEyT/+fcz8p6Zw m0eQ== X-Gm-Message-State: AOJu0YytkvqRta3Ud6CkC1mlQVCF8oZYMyRs86SLIx94GrTigjoIE4+d CbWuhFv4UBp4hNOzpLkRHCH//omlNRk= X-Google-Smtp-Source: AGHT+IHHjLUXBGMVKvq+rtYtLgKmUe1G8s+UkFR0I2IathKDXsni8mEw+XESQHzygPHAPBwzAyCw6Q== X-Received: by 2002:adf:f68c:0:b0:315:ad1a:5abc with SMTP id v12-20020adff68c000000b00315ad1a5abcmr1594930wrp.5.1692349016536; Fri, 18 Aug 2023 01:56:56 -0700 (PDT) Received: from ?IPV6:2a01:cb11:55e:1700:8d8b:8d20:a052:f9b3? ([2a01:cb11:55e:1700:8d8b:8d20:a052:f9b3]) by smtp.gmail.com with ESMTPSA id o1-20020a5d62c1000000b0031ad2663ed0sm2017706wrv.66.2023.08.18.01.56.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 18 Aug 2023 01:56:55 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------lKlvL2c7ifVTUvyIbHFhcd6j" Message-ID: <0159e907-890d-4f11-8754-0311d7027bb7@gmail.com> Date: Fri, 18 Aug 2023 10:56:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: WIP: new system catalog pg_wait_event To: Masahiro Ikeda Cc: Michael Paquier , Kyotaro Horiguchi , tgl@sss.pgh.pa.us, pgsql-hackers@lists.postgresql.org References: <0109438a-9672-322b-7638-04ad47c97d0f@gmail.com> <1dc98591-0d06-f0da-bc88-21f529d6fb8e@gmail.com> <20230808.115332.301701413576096139.horikyota.ntt@gmail.com> <2f84b397-d020-493c-924c-610b9dd18f8d@gmail.com> <735fbd560ae914c96faaa23cc8d9a118@oss.nttdata.com> <393fe340ab6980f399402a7dfbe13c4c@oss.nttdata.com> Content-Language: en-US From: "Drouvot, Bertrand" In-Reply-To: <393fe340ab6980f399402a7dfbe13c4c@oss.nttdata.com> 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. --------------lKlvL2c7ifVTUvyIbHFhcd6j Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 8/17/23 9:37 AM, Masahiro Ikeda wrote: > Hi, > > On 2023-08-17 14:53, Drouvot, Bertrand wrote: > > The followings are additional comments for v7. > > 1) > >>> I am not sure that "pg_wait_event" is a good idea for the name if the >>> new view.  How about "pg_wait_events" instead, in plural form?  There >>> is more than one wait event listed. >> I'd prefer the singular form. There is a lot of places where it's already used >> (pg_database, pg_user, pg_namespace...to name a few) and it looks like that using >> the plural form are exceptions. > > Since I got the same feeling as Michael-san that "pg_wait_events" would be better, > I check the names of all system views. I think the singular form seems to be > exceptions for views though the singular form is used usually for system catalogs. > > https://www.postgresql.org/docs/devel/views.html > https://www.postgresql.org/docs/devel/catalogs.html Okay, using the plural form in v8 attached. > > 2) > > $ctmp must be $wctmp? > > +    rename($wctmp, "$output_path/wait_event_funcs_data.c") > +      || die "rename: $ctmp to $output_path/wait_event_funcs_data.c: $!"; > Nice catch, thanks, fixed in v8. > > 3) > > "List all the wait events type, name and descriptions" is enough? > > + * List all the wait events (type, name) and their descriptions. > Agree, used "List all the wait events type, name and description" in v8 (using description in singular as compared to your proposal) > 4) > > Why don't you add the usage of the view in the monitoring.sgml? > > ``` >    >      Here is an example of how wait events can be viewed: > > > SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL; >  pid  | wait_event_type | wait_event > ------+-----------------+------------ >  2540 | Lock            | relation >  6644 | LWLock          | ProcArray > (2 rows) > >    > ``` > > ex. > postgres(3789417)=# SELECT a.pid, a.wait_event_type, a.wait_event, w.description FROM pg_stat_activity a JOIN pg_wait_event w ON (a.wait_event_type = w.type AND a.wait_event = w.name) WHERE wait_event is NOT NULL; Agree, I think that's a good idea. I'd prefer to add also a filtering on "state='active'" for this example (I think that would provide a "real" use case as the sessions are not waiting if they are not active). Done in v8. > 5) > > Though I'm not familiar the value, do we need procost? > I think it makes sense to add a "small" one as it's done. BTW, while looking at it, I changed prorows to a more "accurate" value. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------lKlvL2c7ifVTUvyIbHFhcd6j Content-Type: text/plain; charset=UTF-8; name="v8-0001-Add-catalog-pg_wait_events.patch" Content-Disposition: attachment; filename="v8-0001-Add-catalog-pg_wait_events.patch" Content-Transfer-Encoding: base64 RnJvbSAwMjdhODNkMzdkNTJlZWU1MmUzYzgyYmNmODE0YzZkNTk0OWY3Y2NmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogU2F0LCA1IEF1ZyAyMDIzIDEyOjM5OjQyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2OF0gQWRkIGNhdGFsb2cgcGdfd2FpdF9ldmVudHMKCkFkZGluZyBhIG5ldyBzeXN0ZW0g dmlldywgbmFtZWx5IHBnX3dhaXRfZXZlbnRzLCB0aGF0IGRlc2NyaWJlcyB0aGUgd2FpdApl dmVudHMuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAg ICAgIHwgMTMgKystCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAg ICAgICAgfCA2NCArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsICAgICAgICAgIHwgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv LmdpdGlnbm9yZSAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv TWFrZWZpbGUgICAgICAgICAgIHwgIDggKy0KIC4uLi9hY3Rpdml0eS9nZW5lcmF0ZS13YWl0 X2V2ZW50X3R5cGVzLnBsICAgICB8IDU0ICsrKysrKysrKystCiBzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS9tZXNvbi5idWlsZCAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC91dGls cy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgICAgICAgfCA0NCArKysrKysrKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfZnVuY3MuYyB8IDkzICsrKysrKysrKysr KysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAg ICB8ICA2ICsrCiBzcmMvaW5jbHVkZS91dGlscy9tZXNvbi5idWlsZCAgICAgICAgICAgICAg ICAgfCAgNCArLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAg ICAgIHwgIDEgKwogLi4uL21vZHVsZXMvd29ya2VyX3NwaS90LzAwMV93b3JrZXJfc3BpLnBs ICAgIHwgIDYgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgICB8ICA0ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAg ICAgICB8IDE2ICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N5c3ZpZXdzLnNxbCAgICAg ICAgICAgICB8ICA0ICsKIHNyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtICAgICAgICAgICAg ICAgICAgICB8ICAzICstCiBzcmMvdG9vbHMvbXN2Yy9jbGVhbi5iYXQgICAgICAgICAgICAg ICAgICAgICAgfCAgMSArCiAxOSBmaWxlcyBjaGFuZ2VkLCAzMTggaW5zZXJ0aW9ucygrKSwg MTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudF9mdW5jcy5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXgg NzA1MTFhMjM4OC4uYmZhNjU4ZjdhOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0xMTAz LDcgKzExMDMsNyBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIg PyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAmd2FpdF9ldmVu dF90eXBlczsKIAogICAgPHBhcmE+Ci0gICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBob3cg d2FpdCBldmVudHMgY2FuIGJlIHZpZXdlZDoKKyAgICAgSGVyZSBpcyBhcmUgZXhhbXBsZXMg b2YgaG93IHdhaXQgZXZlbnRzIGNhbiBiZSB2aWV3ZWQ6CiAKIDxwcm9ncmFtbGlzdGluZz4K IFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpcyBOT1QgTlVMTDsKQEAgLTExMTIsNiArMTEx MiwxNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBw Z19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogIDI1NDAgfCBMb2NrICAgICAg ICAgICAgfCByZWxhdGlvbgogIDY2NDQgfCBMV0xvY2sgICAgICAgICAgfCBQcm9jQXJyYXkK ICgyIHJvd3MpCis8L3Byb2dyYW1saXN0aW5nPgorCis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxF Q1QgYS5waWQsIGEud2FpdF9ldmVudCwgdy5kZXNjcmlwdGlvbgorRlJPTSBwZ19zdGF0X2Fj dGl2aXR5IGEgSk9JTiBwZ193YWl0X2V2ZW50cyB3CitPTiAoYS53YWl0X2V2ZW50X3R5cGUg PSB3LnR5cGUgQU5EIGEud2FpdF9ldmVudCA9IHcubmFtZSkKK1dIRVJFIHdhaXRfZXZlbnQg aXMgTk9UIE5VTEwgYW5kIGEuc3RhdGUgPSAnYWN0aXZlJzsKKy1bIFJFQ09SRCAxIF0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK3BpZCAgICAgICAgIHwgNjg2Njc0Cit3YWl0X2V2ZW50ICB8IFdBTEluaXRT eW5jCitkZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FM IGZpbGUgdG8gcmVhY2ggZHVyYWJsZSBzdG9yYWdlCiA8L3Byb2dyYW1saXN0aW5nPgogICAg PC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggNTdiMjI4MDc2ZS4uMmIz NWMyZjkxYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMjIxLDYgKzIyMSwxMSBA QAogICAgICAgPGVudHJ5PnZpZXdzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXdhaXQtZXZlbnRzIj48 c3RydWN0bmFtZT5wZ193YWl0X2V2ZW50czwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT53YWl0IGV2ZW50czwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAg PC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpAQCAtNDgyNSw0ICs0ODMwLDYz IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hh Y3RzIHBweAogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKworIDxzZWN0MSBpZD0idmlldy1w Zy13YWl0LWV2ZW50cyI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ193YWl0X2V2ZW50czwv c3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0idmlldy1wZy13YWl0 LWV2ZW50cyI+CisgICA8cHJpbWFyeT5wZ193YWl0X2V2ZW50czwvcHJpbWFyeT4KKyAgPC9p bmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8c3RydWN0bmFtZT5wZ193YWl0 X2V2ZW50czwvc3RydWN0bmFtZT4gcHJvdmlkZXMgZGVzY3JpcHRpb24gYWJvdXQgdGhlCisg ICB3YWl0IGV2ZW50cy4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ193YWl0X2V2ZW50czwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+Cisg ICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiA8 dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg V2FpdCBldmVudCB0eXBlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5h bWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgV2FpdCBldmVudCBuYW1lCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmRlc2NyaXB0aW9uPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFdhaXQgZXZlbnQg ZGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKwogPC9jaGFw dGVyPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9N YWtlZmlsZQppbmRleCAxYzkyOTM4M2M0Li4zZTI3NWFjNzU5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9NYWtlZmlsZQpAQCAtMTM0LDcg KzEzNCw3IEBAIHN0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy5oOiBzdG9yYWdlL2xtZ3IvZ2Vu ZXJhdGUtbHdsb2NrbmFtZXMucGwgc3RvcmFnZS9sbWdyL2x3CiAJJChNQUtFKSAtQyBzdG9y YWdlL2xtZ3IgbHdsb2NrbmFtZXMuaCBsd2xvY2tuYW1lcy5jCiAKIHV0aWxzL2FjdGl2aXR5 L3dhaXRfZXZlbnRfdHlwZXMuaDogdXRpbHMvYWN0aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVu dF90eXBlcy5wbCB1dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAotCSQoTUFL RSkgLUMgdXRpbHMvYWN0aXZpdHkgd2FpdF9ldmVudF90eXBlcy5oIHBnc3RhdF93YWl0X2V2 ZW50LmMKKwkkKE1BS0UpIC1DIHV0aWxzL2FjdGl2aXR5IHdhaXRfZXZlbnRfdHlwZXMuaCBw Z3N0YXRfd2FpdF9ldmVudC5jIHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5jCiAKICMgcnVuIHRo aXMgdW5jb25kaXRpb25hbGx5IHRvIGF2b2lkIG5lZWRpbmcgdG8ga25vdyBpdHMgZGVwZW5k ZW5jaWVzIGhlcmU6CiBzdWJtYWtlLWNhdGFsb2ctaGVhZGVyczoKQEAgLTMxMSw2ICszMTEs NyBAQCBtYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KIAkgICAgICBzdG9yYWdlL2xtZ3Iv bHdsb2NrbmFtZXMuYyBcCiAJICAgICAgc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLmggXAog CSAgICAgIHV0aWxzL2FjdGl2aXR5L3Bnc3RhdF93YWl0X2V2ZW50LmMgXAorCSAgICAgIHV0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIFwKIAkgICAgICB1dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50X3R5cGVzLmggXAogCSAgICAgIHV0aWxzL2FkdC9qc29ucGF0 aF9ncmFtLmMgXAogCSAgICAgIHV0aWxzL2FkdC9qc29ucGF0aF9ncmFtLmggXApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGFmNjVhZjZiZGQuLjM2MmIxZWE4 ZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzNDIsMyAr MTM0Miw2IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCiAg ICAgICAgIHNzLnN0YXRzX3Jlc2V0CiAgICAgRlJPTSBwZ19zdWJzY3JpcHRpb24gYXMgcywK ICAgICAgICAgIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl9zdGF0cyhzLm9pZCkgYXMgc3M7 CisKK0NSRUFURSBWSUVXIHBnX3dhaXRfZXZlbnRzIEFTCisgICAgU0VMRUNUICogRlJPTSBw Z19nZXRfd2FpdF9ldmVudHMoKSBBUyB3ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5Ly5naXRpZ25vcmUgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS8u Z2l0aWdub3JlCmluZGV4IGQ3NzA3OTI4NWIuLmJkMGMwYzc3NzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5Ly5naXRpZ25vcmUKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDMgQEAKIC9wZ3N0YXRfd2Fp dF9ldmVudC5jCiAvd2FpdF9ldmVudF90eXBlcy5oCisvd2FpdF9ldmVudF9mdW5jc19kYXRh LmMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKaW5kZXggZjExMTc3NDVkNC4u ZjU3Y2YzOTU4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFr ZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKQEAgLTMy LDEwICszMiwxNCBAQCBPQkpTID0gXAogCXBnc3RhdF9zdWJzY3JpcHRpb24ubyBcCiAJcGdz dGF0X3dhbC5vIFwKIAlwZ3N0YXRfeGFjdC5vIFwKLQl3YWl0X2V2ZW50Lm8KKwl3YWl0X2V2 ZW50Lm8gXAorCXdhaXRfZXZlbnRfZnVuY3MubwogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikv c3JjL2JhY2tlbmQvY29tbW9uLm1rCiAKK3dhaXRfZXZlbnRfZnVuY3Mubzogd2FpdF9ldmVu dF9mdW5jc19kYXRhLmMKK3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jOiB3YWl0X2V2ZW50X3R5 cGVzLmgKKwogd2FpdF9ldmVudC5vOiBwZ3N0YXRfd2FpdF9ldmVudC5jCiBwZ3N0YXRfd2Fp dF9ldmVudC5jOiB3YWl0X2V2ZW50X3R5cGVzLmgKIAl0b3VjaCAkQApAQCAtNDQsNCArNDgs NCBAQCB3YWl0X2V2ZW50X3R5cGVzLmg6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eAogCSQoUEVSTCkgJChzcmNkaXIpL2dl bmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwgLS1jb2RlICQ8CiAKIG1haW50YWluZXItY2xl YW46IGNsZWFuCi0Jcm0gLWYgd2FpdF9ldmVudF90eXBlcy5oIHBnc3RhdF93YWl0X2V2ZW50 LmMKKwlybSAtZiB3YWl0X2V2ZW50X3R5cGVzLmggcGdzdGF0X3dhaXRfZXZlbnQuYyB3YWl0 X2V2ZW50X2Z1bmNzX2RhdGEuYwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvZ2VuZXJhdGUtd2FpdF9ldmVudF90eXBlcy5wbCBiL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlwZXMucGwKaW5kZXggNTYzMzVlODcz MC4uOWM0NTU3ZDkwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv Z2VuZXJhdGUtd2FpdF9ldmVudF90eXBlcy5wbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9nZW5lcmF0ZS13YWl0X2V2ZW50X3R5cGVzLnBsCkBAIC00LDYgKzQsNyBAQAog IyBHZW5lcmF0ZSB3YWl0IGV2ZW50cyBzdXBwb3J0IGZpbGVzIGZyb20gd2FpdF9ldmVudF9u YW1lcy50eHQ6CiAjIC0gd2FpdF9ldmVudF90eXBlcy5oIChpZiAtLWNvZGUgaXMgcGFzc2Vk KQogIyAtIHBnc3RhdF93YWl0X2V2ZW50LmMgKGlmIC0tY29kZSBpcyBwYXNzZWQpCisjIC0g d2FpdF9ldmVudF9mdW5jc19kYXRhLmMgKGlmIC0tY29kZSBpcyBwYXNzZWQpCiAjIC0gd2Fp dF9ldmVudF90eXBlcy5zZ21sIChpZiAtLWRvY3MgaXMgcGFzc2VkKQogIwogIyBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKQEAgLTk4LDggKzk5LDEwIEBAIGlmICgkZ2VuX2NvZGUpCiAJIyBtdWx0aXBs ZSB0aW1lcy4KIAlteSAkaHRtcCA9ICIkb3V0cHV0X3BhdGgvd2FpdF9ldmVudF90eXBlcy5o LnRtcCQkIjsKIAlteSAkY3RtcCA9ICIkb3V0cHV0X3BhdGgvcGdzdGF0X3dhaXRfZXZlbnQu Yy50bXAkJCI7CisJbXkgJHdjdG1wID0gIiRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X2Z1bmNz X2RhdGEuYy50bXAkJCI7CiAJb3BlbiBteSAkaCwgJz4nLCAkaHRtcCBvciBkaWUgIkNvdWxk IG5vdCBvcGVuICRodG1wOiAkISI7CiAJb3BlbiBteSAkYywgJz4nLCAkY3RtcCBvciBkaWUg IkNvdWxkIG5vdCBvcGVuICRjdG1wOiAkISI7CisJb3BlbiBteSAkd2MsICc+JywgJHdjdG1w IG9yIGRpZSAiQ291bGQgbm90IG9wZW4gJHdjdG1wOiAkISI7CiAKIAlteSAkaGVhZGVyX2Nv bW1lbnQgPQogCSAgJy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI5LDEyICsxMzIsMTQg QEAgaWYgKCRnZW5fY29kZSkKIAogCXByaW50ZiAkYyAkaGVhZGVyX2NvbW1lbnQsICdwZ3N0 YXRfd2FpdF9ldmVudC5jJzsKIAorCXByaW50ZiAkd2MgJGhlYWRlcl9jb21tZW50LCAnd2Fp dF9ldmVudF9mdW5jc19kYXRhLmMnOworCisJIyBHZW5lcmF0ZSB0aGUgcGdzdGF0X3dhaXRf ZXZlbnQuYyBhbmQgd2FpdF9ldmVudF90eXBlcy5oIGZpbGVzCiAJIyB1YygpIGlzIGJlaW5n IHVzZWQgdG8gZm9yY2UgdGhlIGNvbXBhcmlzb24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZS4K IAlmb3JlYWNoIG15ICR3YWl0Y2xhc3MgKHNvcnQgeyB1YygkYSkgY21wIHVjKCRiKSB9IGtl eXMgJWhhc2h3ZSkKIAl7Ci0KLQkJIyBEb24ndCBnZW5lcmF0ZSAuYyBhbmQgLmggZmlsZXMg Zm9yIEV4dGVuc2lvbiwgTFdMb2NrIGFuZAotCQkjIExvY2ssIHRoZXNlIGFyZSBoYW5kbGVk IGluZGVwZW5kZW50bHkuCisJCSMgRG9uJ3QgZ2VuZXJhdGUgdGhlIHBnc3RhdF93YWl0X2V2 ZW50LmMgYW5kIHdhaXRfZXZlbnRfdHlwZXMuaCBmaWxlcworCQkjIGZvciBFeHRlbnNpb24s IExXTG9jayBhbmQgTG9jaywgdGhlc2UgYXJlIGhhbmRsZWQgaW5kZXBlbmRlbnRseS4KIAkJ bmV4dAogCQkgIGlmICggJHdhaXRjbGFzcyBlcSAnV2FpdEV2ZW50RXh0ZW5zaW9uJwogCQkJ fHwgJHdhaXRjbGFzcyBlcSAnV2FpdEV2ZW50TFdMb2NrJwpAQCAtMTgzLDE0ICsxODgsNTUg QEAgaWYgKCRnZW5fY29kZSkKIAkJcHJpbnRmICRjICJ9XG5cbiI7CiAJfQogCisJIyBHZW5l cmF0ZSB3YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYywgZm9yIHRoZSBjb250ZW50cyBvZiBzdGF0 aWMgQworCSMgc3RydWN0dXJlIGhvbGRpbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd2FpdCBldmVudHMuCisJIyB1YygpIGlzIGJlaW5nIHVzZWQgdG8gZm9yY2UgdGhlIGNv bXBhcmlzb24gdG8gYmUgY2FzZS1pbnNlbnNpdGl2ZSwKKwkjIGV2ZW4gdGhvdWdoIGl0IGlz IG5vdCBzdHJpY3RseSBtYW5kYXRvcnkgaGVyZS4KKwlmb3JlYWNoIG15ICR3YWl0Y2xhc3Mg KHNvcnQgeyB1YygkYSkgY21wIHVjKCRiKSB9IGtleXMgJWhhc2h3ZSkKKwl7CisJCW15ICRs YXN0ID0gJHdhaXRjbGFzczsKKwkJJGxhc3QgPX4gcy9eV2FpdEV2ZW50Ly87CisKKwkJZm9y ZWFjaCBteSAkd2V2IChAeyAkaGFzaHdleyR3YWl0Y2xhc3N9IH0pCisJCXsKKwkJCW15ICRu ZXdfZGVzYyA9IHN1YnN0ciAkd2V2LT5bMl0sIDEsIC0yOworCQkJIyBFc2NhcGUgc2luZ2xl IHF1b3Rlcy4KKwkJCSRuZXdfZGVzYyA9fiBzLycvXFwnL2c7CisKKwkJCSMgUmVwbGFjZSB0 aGUgInF1b3RlIiBtYXJrdXBzIGJ5IHJlYWwgb25lcy4KKwkJCSRuZXdfZGVzYyA9fiBzLzxx dW90ZT4oLio/KTxcL3F1b3RlPi9cXCIkMVxcIi9nOworCisJCQkjIFJlbW92ZSBTR01MIG1h cmt1cHMuCisJCQkkbmV3X2Rlc2MgPX4gcy88Lio/PiguKj8pPC4qPz4vJDEvZzsKKworCQkJ IyBUd2VhayBjb250ZW50cyBhYm91dCBsaW5rcyA8eHJlZiBsaW5rZW5kPSJ0ZXh0Ii8+IG9u IEdVQ3MsCisJCQl3aGlsZSAobXkgKCRjYXB0dXJlKSA9CisJCQkJJG5ld19kZXNjID1+IG0v PHhyZWYgbGlua2VuZD0iZ3VjLSguKj8pIlwvPi9nKQorCQkJeworCQkJCSRjYXB0dXJlID1+ IHMvLS9fL2c7CisJCQkJJG5ld19kZXNjID1+IHMvPHhyZWYgbGlua2VuZD0iZ3VjLS4qPyJc Lz4vJGNhcHR1cmUvZzsKKwkJCX0KKwkJCSMgVGhlbiByZW1vdmUgYW55IHJlZmVyZW5jZSB0 byAic2VlIDx4cmVmIGxpbmtlbmQ9InRleHQiLz4iLgorCQkJJG5ld19kZXNjID1+IHMvOyBz ZWUuKiQvLzsKKworCQkJIyBPbmUgZWxlbWVudCB0byB0aGUgQyBzdHJ1Y3R1cmUgaG9sZGlu ZyB0aGUgd2FpdCBldmVudAorCQkJIyBpbmZvLCBhcyBvZiAodHlwZSwgbmFtZSwgZGVzY3Jp cHRpb24pLgorCQkJcHJpbnRmICR3YyAiXHR7XCIlc1wiLCBcIiVzXCIsIFwiJXNcIn0sXG4i LCAkbGFzdCwgJHdldi0+WzFdLAorCQkJICAkbmV3X2Rlc2M7CisJCX0KKwl9CisKIAlwcmlu dGYgJGggIiNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV0FJVF9FVkVOVF9U WVBFU19IICovXG4iOwogCWNsb3NlICRoOwogCWNsb3NlICRjOworCWNsb3NlICR3YzsKIAog CXJlbmFtZSgkaHRtcCwgIiRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X3R5cGVzLmgiKQogCSAg fHwgZGllICJyZW5hbWU6ICRodG1wIHRvICRvdXRwdXRfcGF0aC93YWl0X2V2ZW50X3R5cGVz Lmg6ICQhIjsKIAlyZW5hbWUoJGN0bXAsICIkb3V0cHV0X3BhdGgvcGdzdGF0X3dhaXRfZXZl bnQuYyIpCiAJICB8fCBkaWUgInJlbmFtZTogJGN0bXAgdG8gJG91dHB1dF9wYXRoL3Bnc3Rh dF93YWl0X2V2ZW50LmM6ICQhIjsKKwlyZW5hbWUoJHdjdG1wLCAiJG91dHB1dF9wYXRoL3dh aXRfZXZlbnRfZnVuY3NfZGF0YS5jIikKKwkgIHx8IGRpZSAicmVuYW1lOiAkd2N0bXAgdG8g JG91dHB1dF9wYXRoL3dhaXRfZXZlbnRfZnVuY3NfZGF0YS5jOiAkISI7CiB9CiAjIEdlbmVy YXRlIHRoZSAuc2dtbCBmaWxlLgogZWxzaWYgKCRnZW5fZG9jcykKQEAgLTI0OSw3ICsyOTUs NyBAQCBVc2FnZTogcGVybCAgWy0tb3V0cHV0IDxwYXRoPl0gWy0tY29kZSBdIFsgLS1zZ21s IF0gaW5wdXRfZmlsZQogCiBPcHRpb25zOgogICAgIC0tb3V0ZGlyICAgICAgICAgT3V0cHV0 IGRpcmVjdG9yeSAoZGVmYXVsdCAnLicpCi0gICAgLS1jb2RlICAgICAgICAgICBHZW5lcmF0 ZSB3YWl0X2V2ZW50X3R5cGVzLmggYW5kIHBnc3RhdF93YWl0X2V2ZW50LmMuCisgICAgLS1j b2RlICAgICAgICAgICBHZW5lcmF0ZSBDIGFuZCBoZWFkZXIgZmlsZXMuCiAgICAgLS1zZ21s ICAgICAgICAgICBHZW5lcmF0ZSB3YWl0X2V2ZW50X3R5cGVzLnNnbWwuCiAKIGdlbmVyYXRl LXdhaXRfZXZlbnRfdHlwZXMucGwgZ2VuZXJhdGVzIHRoZSBTR01MIGRvY3VtZW50YXRpb24g YW5kIGNvZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L21lc29u LmJ1aWxkIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQKaW5kZXgg OTYzM2YzNjIzYy4uNDZhMjdlNzU0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv bWVzb24uYnVpbGQKQEAgLTIzLDYgKzIzLDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVz KAogIyBzZWVtcyBuaWNlciB0byBub3QgYWRkIHRoYXQgYXMgYW4gaW5jbHVkZSBwYXRoIGZv ciB0aGUgd2hvbGUgYmFja2VuZC4KIHdhaXRldmVudF9zb3VyY2VzID0gZmlsZXMoCiAgICd3 YWl0X2V2ZW50LmMnLAorICAnd2FpdF9ldmVudF9mdW5jcy5jJywKICkKIAogd2FpdF9ldmVu dCA9IHN0YXRpY19saWJyYXJ5KCd3YWl0X2V2ZW50X25hbWVzJywKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA0YjliNWMwMWNiLi5kMzE3NjdkZjgw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yNjQs NiArMjY0LDUwIEBAIEdldFdhaXRFdmVudEV4dGVuc2lvbklkZW50aWZpZXIodWludDE2IGV2 ZW50SWQpCiB9CiAKIAorLyoKKyAqIFJldHVybnMgYSBsaXN0IG9mIGN1cnJlbnRseSBkZWZp bmVkIGN1c3RvbSB3YWl0IGV2ZW50IG5hbWVzIGZvciBleHRlbnNpb25zLgorICogVGhlIHJl c3VsdCBpcyBhIHBhbGxvYydkIGFycmF5LCB3aXRoIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg cmV0dXJuZWQgaW50bworICogKm53YWl0ZXZlbnRzLgorICovCitjaGFyICoqCitHZXRXYWl0 RXZlbnRFeHRlbnNpb25OYW1lcyhpbnQgKm53YWl0ZXZlbnRzKQoreworCWNoYXIJICAqKndh aXRldmVudG5hbWVzOworCVdhaXRFdmVudEV4dGVuc2lvbkVudHJ5QnlOYW1lICpoZW50cnk7 CisJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOworCWludAkJCWluZGV4OworCWludAkJCWVs czsKKworCUxXTG9ja0FjcXVpcmUoV2FpdEV2ZW50RXh0ZW5zaW9uTG9jaywgTFdfU0hBUkVE KTsKKworCS8qIE5vdyB3ZSBjYW4gc2FmZWx5IGNvdW50IHRoZSBudW1iZXIgb2YgZW50cmll cyAqLworCWVscyA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKFdhaXRFdmVudEV4dGVuc2lvbkhh c2hCeU5hbWUpOworCisJLyogQWxsb2NhdGUgZW5vdWdoIHNwYWNlIGZvciBhbGwgZW50cmll cyAqLworCXdhaXRldmVudG5hbWVzID0gcGFsbG9jKGVscyAqIHNpemVvZihjaGFyW05BTUVE QVRBTEVOXSkpOworCisJLyogTm93IHNjYW4gdGhlIGhhc2ggdGFibGUgdG8gY29weSB0aGUg ZGF0YSAqLworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBXYWl0RXZlbnRFeHRlbnNpb25I YXNoQnlOYW1lKTsKKworCWluZGV4ID0gMDsKKwl3aGlsZSAoKGhlbnRyeSA9IChXYWl0RXZl bnRFeHRlbnNpb25FbnRyeUJ5TmFtZSAqKSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkg IT0gTlVMTCkKKwl7CisKKwkJd2FpdGV2ZW50bmFtZXNbaW5kZXhdID0gcGFsbG9jKHNpemVv ZihjaGFyW05BTUVEQVRBTEVOXSkpOworCQlzdHJsY3B5KHdhaXRldmVudG5hbWVzW2luZGV4 XSwgaGVudHJ5LT53YWl0X2V2ZW50X25hbWUsCisJCQkJc2l6ZW9mKGNoYXJbTkFNRURBVEFM RU5dKSk7CisKKwkJaW5kZXgrKzsKKwl9CisKKwlMV0xvY2tSZWxlYXNlKFdhaXRFdmVudEV4 dGVuc2lvbkxvY2spOworCisJQXNzZXJ0KGluZGV4ID09IGVscyk7CisKKwkqbndhaXRldmVu dHMgPSBpbmRleDsKKwlyZXR1cm4gd2FpdGV2ZW50bmFtZXM7Cit9CisKIC8qCiAgKiBDb25m aWd1cmUgd2FpdCBldmVudCByZXBvcnRpbmcgdG8gcmVwb3J0IHdhaXQgZXZlbnRzIHRvICp3 YWl0X2V2ZW50X2luZm8uCiAgKiAqd2FpdF9ldmVudF9pbmZvIG5lZWRzIHRvIGJlIHZhbGlk IHVudGlsIHBnc3RhdF9yZXNldF93YWl0X2V2ZW50X3N0b3JhZ2UoKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9mdW5jcy5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9mdW5jcy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA2OTkyZjA0YTkKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X2Z1bmNzLmMKQEAgLTAs MCArMSw5MyBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0X2V2ZW50X2Z1 bmNzLmMKKyAqCSAgRnVuY3Rpb25zIGZvciBhY2Nlc3Npbmcgd2FpdCBldmVudCBkYXRhLgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0 LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudF9mdW5jcy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUg InBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCisKKy8qCisgKiBF YWNoIHdhaXQgZXZlbnQgaGFzIG9uZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIHRoaXMgc3Ry dWN0dXJlLCBmZWQgdG8KKyAqIHRoZSBTUUwgZnVuY3Rpb24gb2YgdGhpcyBmaWxlLgorICov CitzdGF0aWMgY29uc3Qgc3RydWN0Cit7CisJY29uc3QgY2hhciAqdHlwZTsKKwljb25zdCBj aGFyICpuYW1lOworCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOworfQorCit3YWl0RXZlbnRE YXRhW10gPQoreworI2luY2x1ZGUgIndhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIgorCS8qIGVu ZCBvZiBsaXN0ICovCisJe05VTEwsIE5VTEwsIE5VTEx9Cit9OworCisKKy8qCisgKiBwZ19n ZXRfd2FpdF9ldmVudHMKKyAqCisgKiBMaXN0IGFsbCB0aGUgd2FpdCBldmVudHMgdHlwZSwg bmFtZSBhbmQgZGVzY3JpcHRpb24uCisgKi8KK0RhdHVtCitwZ19nZXRfd2FpdF9ldmVudHMo UEdfRlVOQ1RJT05fQVJHUykKK3sKKyNkZWZpbmUgUEdfR0VUX1dBSVRfRVZFTlRTX0NPTFMg MworCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+ cmVzdWx0aW5mbzsKKwljaGFyCSAgKip3YWl0ZXZlbnRuYW1lczsKKwlpbnQJCQluYmV4dHdh aXRldmVudHM7CisKKwkvKiBCdWlsZCB0dXBsZXN0b3JlIHRvIGhvbGQgdGhlIHJlc3VsdCBy b3dzICovCisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOworCisJLyogSXRlcmF0 ZSBvdmVyIHRoZSBsaXN0IG9mIHdhaXQgZXZlbnRzICovCisJZm9yIChpbnQgaWR4ID0gMDsg d2FpdEV2ZW50RGF0YVtpZHhdLnR5cGUgIT0gTlVMTDsgaWR4KyspCisJeworCQlEYXR1bQkJ dmFsdWVzW1BHX0dFVF9XQUlUX0VWRU5UU19DT0xTXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNb UEdfR0VUX1dBSVRfRVZFTlRTX0NPTFNdID0gezB9OworCisJCXZhbHVlc1swXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0od2FpdEV2ZW50RGF0YVtpZHhdLnR5cGUpOworCQl2YWx1ZXNbMV0g PSBDU3RyaW5nR2V0VGV4dERhdHVtKHdhaXRFdmVudERhdGFbaWR4XS5uYW1lKTsKKwkJdmFs dWVzWzJdID0gQ1N0cmluZ0dldFRleHREYXR1bSh3YWl0RXZlbnREYXRhW2lkeF0uZGVzY3Jp cHRpb24pOworCisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOworCX0KKworCS8qIEhhbmRsaW5nIGV4 dGVuc2lvbiBjdXN0b20gd2FpdCBldmVudHMgKi8KKwl3YWl0ZXZlbnRuYW1lcyA9IEdldFdh aXRFdmVudEV4dGVuc2lvbk5hbWVzKCZuYmV4dHdhaXRldmVudHMpOworCisJZm9yIChpbnQg aWR4ID0gMDsgaWR4IDwgbmJleHR3YWl0ZXZlbnRzOyBpZHgrKykKKwl7CisJCVN0cmluZ0lu Zm9EYXRhIGJ1ZjsKKwkJRGF0dW0JCXZhbHVlc1tQR19HRVRfV0FJVF9FVkVOVFNfQ09MU10g PSB7MH07CisJCWJvb2wJCW51bGxzW1BHX0dFVF9XQUlUX0VWRU5UU19DT0xTXSA9IHswfTsK KworCisJCXZhbHVlc1swXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oIkV4dGVuc2lvbiIpOwor CQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHdhaXRldmVudG5hbWVzW2lkeF0p OworCisJCWluaXRTdHJpbmdJbmZvKCZidWYpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZidWYsICJXYWl0aW5nIGZvciBjdXN0b20gd2FpdCBldmVudCBcIiIpOworCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsIHdhaXRldmVudG5hbWVzW2lkeF0pOworCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZidWYsICJcIiBkZWZpbmVkIGJ5IGFuIGV4dGVuc2lvbiBtb2R1 bGUiKTsKKworCQl2YWx1ZXNbMl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGJ1Zi5kYXRhKTsK KworCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5z ZXREZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwl9CisKKwlyZXR1cm4gKERhdHVtKSAwOworfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNjk5NjA3Mzk4OS4uYjJkYWI5OGE4ZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDE3LDYgKzU0MTcsMTIgQEAKICAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKICAgcHJvYXJnbmFtZXMgPT4gJ3twaWQs ZGF0aWQscGlkLHVzZXN5c2lkLGFwcGxpY2F0aW9uX25hbWUsc3RhdGUscXVlcnksd2FpdF9l dmVudF90eXBlLHdhaXRfZXZlbnQseGFjdF9zdGFydCxxdWVyeV9zdGFydCxiYWNrZW5kX3N0 YXJ0LHN0YXRlX2NoYW5nZSxjbGllbnRfYWRkcixjbGllbnRfaG9zdG5hbWUsY2xpZW50X3Bv cnQsYmFja2VuZF94aWQsYmFja2VuZF94bWluLGJhY2tlbmRfdHlwZSxzc2wsc3NsdmVyc2lv bixzc2xjaXBoZXIsc3NsYml0cyxzc2xfY2xpZW50X2RuLHNzbF9jbGllbnRfc2VyaWFsLHNz bF9pc3N1ZXJfZG4sZ3NzX2F1dGgsZ3NzX3ByaW5jLGdzc19lbmMsZ3NzX2RlbGVnYXRpb24s bGVhZGVyX3BpZCxxdWVyeV9pZH0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2FjdGl2 aXR5JyB9LAoreyBvaWQgPT4gJzg0MDMnLCBkZXNjciA9PiAnZGVzY3JpYmUgd2FpdCBldmVu dHMnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfd2FpdF9ldmVudHMnLCBwcm9jb3N0ID0+ICcx MCcsIHByb3Jvd3MgPT4gJzI1MCcsCisgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxl ID0+ICdzJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywKKyAgcHJvYXJndHlwZXMgPT4gJycs IHByb2FsbGFyZ3R5cGVzID0+ICd7dGV4dCx0ZXh0LHRleHR9JywKKyAgcHJvYXJnbW9kZXMg PT4gJ3tvLG8sb30nLCBwcm9hcmduYW1lcyA9PiAne3R5cGUsbmFtZSxkZXNjcmlwdGlvbn0n LAorICBwcm9zcmMgPT4gJ3BnX2dldF93YWl0X2V2ZW50cycgfSwKIHsgb2lkID0+ICczMzE4 JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGluZm9ybWF0aW9uIGFib3V0IHByb2dyZXNz IG9mIGJhY2tlbmRzIHJ1bm5pbmcgbWFpbnRlbmFuY2UgY29tbWFuZCcsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8nLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9y ZXRzZXQgPT4gJ3QnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbWVzb24uYnVp bGQgYi9zcmMvaW5jbHVkZS91dGlscy9tZXNvbi5idWlsZAppbmRleCA2ZGU1ZDkzNzk5Li5j MTc5NDc4NjExIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9tZXNvbi5idWlsZAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9tZXNvbi5idWlsZApAQCAtMSw2ICsxLDYgQEAKICMg Q29weXJpZ2h0IChjKSAyMDIyLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAKLXdhaXRfZXZlbnRfb3V0cHV0ID0gWyd3YWl0X2V2ZW50X3R5cGVzLmgnLCAn cGdzdGF0X3dhaXRfZXZlbnQuYyddCit3YWl0X2V2ZW50X291dHB1dCA9IFsnd2FpdF9ldmVu dF90eXBlcy5oJywgJ3Bnc3RhdF93YWl0X2V2ZW50LmMnLCAnd2FpdF9ldmVudF9mdW5jc19k YXRhLmMnXQogd2FpdF9ldmVudF90YXJnZXQgPSBjdXN0b21fdGFyZ2V0KCd3YWl0X2V2ZW50 X25hbWVzJywKICAgaW5wdXQ6IGZpbGVzKCcuLi8uLi9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L3dhaXRfZXZlbnRfbmFtZXMudHh0JyksCiAgIG91dHB1dDogd2FpdF9ldmVudF9vdXRwdXQs CkBAIC0xMSw3ICsxMSw3IEBAIHdhaXRfZXZlbnRfdGFyZ2V0ID0gY3VzdG9tX3RhcmdldCgn d2FpdF9ldmVudF9uYW1lcycsCiAgIF0sCiAgIGJ1aWxkX2J5X2RlZmF1bHQ6IHRydWUsCiAg IGluc3RhbGw6IHRydWUsCi0gIGluc3RhbGxfZGlyOiBbZGlyX2luY2x1ZGVfc2VydmVyIC8g J3V0aWxzJywgZmFsc2VdLAorICBpbnN0YWxsX2RpcjogW2Rpcl9pbmNsdWRlX3NlcnZlciAv ICd1dGlscycsIGZhbHNlLCBmYWxzZV0sCiApCiAKIHdhaXRfZXZlbnRfdHlwZXNfaCA9IHdh aXRfZXZlbnRfdGFyZ2V0WzBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0 X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggM2VlYmRm YWQzOC4uMDA5YjAzYTUyMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNjMsNiAr NjMsNyBAQCBleHRlcm4gdm9pZCBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbUluaXQodm9pZCk7 CiBleHRlcm4gU2l6ZSBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbVNpemUodm9pZCk7CiAKIGV4 dGVybiB1aW50MzIgV2FpdEV2ZW50RXh0ZW5zaW9uTmV3KGNvbnN0IGNoYXIgKndhaXRfZXZl bnRfbmFtZSk7CitleHRlcm4gY2hhciAqKkdldFdhaXRFdmVudEV4dGVuc2lvbk5hbWVzKGlu dCAqbndhaXRldmVudHMpOwogCiAvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcmVwb3J0X3dh aXRfc3RhcnQoKSAtCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkv dC8wMDFfd29ya2VyX3NwaS5wbCBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS90LzAw MV93b3JrZXJfc3BpLnBsCmluZGV4IDI2YjhhNDliZWMuLjI5NjVhY2Q3ODkgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS90LzAwMV93b3JrZXJfc3BpLnBsCisr KyBiL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS90LzAwMV93b3JrZXJfc3BpLnBsCkBA IC00Nyw2ICs0NywxMiBAQCAkcmVzdWx0ID0gJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCiBp cygkcmVzdWx0LCAxLAogCSdkeW5hbWljIGJnd29ya2VyIGhhcyByZXBvcnRlZCAid29ya2Vy X3NwaV9tYWluIiBhcyB3YWl0IGV2ZW50Jyk7CiAKKyMgQ2hlY2sgdGhlIHdhaXQgZXZlbnQg dXNlZCBieSB0aGUgZHluYW1pYyBiZ3dvcmtlciBhcHBlYXJzIGluIHBnX3dhaXRfZXZlbnRz CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFbU0VMRUNUIGNv dW50KCopID4gMCBmcm9tIHBnX3dhaXRfZXZlbnRzIHdoZXJlIHR5cGUgPSAnRXh0ZW5zaW9u JyBhbmQgbmFtZSA9ICd3b3JrZXJfc3BpX21haW4nO10KKyk7CitpcygkcmVzdWx0LCAndCcs ICcid29ya2VyX3NwaV9tYWluIiBpcyByZXBvcnRlZCBpbiBwZ193YWl0X2V2ZW50cycpOwor CiBub3RlICJ0ZXN0aW5nIGJnd29ya2VycyBsb2FkZWQgd2l0aCBzaGFyZWRfcHJlbG9hZF9s aWJyYXJpZXMiOwogCiAjIENyZWF0ZSB0aGUgZGF0YWJhc2UgZmlyc3Qgc28gYXMgdGhlIHdv cmtlcnMgY2FuIGNvbm5lY3QgdG8gaXQgd2hlbgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAppbmRleCBlMDdhZmNkNGFhLi41NTQ0N2Q4MDkwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjYzMSw2ICsyNjMxLDEwIEBAIHBnX3ZpZXdzfCBT RUxFQ1Qgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICBGUk9NIChwZ19jbGFzcyBjCiAg ICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiAoKG4ub2lkID0gYy5yZWxuYW1lc3Bh Y2UpKSkKICAgV0hFUkUgKGMucmVsa2luZCA9ICd2Jzo6ImNoYXIiKTsKK3BnX3dhaXRfZXZl bnRzfCBTRUxFQ1QgdHlwZSwKKyAgICBuYW1lLAorICAgIGRlc2NyaXB0aW9uCisgICBGUk9N IHBnX2dldF93YWl0X2V2ZW50cygpIHdlKHR5cGUsIG5hbWUsIGRlc2NyaXB0aW9uKTsKIFNF TEVDVCB0YWJsZW5hbWUsIHJ1bGVuYW1lLCBkZWZpbml0aW9uIEZST00gcGdfcnVsZXMKIFdI RVJFIHNjaGVtYW5hbWUgPSAncGdfY2F0YWxvZycKIE9SREVSIEJZIHRhYmxlbmFtZSwgcnVs ZW5hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDAw MWM2ZTdlYjkuLmFhZTVkNTFlMWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lz dmlld3Mub3V0CkBAIC0xMzQsNiArMTM0LDIyIEBAIHNlbGVjdCBuYW1lLCBzZXR0aW5nIGZy b20gcGdfc2V0dGluZ3Mgd2hlcmUgbmFtZSBsaWtlICdlbmFibGUlJzsKICBlbmFibGVfdGlk c2NhbiAgICAgICAgICAgICAgICAgfCBvbgogKDIxIHJvd3MpCiAKKy0tIFRoZXJlIGFyZSBh bHdheXMgd2FpdCBldmVudCBkZXNjcmlwdGlvbnMgZm9yIHZhcmlvdXMgdHlwZXMuCitzZWxl Y3QgdHlwZSwgY291bnQoKikgPiAwIGFzIG9rIEZST00gcGdfd2FpdF9ldmVudHMKKyAgZ3Jv dXAgYnkgdHlwZSBvcmRlciBieSB0eXBlIENPTExBVEUgIkMiOworICAgdHlwZSAgICB8IG9r IAorLS0tLS0tLS0tLS0rLS0tLQorIEFjdGl2aXR5ICB8IHQKKyBCdWZmZXJQaW4gfCB0Cisg Q2xpZW50ICAgIHwgdAorIEV4dGVuc2lvbiB8IHQKKyBJTyAgICAgICAgfCB0CisgSVBDICAg ICAgIHwgdAorIExXTG9jayAgICB8IHQKKyBMb2NrICAgICAgfCB0CisgVGltZW91dCAgIHwg dAorKDkgcm93cykKKwogLS0gVGVzdCB0aGF0IHRoZSBwZ190aW1lem9uZV9uYW1lcyBhbmQg cGdfdGltZXpvbmVfYWJicmV2cyB2aWV3cyBhcmUKIC0tIG1vcmUtb3ItbGVzcyB3b3JraW5n LiAgV2UgY2FuJ3QgdGVzdCB0aGVpciBjb250ZW50cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCiAt LSB3aXRob3V0IHRoZSBvdXRwdXRzIGNoYW5naW5nIGFueXRpbWUgSUFOQSB1cGRhdGVzIHRo ZSB1bmRlcmx5aW5nIGRhdGEsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9z eXN2aWV3cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zeXN2aWV3cy5zcWwKaW5kZXgg MzUxZTQ2OWM3Ny4uNmI0ZTI0NjAxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvc3lzdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N5c3ZpZXdzLnNx bApAQCAtNTUsNiArNTUsMTAgQEAgc2VsZWN0IGNvdW50KCopID0gMCBhcyBvayBmcm9tIHBn X3N0YXRfd2FsX3JlY2VpdmVyOwogLS0gYSByZWdyZXNzaW9uIHRlc3QgcnVuLgogc2VsZWN0 IG5hbWUsIHNldHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJs ZSUnOwogCistLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZv ciB2YXJpb3VzIHR5cGVzLgorc2VsZWN0IHR5cGUsIGNvdW50KCopID4gMCBhcyBvayBGUk9N IHBnX3dhaXRfZXZlbnRzCisgIGdyb3VwIGJ5IHR5cGUgb3JkZXIgYnkgdHlwZSBDT0xMQVRF ICJDIjsKKwogLS0gVGVzdCB0aGF0IHRoZSBwZ190aW1lem9uZV9uYW1lcyBhbmQgcGdfdGlt ZXpvbmVfYWJicmV2cyB2aWV3cyBhcmUKIC0tIG1vcmUtb3ItbGVzcyB3b3JraW5nLiAgV2Ug Y2FuJ3QgdGVzdCB0aGVpciBjb250ZW50cyBpbiBhbnkgZ3JlYXQgZGV0YWlsCiAtLSB3aXRo b3V0IHRoZSBvdXRwdXRzIGNoYW5naW5nIGFueXRpbWUgSUFOQSB1cGRhdGVzIHRoZSB1bmRl cmx5aW5nIGRhdGEsCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbSBi L3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCmluZGV4IGM5OGExZTlmOWEuLmE1MGY3MzAy NjAgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCisrKyBiL3NyYy90 b29scy9tc3ZjL1NvbHV0aW9uLnBtCkBAIC01ODgsNyArNTg4LDggQEAgc3ViIEdlbmVyYXRl RmlsZXMKIAkJCSdzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50X3R5cGVzLmgnLAogCQkJ J3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0JykpCiAJ ewotCQlwcmludCAiR2VuZXJhdGluZyBwZ3N0YXRfd2FpdF9ldmVudC5jIGFuZCB3YWl0X2V2 ZW50X3R5cGVzLmguLi5cbiI7CisJCXByaW50CisJCSAgIkdlbmVyYXRpbmcgcGdzdGF0X3dh aXRfZXZlbnQuYywgd2FpdF9ldmVudF90eXBlcy5oIGFuZCB3YWl0X2V2ZW50X2Z1bmNzX2Rh dGEuYy4uLlxuIjsKIAkJbXkgJGFjdGl2ID0gJ3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 JzsKIAkJc3lzdGVtKAogCQkJInBlcmwgJGFjdGl2L2dlbmVyYXRlLXdhaXRfZXZlbnRfdHlw ZXMucGwgLS1vdXRkaXIgJGFjdGl2IC0tY29kZSAkYWN0aXYvd2FpdF9ldmVudF9uYW1lcy50 eHQiCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9jbGVhbi5iYXQgYi9zcmMvdG9vbHMv bXN2Yy9jbGVhbi5iYXQKaW5kZXggN2NiMjNlYTg5NC4uYWM4ZGE1ODFlNCAxMDA3NTUKLS0t IGEvc3JjL3Rvb2xzL21zdmMvY2xlYW4uYmF0CisrKyBiL3NyYy90b29scy9tc3ZjL2NsZWFu LmJhdApAQCAtNTUsNiArNTUsNyBAQCBpZiBleGlzdCBzcmNcaW5jbHVkZVxjYXRhbG9nXGhl YWRlci1zdGFtcCBkZWwgL3Egc3JjXGluY2x1ZGVcY2F0YWxvZ1xoZWFkZXItc3RhbQogaWYg ZXhpc3QgZG9jXHNyY1xzZ21sXHZlcnNpb24uc2dtbCBkZWwgL3EgZG9jXHNyY1xzZ21sXHZl cnNpb24uc2dtbAogCiBpZiAlRElTVCU9PTEgaWYgZXhpc3Qgc3JjXGJhY2tlbmRcdXRpbHNc YWN0aXZpdHlccGdzdGF0X3dhaXRfZXZlbnQuYyBkZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNc YWN0aXZpdHlccGdzdGF0X3dhaXRfZXZlbnQuYworaWYgJURJU1QlPT0xIGlmIGV4aXN0IHNy Y1xiYWNrZW5kXHV0aWxzXGFjdGl2aXR5XHdhaXRfZXZlbnRfZnVuY3NfZGF0YS5jIGRlbCAv cSBzcmNcYmFja2VuZFx1dGlsc1xhY3Rpdml0eVx3YWl0X2V2ZW50X2Z1bmNzX2RhdGEuYwog aWYgJURJU1QlPT0xIGlmIGV4aXN0IHNyY1xiYWNrZW5kXHV0aWxzXGFjdGl2aXR5XHdhaXRf ZXZlbnRfdHlwZXMuaCBkZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNcYWN0aXZpdHlcd2FpdF9l dmVudF90eXBlcy5oCiBpZiAlRElTVCU9PTEgaWYgZXhpc3Qgc3JjXGJhY2tlbmRcdXRpbHNc Zm1ncm9pZHMuaCBkZWwgL3Egc3JjXGJhY2tlbmRcdXRpbHNcZm1ncm9pZHMuaAogaWYgJURJ U1QlPT0xIGlmIGV4aXN0IHNyY1xiYWNrZW5kXHV0aWxzXGZtZ3Jwcm90b3MuaCBkZWwgL3Eg c3JjXGJhY2tlbmRcdXRpbHNcZm1ncnByb3Rvcy5oCi0tIAoyLjM0LjEKCg== --------------lKlvL2c7ifVTUvyIbHFhcd6j--