Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oqs2l-00076S-Ak for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Nov 2022 08:27:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oqs2k-0003oG-0Q for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Nov 2022 08:27:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oqs2j-0003mN-Ho for pgsql-hackers@lists.postgresql.org; Fri, 04 Nov 2022 08:27:13 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oqs2h-0007qN-4K for pgsql-hackers@lists.postgresql.org; Fri, 04 Nov 2022 08:27:13 +0000 Received: by mail-wm1-x32a.google.com with SMTP id ja4-20020a05600c556400b003cf6e77f89cso5024557wmb.0 for ; Fri, 04 Nov 2022 01:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=bZTnacHivaOqTP+d6pePUpmLJK5ReIQ8W9BkIEwEV2A=; b=F2UCU0JL9PYiDFIOB0JNxUBIKh+N7QxlxikWz6AD71LA3Nw1/oCP9VuCGYB0DI46z3 C2byq3w2pPek1nRplfbWtpg98heZDqXtaSsjX165hP8kUG8b4d8C0I9cuOsJ1K6hBJu7 +XbycSR74HdPn3r4vK3XKQYaQG8FJWSWb3PqQ4MFLptGOmi6+y0+MkeSbkZEL74Ss/43 t9sJ41/mVbuAEbIC0BGsHPiZ408pQpDQn23FZOSLA6hgsD4wDC0xepmn5lQofKZliAFz 3zpSLVgYFT0TCcTvhnYRFI1UBieXbkqw0/YFk6dgZsSxeewTGIw6k8uMhon2iVLAn6nK HcJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=bZTnacHivaOqTP+d6pePUpmLJK5ReIQ8W9BkIEwEV2A=; b=44JJy82p4ycyePW1dd7vPqPMnfqSmLj8nVABrfQ5qbvOS10hDGoK065eXm6yytUGdp 4gjSq3zZCrbF5hpvyarWrK6kRbk8XlJ5xbtirsXsLeYukRDEr2EwWHX8F7qQtUw/tATe fTX0YPlcNGiCLS5cLDI8C76eyQFlhMls9It0HELCOonwP84wKafnkTZEWNzCcT6TZPDN eJrmJ2y+WjseixCien1WlNNV2XrRAmHDs/wdGqQW9p529syiquKDZn98NvKsakUZTaeP 7ThGNFu5v6jvy2uGjsKSbNy1zuy4uTcsu6QrrZll4weqi/gSrBUy5Fwpqic7Nl/d2ybA MB9g== X-Gm-Message-State: ACrzQf0mdcWnySBe1HDCiplWZ8HuFFkAMRaqcyPRS4hH6PydEwWtlCph 6+TtjDpiSbdOmIuTLCHpDcbEJamob0qpFA== X-Google-Smtp-Source: AMsMyM7PHZpMBiDLyyjGofwsXqcOTbZpld976XDR3Gu1aZMF62hEZnq+jiMzy5nWvGjfyHMuxkSchQ== X-Received: by 2002:a05:600c:26d1:b0:3cf:7b67:f490 with SMTP id 17-20020a05600c26d100b003cf7b67f490mr14523235wmv.164.1667550430083; Fri, 04 Nov 2022 01:27:10 -0700 (PDT) Received: from [192.168.6.61] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id p10-20020a5d48ca000000b00228daaa84aesm2851139wrs.25.2022.11.04.01.27.08 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Nov 2022 01:27:09 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------hKtZVtnHCVwrPlef0b0fb4pk" Message-ID: Date: Fri, 4 Nov 2022 09:25:52 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Subject: Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) To: Nitin Jadhav , Andres Freund Cc: Bharath Rupireddy , Matthias van de Meent , Ashutosh Sharma , Julien Rouhaud , Bruce Momjian , Tom Lane , Magnus Hagander , PostgreSQL Hackers References: <20220319001556.atuqbmafvc73pa2k@alap3.anarazel.de> <20220707000446.hefgyu5xikxwt4md@alap3.anarazel.de> Content-Language: en-US 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. --------------hKtZVtnHCVwrPlef0b0fb4pk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 7/28/22 11:38 AM, Nitin Jadhav wrote: >>> To understand the performance effects of the above, I have taken the >>> average of five checkpoints with the patch and without the patch in my >>> environment. Here are the results. >>> With patch: 269.65 s >>> Without patch: 269.60 s >> >> Those look like timed checkpoints - if the checkpoints are sleeping a >> part of the time, you're not going to see any potential overhead. > > Yes. The above data is collected from timed checkpoints. > > create table t1(a int); > insert into t1 select * from generate_series(1,10000000); > > I generated a lot of data by using the above queries which would in > turn trigger the checkpoint (wal). > --- > >> To see whether this has an effect you'd have to make sure there's a >> certain number of dirty buffers (e.g. by doing CREATE TABLE AS >> some_query) and then do a manual checkpoint and time how long that >> times. > > For this case I have generated data by using below queries. > > create table t1(a int); > insert into t1 select * from generate_series(1,8000000); > > This does not trigger the checkpoint automatically. I have issued the > CHECKPOINT manually and measured the performance by considering an > average of 5 checkpoints. Here are the details. > > With patch: 2.457 s > Without patch: 2.334 s > > Please share your thoughts. > v6 was not applying anymore, due to a change in doc/src/sgml/ref/checkpoint.sgml done by b9eb0ff09e (Rename pg_checkpointer predefined role to pg_checkpoint). Please find attached a rebase in v7. While working on this rebase, I also noticed that "pg_checkpointer" is still mentioned in some translation files: " $ git grep pg_checkpointer src/backend/po/de.po:msgid "must be superuser or have privileges of pg_checkpointer to do CHECKPOINT" src/backend/po/ja.po:msgid "must be superuser or have privileges of pg_checkpointer to do CHECKPOINT" src/backend/po/ja.po:msgstr "CHECKPOINTを実行するにはスーパーユーザーであるか、またはpg_checkpointerの権限を持つ必要があります" src/backend/po/sv.po:msgid "must be superuser or have privileges of pg_checkpointer to do CHECKPOINT" " I'm not familiar with how the translation files are handled (looks like they have their own set of commits, see 3c0bcdbc66 for example) but wanted to mention that "pg_checkpointer" is still mentioned (even if that may be expected as the last commit related to translation files (aka 3c0bcdbc66) is older than the one that renamed pg_checkpointer to pg_checkpoint (aka b9eb0ff09e)). That said, back to this patch: I did not look closely but noticed that the buffers_total reported by pg_stat_progress_checkpoint: postgres=# select type,flags,start_lsn,phase,buffers_total,new_requests from pg_stat_progress_checkpoint; type | flags | start_lsn | phase | buffers_total | new_requests ------------+-----------------------+------------+-----------------------+---------------+-------------- checkpoint | immediate force wait | 1/E6C523A8 | checkpointing buffers | 1024275 | false (1 row) is a little bit different from what is logged once completed: 2022-11-04 08:18:50.806 UTC [3488442] LOG: checkpoint complete: wrote 1024278 buffers (97.7%); Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------hKtZVtnHCVwrPlef0b0fb4pk Content-Type: text/plain; charset=UTF-8; name="v7-0001-pg_stat_progress_checkpoint-view.patch" Content-Disposition: attachment; filename="v7-0001-pg_stat_progress_checkpoint-view.patch" Content-Transfer-Encoding: base64 Y29tbWl0IDUxOThmNTAxMGJlMGZlYmQwMTliMTg4ODgxN2UyZDc4YjhlNDJiMjEKQXV0aG9y OiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpEYXRlOiAgIFRodSBOb3YgMyAxMjo1 OToxMCAyMDIyICswMDAwCgogICAgdjctMDAwMS1wZ19zdGF0X3Byb2dyZXNzX2NoZWNrcG9p bnQtdmlldy5wYXRjaAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGU1ZDYyMmQ1MTQuLmNl YjdkNjBmZmEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDE0LDYgKzQxNCwxMyBAQCBw b3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAx MTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSdj b3B5LXByb2dyZXNzLXJlcG9ydGluZycvPi4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVjdG5hbWU+cGdfc3RhdF9wcm9n cmVzc19jaGVja3BvaW50PC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+PHByaW1hcnk+cGdfc3Rh dF9wcm9ncmVzc19jaGVja3BvaW50PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvZW50cnk+Cisg ICAgICA8ZW50cnk+T25lIHJvdyBvbmx5LCBzaG93aW5nIHRoZSBwcm9ncmVzcyBvZiB0aGUg Y2hlY2twb2ludC4KKyAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0nY2hlY2twb2ludC1wcm9n cmVzcy1yZXBvcnRpbmcnLz4uCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CkBAIC01Nzg0LDcgKzU3OTEsNyBA QCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICB3 aGljaCBzdXBwb3J0IHByb2dyZXNzIHJlcG9ydGluZyBhcmUgPGNvbW1hbmQ+QU5BTFlaRTwv Y29tbWFuZD4sCiAgICA8Y29tbWFuZD5DTFVTVEVSPC9jb21tYW5kPiwKICAgIDxjb21tYW5k PkNSRUFURSBJTkRFWDwvY29tbWFuZD4sIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4sCi0g ICA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiwKKyAgIDxjb21tYW5kPkNPUFk8L2NvbW1hbmQ+ LCA8Y29tbWFuZD5DSEVDS1BPSU5UPC9jb21tYW5kPgogICAgYW5kIDx4cmVmIGxpbmtlbmQ9 InByb3RvY29sLXJlcGxpY2F0aW9uLWJhc2UtYmFja3VwIi8+IChpLmUuLCByZXBsaWNhdGlv bgogICAgY29tbWFuZCB0aGF0IDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ2Jhc2ViYWNrdXAiLz4g aXNzdWVzIHRvIHRha2UKICAgIGEgYmFzZSBiYWNrdXApLgpAQCAtNzA3Miw2ICs3MDc5LDQw MiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7CiAg IDwvdGFibGU+CiAgPC9zZWN0Mj4KIAorIDxzZWN0MiBpZD0iY2hlY2twb2ludC1wcm9ncmVz cy1yZXBvcnRpbmciPgorICA8dGl0bGU+Q2hlY2twb2ludCBQcm9ncmVzcyBSZXBvcnRpbmc8 L3RpdGxlPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJpbWFyeT5wZ19zdGF0X3Byb2dyZXNz X2NoZWNrcG9pbnQ8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAg V2hlbmV2ZXIgdGhlIGNoZWNrcG9pbnQgb3BlcmF0aW9uIGlzIHJ1bm5pbmcsIHRoZQorICAg PHN0cnVjdG5hbWU+cGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50PC9zdHJ1Y3RuYW1lPiB2 aWV3IHdpbGwgY29udGFpbiBhCisgICBzaW5nbGUgcm93IGluZGljYXRpbmcgdGhlIHByb2dy ZXNzIG9mIHRoZSBjaGVja3BvaW50LiBUaGUgdGFibGVzIGJlbG93CisgICBkZXNjcmliZSB0 aGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGFuZCBwcm92aWRlIGluZm9y bWF0aW9uIGFib3V0CisgICBob3cgdG8gaW50ZXJwcmV0IGl0LgorICA8L3BhcmE+CisKKyAg PHRhYmxlIGlkPSJwZy1zdGF0LXByb2dyZXNzLWNoZWNrcG9pbnQtdmlldyIgeHJlZmxhYmVs PSJwZ19zdGF0X3Byb2dyZXNzX2NoZWNrcG9pbnQiPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1l PnBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwvc3RydWN0bmFtZT4gVmlldzwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBpZDwvc3RydWN0ZmllbGQ+ IDx0eXBlPmludGVnZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBQcm9jZXNzIElEIG9mIHRoZSBjaGVja3BvaW50ZXIgcHJvY2Vzcy4KKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRl eHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUeXBlIG9m IHRoZSBjaGVja3BvaW50LiBTZWUgPHhyZWYgbGlua2VuZD0iY2hlY2twb2ludC10eXBlcyIv Pi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZp ZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgRmxhZ3Mgb2YgdGhlIGNoZWNrcG9pbnQuIFNlZSA8eHJlZiBsaW5rZW5kPSJjaGVj a3BvaW50LWZsYWdzIi8+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5z dGFydF9sc248L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGNoZWNrcG9pbnQgc3RhcnQgbG9jYXRpb24u CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN0YXJ0X3RpbWU8L3N0cnVj dGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBTdGFydCB0aW1lIG9mIHRoZSBjaGVja3Bv aW50LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5waGFzZTwvc3RydWN0 ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBDdXJyZW50IHByb2Nlc3NpbmcgcGhhc2UuIFNlZSA8eHJlZiBsaW5rZW5kPSJj aGVja3BvaW50LXBoYXNlcyIvPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0Zmll bGQ+YnVmZmVyc190b3RhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRvdGFsIG51bWJlciBvZiBidWZm ZXJzIHRvIGJlIHdyaXR0ZW4uIFRoaXMgaXMgZXN0aW1hdGVkIGFuZCByZXBvcnRlZAorICAg ICAgIGFzIG9mIHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyIHdyaXRlIG9wZXJhdGlvbi4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YnVmZmVyc19wcm9jZXNzZWQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYnVmZmVycyBwcm9jZXNzZWQuIFRoaXMgY291bnRl ciBpbmNyZWFzZXMgd2hlbiB0aGUgdGFyZ2V0ZWQKKyAgICAgICBidWZmZXIgaXMgcHJvY2Vz c2VkLiBUaGlzIG51bWJlciB3aWxsIGV2ZW50dWFsbHkgYmVjb21lIGVxdWFsIHRvCisgICAg ICAgPGxpdGVyYWw+YnVmZmVyc190b3RhbDwvbGl0ZXJhbD4gd2hlbiB0aGUgY2hlY2twb2lu dCBpcworICAgICAgIGNvbXBsZXRlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5idWZmZXJzX3dyaXR0ZW48L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgYnVmZmVy cyB3cml0dGVuLiBUaGlzIGNvdW50ZXIgb25seSBhZHZhbmNlcyB3aGVuIHRoZSB0YXJnZXRl ZAorICAgICAgIGJ1ZmZlcnMgaXMgd3JpdHRlbi4gTm90ZSB0aGF0IHNvbWUgb2YgdGhlIGJ1 ZmZlcnMgYXJlIHByb2Nlc3NlZCBidXQgbWF5CisgICAgICAgbm90IHJlcXVpcmVkIHRvIGJl IHdyaXR0ZW4uIFNvIHRoaXMgY291bnQgd2lsbCBhbHdheXMgYmUgIGxlc3MgdGhhbiBvcgor ICAgICAgIGVxdWFsIHRvICA8bGl0ZXJhbD5idWZmZXJzX3RvdGFsPC9saXRlcmFsPi4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZmlsZXNfdG90YWw8L3N0cnVjdGZp ZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBUb3RhbCBudW1iZXIgb2YgZmlsZXMgdG8gYmUgc3luY2VkLiBUaGlzIGlzIGVz dGltYXRlZCBhbmQgcmVwb3J0ZWQgYXMgb2YKKyAgICAgICB0aGUgYmVnaW5uaW5nIG9mIHN5 bmMgb3BlcmF0aW9uLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5maWxl c19zeW5jZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgZmlsZXMgc3luY2VkLiBUaGlz IGNvdW50ZXIgYWR2YW5jZXMgd2hlbiB0aGUgdGFyZ2V0ZWQgZmlsZSBpcworICAgICAgIHN5 bmNlZC4gVGhpcyBudW1iZXIgd2lsbCBldmVudHVhbGx5IGJlY29tZSBlcXVhbCB0bworICAg ICAgIDxsaXRlcmFsPmZpbGVzX3RvdGFsPC9saXRlcmFsPiAgd2hlbiB0aGUgY2hlY2twb2lu dCBpcyBjb21wbGV0ZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bmV3 X3JlcXVlc3RzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYW55IG9mIHRoZSBiYWNrZW5kIGlz IHJlcXVlc3RlZCBmb3IgYSBjaGVja3BvaW50IHdoaWxlIHRoZQorICAgICAgIGN1cnJlbnQg Y2hlY2twb2ludCBpcyBpbiBwcm9ncmVzcywgRmFsc2Ugb3RoZXJ3aXNlLgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4K KyAgPC90YWJsZT4KKworICA8dGFibGUgaWQ9ImNoZWNrcG9pbnQtdHlwZXMiPgorICAgPHRp dGxlPkNoZWNrcG9pbnQgVHlwZXM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIyIj4KKyAg ICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wxIiBjb2x3aWR0aD0iMSoiLz4KKyAgICA8Y29sc3Bl YyBjb2xuYW1lPSJjb2wyIiBjb2x3aWR0aD0iMioiLz4KKyAgICA8dGhlYWQ+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+VHlwZXM8L2VudHJ5PgorICAgICAgPGVudHJ5PkRlc2NyaXB0 aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAgICA8dGJvZHk+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludDwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjdXJyZW50IG9wZXJhdGlvbiBp cyBjaGVja3BvaW50LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cmVzdGFydHBvaW50PC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGN1cnJlbnQgb3BlcmF0aW9uIGlzIHJlc3Rh cnRwb2ludC4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+Cisg ICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworICA8dGFibGUgaWQ9ImNoZWNrcG9pbnQtZmxh Z3MiPgorICAgPHRpdGxlPkNoZWNrcG9pbnQgRmxhZ3M8L3RpdGxlPgorICAgPHRncm91cCBj b2xzPSIyIj4KKyAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wxIiBjb2x3aWR0aD0iMSoiLz4K KyAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wyIiBjb2x3aWR0aD0iMioiLz4KKyAgICA8dGhl YWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+RmxhZ3M8L2VudHJ5PgorICAgICAgPGVu dHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c2h1dGRvd248 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2lu dCBpcyBmb3Igc2h1dGRvd24uCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5lbmQtb2YtcmVjb3Zlcnk8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludCBpcyBmb3Ig ZW5kLW9mLXJlY292ZXJ5LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+aW1tZWRpYXRlPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnQgaGFwcGVucyB3aXRob3V0 IGRlbGF5cy4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxsaXRlcmFsPmZvcmNlPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50 cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnQgaXMgc3RhcnRlZCBiZWNhdXNlIHNvbWUgb3Bl cmF0aW9uIChmb3Igd2hpY2ggdGhlCisgICAgICAgY2hlY2twb2ludCBpcyBuZWNlc3Nhcnkp IGZvcmNlZCBhIGNoZWNrcG9pbnQuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5mbHVzaCBhbGw8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludCBmbHVzaGVzIGFs bCBwYWdlcywgaW5jbHVkaW5nIHRob3NlIGJlbG9uZ2luZyB0byB1bmxvZ2dlZAorICAgICAg IHRhYmxlcy4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxsaXRlcmFsPndhaXQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT4KKyAgICAgICBUaGUgb3BlcmF0aW9ucyB3aGljaCByZXF1ZXN0ZWQgdGhlIGNoZWNrcG9p bnQgd2FpdHMgZm9yIGNvbXBsZXRpb24KKyAgICAgICBiZWZvcmUgcmV0dXJuaW5nLgorICAg ICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAgICAgPGVudHJ5Pjxs aXRlcmFsPnJlcXVlc3RlZDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAg ICAgIFRoZSBjaGVja3BvaW50IHJlcXVlc3QgaGFzIGJlZW4gbWFkZS4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPndh bDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3Bv aW50IGlzIHN0YXJ0ZWQgYmVjYXVzZSA8bGl0ZXJhbD5tYXhfd2FsX3NpemU8L2xpdGVyYWw+ IGlzCisgICAgICAgcmVhY2hlZC4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAg ICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRpbWU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludCBpcyBzdGFydGVkIGJlY2F1 c2UgPGxpdGVyYWw+Y2hlY2twb2ludF90aW1lb3V0PC9saXRlcmFsPgorICAgICAgIGV4cGly ZWQuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisKKyAgPHRhYmxlIGlkPSJjaGVja3BvaW50LXBoYXNlcyI+ CisgICA8dGl0bGU+Q2hlY2twb2ludCBQaGFzZXM8L3RpdGxlPgorICAgPHRncm91cCBjb2xz PSIyIj4KKyAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wxIiBjb2x3aWR0aD0iMSoiLz4KKyAg ICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wyIiBjb2x3aWR0aD0iMioiLz4KKyAgICA8dGhlYWQ+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+UGhhc2U8L2VudHJ5PgorICAgICAgPGVudHJ5 PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKyAgICA8 dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+aW5pdGlhbGl6aW5n PC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9p bnRlciBwcm9jZXNzIGlzIHByZXBhcmluZyB0byBiZWdpbiB0aGUgY2hlY2twb2ludCBvcGVy YXRpb24uCisgICAgICAgVGhpcyBwaGFzZSBpcyBleHBlY3RlZCB0byBiZSB2ZXJ5IGJyaWVm LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpdGVyYWw+Z2V0dGluZyB2aXJ0dWFsIHRyYW5zYWN0aW9uIElEczwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2Vz cyBpcyBnZXR0aW5nIHRoZSB2aXJ0dWFsIHRyYW5zYWN0aW9uIElEcyB0aGF0CisgICAgICAg YXJlIGRlbGF5aW5nIHRoZSBjaGVja3BvaW50LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBy ZXBsaWNhdGlvbiBzbG90czwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAg ICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgZmx1c2hpbmcgYWxs IHRoZSByZXBsaWNhdGlvbiBzbG90cworICAgICAgIHRvIGRpc2suCisgICAgICA8L2VudHJ5 PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVj a3BvaW50aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gc25hcHNob3QgZmlsZXM8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHByb2Nl c3MgaXMgY3VycmVudGx5IHJlbW92aW5nIGFsbCB0aGUgc2VyaWFsaXplZAorICAgICAgIHNu YXBzaG90IGZpbGVzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBhbnltb3JlLgorICAgICAgPC9l bnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ Y2hlY2twb2ludGluZyBsb2dpY2FsIHJld3JpdGUgbWFwcGluZyBmaWxlczwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2Vz cyBpcyBjdXJyZW50bHkgcmVtb3ZpbmcgdW53YW50ZWQgb3IgZmx1c2hpbmcKKyAgICAgICBy ZXF1aXJlZCBsb2dpY2FsIHJld3JpdGUgbWFwcGluZyBmaWxlcy4KKyAgICAgIDwvZW50cnk+ CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmNoZWNr cG9pbnRpbmcgcmVwbGljYXRpb24gb3JpZ2luPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8 ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSBw ZXJmb3JtaW5nIGEgY2hlY2twb2ludCBvZiBlYWNoCisgICAgICAgcmVwbGljYXRpb24gb3Jp Z2luJ3MgcHJvZ3Jlc3Mgd2l0aCByZXNwZWN0IHRvIHRoZSByZXBsYXllZCByZW1vdGUgTFNO LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBjb21taXQgbG9nIHBhZ2VzPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNz IGlzIGN1cnJlbnRseSB3cml0aW5nIGNvbW1pdCBsb2cgcGFnZXMgdG8gZGlzay4KKyAgICAg IDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRl cmFsPmNoZWNrcG9pbnRpbmcgY29tbWl0IHRpbWUgc3RhbXAgcGFnZXM8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3Mg aXMgY3VycmVudGx5IHdyaXRpbmcgY29tbWl0IHRpbWUgc3RhbXAgcGFnZXMgdG8KKyAgICAg ICBkaXNrLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBzdWJ0cmFuc2FjdGlvbiBwYWdlczwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50 ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgd3JpdGluZyBzdWJ0cmFuc2FjdGlvbiBwYWdlcyB0 byBkaXNrLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBtdWx0aXhhY3QgcGFnZXM8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHBy b2Nlc3MgaXMgY3VycmVudGx5IHdyaXRpbmcgbXVsdGl4YWN0IHBhZ2VzIHRvIGRpc2suCisg ICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5jaGVja3BvaW50aW5nIHByZWRpY2F0ZSBsb2NrIHBhZ2VzPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNz IGlzIGN1cnJlbnRseSB3cml0aW5nIHByZWRpY2F0ZSBsb2NrIHBhZ2VzIHRvIGRpc2suCisg ICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5jaGVja3BvaW50aW5nIGJ1ZmZlcnM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVudGx5 IHdyaXRpbmcgYnVmZmVycyB0byBkaXNrLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cHJvY2Vzc2luZyBmaWxlIHN5 bmMgcmVxdWVzdHM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBU aGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgZmlsZSBz eW5jIHJlcXVlc3RzLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyZm9ybWluZyB0d28gcGhhc2UgY2hlY2twb2lu dDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3Bv aW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgcGVyZm9ybWluZyB0d28gcGhhc2UgY2hlY2tw b2ludC4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAg PGVudHJ5PjxsaXRlcmFsPnBlcmZvcm1pbmcgcG9zdCBjaGVja3BvaW50IGNsZWFudXA8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVy IHByb2Nlc3MgaXMgY3VycmVudGx5IHBlcmZvcm1pbmcgcG9zdCBjaGVja3BvaW50IGNsZWFu dXAuCisgICAgICAgSXQgcmVtb3ZlcyBhbnkgbGluZ2VyaW5nIGZpbGVzIHRoYXQgY2FuIGJl IHNhZmVseSByZW1vdmVkLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+aW52YWxpZGF0aW5nIHJlcGxpY2F0aW9uIHNs b3RzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNr cG9pbnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSBpbnZhbGlkYXRpbmcgcmVwbGljYXRpb24g c2xvdHMuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5yZWN5Y2xpbmcgb2xkIFdBTCBmaWxlczwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBp cyBjdXJyZW50bHkgcmVjeWNsaW5nIG9sZCBXQUwgZmlsZXMuCisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50cnVuY2F0 aW5nIHN1YnRyYW5zYWN0aW9uczwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pgor ICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgcmVtb3Zpbmcg dGhlIHN1YnRyYW5zYWN0aW9uCisgICAgICAgc2VnbWVudHMuCisgICAgICA8L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5maW5hbGl6 aW5nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNr cG9pbnRlciBwcm9jZXNzIGlzIGZpbmFsaXppbmcgdGhlIGNoZWNrcG9pbnQgb3BlcmF0aW9u LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdy b3VwPgorICA8L3RhYmxlPgorCisgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEg aWQ9ImR5bmFtaWMtdHJhY2UiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jaGVj a3BvaW50LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NoZWNrcG9pbnQuc2dtbAppbmRleCAy OGExZDcxN2I4Li45MDY4ODMzMzZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2No ZWNrcG9pbnQuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NoZWNrcG9pbnQuc2dtbApA QCAtNTUsNiArNTUsMTQgQEAgQ0hFQ0tQT0lOVAogICAgT25seSBzdXBlcnVzZXJzIG9yIHVz ZXJzIHdpdGggdGhlIHByaXZpbGVnZXMgb2YKICAgIHRoZSA8bGluayBsaW5rZW5kPSJwcmVk ZWZpbmVkLXJvbGVzLXRhYmxlIj48bGl0ZXJhbD5wZ19jaGVja3BvaW50PC9saXRlcmFsPjwv bGluaz4KICAgIHJvbGUgY2FuIGNhbGwgPGNvbW1hbmQ+Q0hFQ0tQT0lOVDwvY29tbWFuZD4u CisKKyAgPHBhcmE+CisgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzIHJ1bm5pbmcgdGhl IGNoZWNrcG9pbnQgd2lsbCByZXBvcnQgaXRzIHByb2dyZXNzCisgICAgaW4gdGhlIDxzdHJ1 Y3RuYW1lPnBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwvc3RydWN0bmFtZT4gdmlldyBl eGNlcHQgZm9yCisgICAgdGhlIHNodXRkb3duIGFuZCBlbmQtb2YtcmVjb3ZlcnkgY2FzZXMu IFNlZQorICAgIDx4cmVmIGxpbmtlbmQ9ImNoZWNrcG9pbnQtcHJvZ3Jlc3MtcmVwb3J0aW5n Ii8+IGZvciBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC93YWwuc2dtbCBiL2RvYy9zcmMvc2dtbC93 YWwuc2dtbAppbmRleCA2YTM4YjUzNzQ0Li43MzNhOGQyODM3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvd2FsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3dhbC5zZ21sCkBAIC01MzEs NyArNTMxLDExIEBACiAgICBhZGp1c3QgdGhlIDx4cmVmIGxpbmtlbmQ9Imd1Yy1hcmNoaXZl LXRpbWVvdXQiLz4gcGFyYW1ldGVyIHJhdGhlciB0aGFuIHRoZQogICAgY2hlY2twb2ludCBw YXJhbWV0ZXJzLikKICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZm9yY2UgYSBjaGVja3Bv aW50IGJ5IHVzaW5nIHRoZSBTUUwKLSAgIGNvbW1hbmQgPGNvbW1hbmQ+Q0hFQ0tQT0lOVDwv Y29tbWFuZD4uCisgICBjb21tYW5kIDxjb21tYW5kPkNIRUNLUE9JTlQ8L2NvbW1hbmQ+LiBU aGUgY2hlY2twb2ludGVyIHByb2Nlc3MgcnVubmluZyB0aGUKKyAgIGNoZWNrcG9pbnQgd2ls bCByZXBvcnQgaXRzIHByb2dyZXNzIGluIHRoZQorICAgPHN0cnVjdG5hbWU+cGdfc3RhdF9w cm9ncmVzc19jaGVja3BvaW50PC9zdHJ1Y3RuYW1lPiB2aWV3IGV4Y2VwdCBmb3IgdGhlCisg ICBzaHV0ZG93biBhbmQgZW5kLW9mLXJlY292ZXJ5IGNhc2VzLiBTZWUKKyAgIDx4cmVmIGxp bmtlbmQ9ImNoZWNrcG9pbnQtcHJvZ3Jlc3MtcmVwb3J0aW5nIi8+IGZvciBkZXRhaWxzLgog ICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5k ZXggYmU1NGMyMzE4Ny4uZjJjZWJlMDk3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYwpAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvY2F0dmVyc2lvbi5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfZGF0YWJhc2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1 ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxl X3V0aWxzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgpAQCAtNjk4LDYg KzY5OSw4IEBAIHN0YXRpYyB2b2lkIFdBTEluc2VydExvY2tBY3F1aXJlRXhjbHVzaXZlKHZv aWQpOwogc3RhdGljIHZvaWQgV0FMSW5zZXJ0TG9ja1JlbGVhc2Uodm9pZCk7CiBzdGF0aWMg dm9pZCBXQUxJbnNlcnRMb2NrVXBkYXRlSW5zZXJ0aW5nQXQoWExvZ1JlY1B0ciBpbnNlcnRp bmdBdCk7CiAKK3N0YXRpYyB2b2lkIGNoZWNrcG9pbnRfcHJvZ3Jlc3Nfc3RhcnQoaW50IGZs YWdzLCBpbnQgdHlwZSk7CisKIC8qCiAgKiBJbnNlcnQgYW4gWExPRyByZWNvcmQgcmVwcmVz ZW50ZWQgYnkgYW4gYWxyZWFkeS1jb25zdHJ1Y3RlZCBjaGFpbiBvZiBkYXRhCiAgKiBjaHVu a3MuICBUaGlzIGlzIGEgbG93LWxldmVsIHJvdXRpbmU7IHRvIGNvbnN0cnVjdCB0aGUgV0FM IHJlY29yZCBoZWFkZXIKQEAgLTY2MjIsNiArNjYyNSw5IEBAIENyZWF0ZUNoZWNrUG9pbnQo aW50IGZsYWdzKQogCVhMb2dDdGwtPlJlZG9SZWNQdHIgPSBjaGVja1BvaW50LnJlZG87CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CiAKKwkvKiBQcmVwYXJlIHRv IHJlcG9ydCBwcm9ncmVzcyBvZiB0aGUgY2hlY2twb2ludC4gKi8KKwljaGVja3BvaW50X3By b2dyZXNzX3N0YXJ0KGZsYWdzLCBQUk9HUkVTU19DSEVDS1BPSU5UX1RZUEVfQ0hFQ0tQT0lO VCk7CisKIAkvKgogCSAqIElmIGVuYWJsZWQsIGxvZyBjaGVja3BvaW50IHN0YXJ0LiAgV2Ug cG9zdHBvbmUgdGhpcyB1bnRpbCBub3cgc28gYXMgbm90CiAJICogdG8gbG9nIGFueXRoaW5n IGlmIHdlIGRlY2lkZWQgdG8gc2tpcCB0aGUgY2hlY2twb2ludC4KQEAgLTY3MDQsNiArNjcx MCw4IEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqIGNsb2cgYW5kIHdlIHdp bGwgY29ycmVjdGx5IGZsdXNoIHRoZSB1cGRhdGUgYmVsb3cuICBTbyB3ZSBjYW5ub3QgbWlz cwogCSAqIGFueSB4YWN0cyB3ZSBuZWVkIHRvIHdhaXQgZm9yLgogCSAqLworCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJ CQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfR0VUX1ZJUlRVQUxfVFJBTlNBQ1RJT05f SURTKTsKIAl2eGlkcyA9IEdldFZpcnR1YWxYSURzRGVsYXlpbmdDaGtwdCgmbnZ4aWRzLCBE RUxBWV9DSEtQVF9TVEFSVCk7CiAJaWYgKG52eGlkcyA+IDApCiAJewpAQCAtNjgxOSw2ICs2 ODI3LDggQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJLyoKIAkgKiBMZXQgc21n ciBkbyBwb3N0LWNoZWNrcG9pbnQgY2xlYW51cCAoZWcsIGRlbGV0aW5nIG9sZCBmaWxlcyku CiAJICovCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9QT1NUX0NI RUNLUE9JTlRfQ0xFQU5VUCk7CiAJU3luY1Bvc3RDaGVja3BvaW50KCk7CiAKIAkvKgpAQCAt NjgzNCw2ICs2ODQ0LDkgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJICovCiAJ WExCeXRlVG9TZWcoUmVkb1JlY1B0ciwgX2xvZ1NlZ05vLCB3YWxfc2VnbWVudF9zaXplKTsK IAlLZWVwTG9nU2VnKHJlY3B0ciwgJl9sb2dTZWdObyk7CisJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JF U1NfQ0hFQ0tQT0lOVF9QSEFTRV9JTlZBTElEQVRFX1JFUExJX1NMT1RTKTsKKwogCWlmIChJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObykpCiAJewogCQkv KgpAQCAtNjg0NCw2ICs2ODU3LDggQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJ CUtlZXBMb2dTZWcocmVjcHRyLCAmX2xvZ1NlZ05vKTsKIAl9CiAJX2xvZ1NlZ05vLS07CisJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF LAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9SRUNZQ0xFX09MRF9YTE9H KTsKIAlSZW1vdmVPbGRYbG9nRmlsZXMoX2xvZ1NlZ05vLCBSZWRvUmVjUHRyLCByZWNwdHIs CiAJCQkJCSAgIGNoZWNrUG9pbnQuVGhpc1RpbWVMaW5lSUQpOwogCkBAIC02ODYyLDExICs2 ODc3LDIxIEBAIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKQogCSAqIFN0YXJ0dXBTVUJU UkFOUyBoYXNuJ3QgYmVlbiBjYWxsZWQgeWV0LgogCSAqLwogCWlmICghUmVjb3ZlcnlJblBy b2dyZXNzKCkpCisJeworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFT RV9UUlVOQ0FURV9TVUJUUkFOUyk7CiAJCVRydW5jYXRlU1VCVFJBTlMoR2V0T2xkZXN0VHJh bnNhY3Rpb25JZENvbnNpZGVyZWRSdW5uaW5nKCkpOworCX0KKworCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBS T0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfRklOQUxJWkUpOwogCiAJLyogUmVhbCB3b3JrIGlz IGRvbmU7IGxvZyBhbmQgdXBkYXRlIHN0YXRzLiAqLwogCUxvZ0NoZWNrcG9pbnRFbmQoZmFs c2UpOwogCisJLyogU3RvcCByZXBvcnRpbmcgcHJvZ3Jlc3Mgb2YgdGhlIGNoZWNrcG9pbnQu ICovCisJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CisKIAkvKiBSZXNldCB0aGUg cHJvY2VzcyB0aXRsZSAqLwogCXVwZGF0ZV9jaGVja3BvaW50X2Rpc3BsYXkoZmxhZ3MsIGZh bHNlLCB0cnVlKTsKIApAQCAtNzAyMywyOSArNzA0OCw2MyBAQCBzdGF0aWMgdm9pZAogQ2hl Y2tQb2ludEd1dHMoWExvZ1JlY1B0ciBjaGVja1BvaW50UmVkbywgaW50IGZsYWdzKQogewog CUNoZWNrUG9pbnRSZWxhdGlvbk1hcCgpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hF Q0tQT0lOVF9QSEFTRV9SRVBMSV9TTE9UUyk7CiAJQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xv dHMoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQ T0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU05BUFNI T1RTKTsKIAlDaGVja1BvaW50U25hcEJ1aWxkKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVT U19DSEVDS1BPSU5UX1BIQVNFX0xPR0lDQUxfUkVXUklURV9NQVBQSU5HUyk7CiAJQ2hlY2tQ b2ludExvZ2ljYWxSZXdyaXRlSGVhcCgpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hF Q0tQT0lOVF9QSEFTRV9SRVBMSV9PUklHSU4pOwogCUNoZWNrUG9pbnRSZXBsaWNhdGlvbk9y aWdpbigpOwogCiAJLyogV3JpdGUgb3V0IGFsbCBkaXJ0eSBkYXRhIGluIFNMUlVzIGFuZCB0 aGUgbWFpbiBidWZmZXIgcG9vbCAqLwogCVRSQUNFX1BPU1RHUkVTUUxfQlVGRkVSX0NIRUNL UE9JTlRfU1RBUlQoZmxhZ3MpOwogCUNoZWNrcG9pbnRTdGF0cy5ja3B0X3dyaXRlX3QgPSBH ZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFX0NMT0dfUEFHRVMpOwogCUNoZWNrUG9pbnRDTE9HKCk7CisKKwlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJ CQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0NPTU1JVFRTX1BBR0VTKTsKIAlDaGVj a1BvaW50Q29tbWl0VHMoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRf UEhBU0VfU1VCVFJBTlNfUEFHRVMpOwogCUNoZWNrUG9pbnRTVUJUUkFOUygpOworCisJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAor CQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9NVUxUSVhBQ1RfUEFHRVMpOwog CUNoZWNrUG9pbnRNdWx0aVhhY3QoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNL UE9JTlRfUEhBU0VfUFJFRElDQVRFX0xPQ0tfUEFHRVMpOwogCUNoZWNrUG9pbnRQcmVkaWNh dGUoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQ T0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfQlVGRkVS Uyk7CiAJQ2hlY2tQb2ludEJ1ZmZlcnMoZmxhZ3MpOwogCiAJLyogUGVyZm9ybSBhbGwgcXVl dWVkIHVwIGZzeW5jcyAqLwogCVRSQUNFX1BPU1RHUkVTUUxfQlVGRkVSX0NIRUNLUE9JTlRf U1lOQ19TVEFSVCgpOwogCUNoZWNrcG9pbnRTdGF0cy5ja3B0X3N5bmNfdCA9IEdldEN1cnJl bnRUaW1lc3RhbXAoKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF X1NZTkNfRklMRVMpOwogCVByb2Nlc3NTeW5jUmVxdWVzdHMoKTsKIAlDaGVja3BvaW50U3Rh dHMuY2twdF9zeW5jX2VuZF90ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCVRSQUNFX1BP U1RHUkVTUUxfQlVGRkVSX0NIRUNLUE9JTlRfRE9ORSgpOwogCiAJLyogV2UgZGVsaWJlcmF0 ZWx5IGRlbGF5IDJQQyBjaGVja3BvaW50aW5nIGFzIGxvbmcgYXMgcG9zc2libGUgKi8KKwlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0Us CisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1RXT19QSEFTRSk7CiAJQ2hl Y2tQb2ludFR3b1BoYXNlKGNoZWNrUG9pbnRSZWRvKTsKIH0KIApAQCAtNzE5NSw2ICs3MjU0 LDkgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlNZW1TZXQoJkNoZWNrcG9p bnRTdGF0cywgMCwgc2l6ZW9mKENoZWNrcG9pbnRTdGF0cykpOwogCUNoZWNrcG9pbnRTdGF0 cy5ja3B0X3N0YXJ0X3QgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkvKiBQcmVwYXJl IHRvIHJlcG9ydCBwcm9ncmVzcyBvZiB0aGUgcmVzdGFydHBvaW50LiAqLworCWNoZWNrcG9p bnRfcHJvZ3Jlc3Nfc3RhcnQoZmxhZ3MsIFBST0dSRVNTX0NIRUNLUE9JTlRfVFlQRV9SRVNU QVJUUE9JTlQpOworCiAJaWYgKGxvZ19jaGVja3BvaW50cykKIAkJTG9nQ2hlY2twb2ludFN0 YXJ0KGZsYWdzLCB0cnVlKTsKIApAQCAtNzI3OCw2ICs3MzQwLDkgQEAgQ3JlYXRlUmVzdGFy dFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZy ZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxh eVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFT RSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfSU5WQUxJREFURV9SRVBM SV9TTE9UUyk7CisKIAlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8pKQogCXsKIAkJLyoKQEAgLTczMDQsNiArNzM2OSw4IEBAIENyZWF0ZVJlc3Rh cnRQb2ludChpbnQgZmxhZ3MpCiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJcmVw bGF5VExJID0gWExvZ0N0bC0+SW5zZXJ0VGltZUxpbmVJRDsKIAorCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBS T0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfUkVDWUNMRV9PTERfWExPRyk7CiAJUmVtb3ZlT2xk WGxvZ0ZpbGVzKF9sb2dTZWdObywgUmVkb1JlY1B0ciwgZW5kcHRyLCByZXBsYXlUTEkpOwog CiAJLyoKQEAgLTczMjAsMTEgKzczODcsMjAgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBm bGFncykKIAkgKiB0aGlzIGJlY2F1c2UgU3RhcnR1cFNVQlRSQU5TIGhhc24ndCBiZWVuIGNh bGxlZCB5ZXQuCiAJICovCiAJaWYgKEVuYWJsZUhvdFN0YW5kYnkpCisJeworCQlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJ CQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9UUlVOQ0FURV9TVUJUUkFOUyk7CiAJ CVRydW5jYXRlU1VCVFJBTlMoR2V0T2xkZXN0VHJhbnNhY3Rpb25JZENvbnNpZGVyZWRSdW5u aW5nKCkpOworCX0KIAorCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0Vf RklOQUxJWkUpOwogCS8qIFJlYWwgd29yayBpcyBkb25lOyBsb2cgYW5kIHVwZGF0ZSBzdGF0 cy4gKi8KIAlMb2dDaGVja3BvaW50RW5kKHRydWUpOwogCisJLyogU3RvcCByZXBvcnRpbmcg cHJvZ3Jlc3Mgb2YgdGhlIHJlc3RhcnRwb2ludC4gKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfZW5k X2NvbW1hbmQoKTsKKwogCS8qIFJlc2V0IHRoZSBwcm9jZXNzIHRpdGxlICovCiAJdXBkYXRl X2NoZWNrcG9pbnRfZGlzcGxheShmbGFncywgdHJ1ZSwgdHJ1ZSk7CiAKQEAgLTg5NTgsMyAr OTAzNCwyOSBAQCBTZXRXYWxXcml0ZXJTbGVlcGluZyhib29sIHNsZWVwaW5nKQogCVhMb2dD dGwtPldhbFdyaXRlclNsZWVwaW5nID0gc2xlZXBpbmc7CiAJU3BpbkxvY2tSZWxlYXNlKCZY TG9nQ3RsLT5pbmZvX2xjayk7CiB9CisKKy8qCisgKiBTdGFydCByZXBvcnRpbmcgcHJvZ3Jl c3Mgb2YgdGhlIGNoZWNrcG9pbnQuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja3BvaW50X3By b2dyZXNzX3N0YXJ0KGludCBmbGFncywgaW50IHR5cGUpCit7CisJY29uc3QgaW50CWluZGV4 W10gPSB7CisJCVBST0dSRVNTX0NIRUNLUE9JTlRfVFlQRSwKKwkJUFJPR1JFU1NfQ0hFQ0tQ T0lOVF9GTEFHUywKKwkJUFJPR1JFU1NfQ0hFQ0tQT0lOVF9MU04sCisJCVBST0dSRVNTX0NI RUNLUE9JTlRfU1RBUlRfVElNRVNUQU1QLAorCQlQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF CisJCX07CisJaW50NjQJCXZhbFs1XTsKKworCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21t YW5kKFBST0dSRVNTX0NPTU1BTkRfQ0hFQ0tQT0lOVCwgSW52YWxpZE9pZCk7CisKKwl2YWxb MF0gPSB0eXBlOworCXZhbFsxXSA9IGZsYWdzOworCXZhbFsyXSA9IFJlZG9SZWNQdHI7CisJ dmFsWzNdID0gQ2hlY2twb2ludFN0YXRzLmNrcHRfc3RhcnRfdDsKKwl2YWxbNF0gPSBQUk9H UkVTU19DSEVDS1BPSU5UX1BIQVNFX0lOSVQ7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X211bHRpX3BhcmFtKDUsIGluZGV4LCB2YWwpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAyZDgxMDRi MDkwLi4zODRjYTM1ODMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CkBAIC0xMjY3LDYgKzEyNjcsNTcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19j b3B5IEFTCiAgICAgRlJPTSBwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdDT1BZJykgQVMg UwogICAgICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgRCBPTiBTLmRhdGlkID0gRC5vaWQ7 CiAKK0NSRUFURSBWSUVXIHBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludCBBUworICAgIFNF TEVDVAorICAgICAgICBTLnBpZCBBUyBwaWQsCisgICAgICAgIENBU0UgUy5wYXJhbTEgV0hF TiAxIFRIRU4gJ2NoZWNrcG9pbnQnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRI RU4gJ3Jlc3RhcnRwb2ludCcKKyAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgdHlwZSwK KyAgICAgICAgKCBDQVNFIFdIRU4gKFMucGFyYW0yICYgNCkgPiAwIFRIRU4gJ2ltbWVkaWF0 ZSAnIEVMU0UgJycgRU5EIHx8CisgICAgICAgICAgQ0FTRSBXSEVOIChTLnBhcmFtMiAmIDgp ID4gMCBUSEVOICdmb3JjZSAnIEVMU0UgJycgRU5EIHx8CisgICAgICAgICAgQ0FTRSBXSEVO IChTLnBhcmFtMiAmIDE2KSA+IDAgVEhFTiAnZmx1c2gtYWxsICcgRUxTRSAnJyBFTkQgfHwK KyAgICAgICAgICBDQVNFIFdIRU4gKFMucGFyYW0yICYgMzIpID4gMCBUSEVOICd3YWl0ICcg RUxTRSAnJyBFTkQgfHwKKyAgICAgICAgICBDQVNFIFdIRU4gKFMucGFyYW0yICYgMTI4KSA+ IDAgVEhFTiAnd2FsICcgRUxTRSAnJyBFTkQgfHwKKyAgICAgICAgICBDQVNFIFdIRU4gKFMu cGFyYW0yICYgMjU2KSA+IDAgVEhFTiAndGltZSAnIEVMU0UgJycgRU5ECisgICAgICAgICkg QVMgZmxhZ3MsCisgICAgICAgICggJzAvMCc6OnBnX2xzbiArCisgICAgICAgICAgKChDQVNF CisgICAgICAgICAgICAgICAgV0hFTiBTLnBhcmFtMyA8IDAgVEhFTiBwb3coMjo6bnVtZXJp YywgNjQ6Om51bWVyaWMpOjpudW1lcmljCisgICAgICAgICAgICAgICAgRUxTRSAwOjpudW1l cmljCisgICAgICAgICAgICBFTkQpICsKKyAgICAgICAgICAgUy5wYXJhbTM6Om51bWVyaWMp CisgICAgICAgICkgQVMgc3RhcnRfbHNuLAorICAgICAgICB0b190aW1lc3RhbXAoOTQ2Njg0 ODAwICsgKFMucGFyYW00OjpmbG9hdDggLyAxMDAwMDAwKSkgQVMgc3RhcnRfdGltZSwKKyAg ICAgICAgQ0FTRSBTLnBhcmFtNSBXSEVOIDEgVEhFTiAnaW5pdGlhbGl6aW5nJworICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdnZXR0aW5nIHZpcnR1YWwgdHJhbnNhY3Rp b24gSURzJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdjaGVja3BvaW50 aW5nIHJlcGxpY2F0aW9uIHNsb3RzJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBU SEVOICdjaGVja3BvaW50aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gc25hcHNob3QgZmlsZXMn CisgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2NoZWNrcG9pbnRpbmcgbG9n aWNhbCByZXdyaXRlIG1hcHBpbmcgZmlsZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hF TiA2IFRIRU4gJ2NoZWNrcG9pbnRpbmcgcmVwbGljYXRpb24gb3JpZ2luJworICAgICAgICAg ICAgICAgICAgICAgIFdIRU4gNyBUSEVOICdjaGVja3BvaW50aW5nIGNvbW1pdCBsb2cgcGFn ZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ2NoZWNrcG9pbnRpbmcg Y29tbWl0IHRpbWUgc3RhbXAgcGFnZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5 IFRIRU4gJ2NoZWNrcG9pbnRpbmcgc3VidHJhbnNhY3Rpb24gcGFnZXMnCisgICAgICAgICAg ICAgICAgICAgICAgV0hFTiAxMCBUSEVOICdjaGVja3BvaW50aW5nIG11bHRpeGFjdCBwYWdl cycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDExIFRIRU4gJ2NoZWNrcG9pbnRpbmcg cHJlZGljYXRlIGxvY2sgcGFnZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxMiBU SEVOICdjaGVja3BvaW50aW5nIGJ1ZmZlcnMnCisgICAgICAgICAgICAgICAgICAgICAgV0hF TiAxMyBUSEVOICdwcm9jZXNzaW5nIGZpbGUgc3luYyByZXF1ZXN0cycKKyAgICAgICAgICAg ICAgICAgICAgICBXSEVOIDE0IFRIRU4gJ3BlcmZvcm1pbmcgdHdvIHBoYXNlIGNoZWNrcG9p bnQnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxNSBUSEVOICdwZXJmb3JtaW5nIHBv c3QgY2hlY2twb2ludCBjbGVhbnVwJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMTYg VEhFTiAnaW52YWxpZGF0aW5nIHJlcGxpY2F0aW9uIHNsb3RzJworICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gMTcgVEhFTiAncmVjeWNsaW5nIG9sZCBXQUwgZmlsZXMnCisgICAgICAg ICAgICAgICAgICAgICAgV0hFTiAxOCBUSEVOICd0cnVuY2F0aW5nIHN1YnRyYW5zYWN0aW9u cycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDE5IFRIRU4gJ2ZpbmFsaXppbmcnCisg ICAgICAgICAgICAgICAgICAgICAgRU5EIEFTIHBoYXNlLAorICAgICAgICBTLnBhcmFtNiBB UyBidWZmZXJzX3RvdGFsLAorICAgICAgICBTLnBhcmFtNyBBUyBidWZmZXJzX3Byb2Nlc3Nl ZCwKKyAgICAgICAgUy5wYXJhbTggQVMgYnVmZmVyc193cml0dGVuLAorICAgICAgICBTLnBh cmFtOSBBUyBmaWxlc190b3RhbCwKKyAgICAgICAgUy5wYXJhbTEwIEFTIGZpbGVzX3N5bmNl ZCwKKyAgICAgICAgQ0FTRSBTLnBhcmFtMTEgV0hFTiAwIFRIRU4gJ2ZhbHNlJworICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDEgVEhFTiAndHJ1ZScKKyAgICAgICAgICAgICAgICAg ICAgICAgRU5EIEFTIG5ld19yZXF1ZXN0cworICAgIEZST00gcGdfc3RhdF9nZXRfcHJvZ3Jl c3NfaW5mbygnQ0hFQ0tQT0lOVCcpIEFTIFM7CisKIENSRUFURSBWSUVXIHBnX3VzZXJfbWFw cGluZ3MgQVMKICAgICBTRUxFQ1QKICAgICAgICAgVS5vaWQgICAgICAgQVMgdW1pZCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4IDVmYzA3NmZjMTQuLjIx YmY3NWIwNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2lu dGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAt MzksNiArMzksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5Lmgi CisjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNp Z25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpA QCAtMTYzLDcgKzE2NCw3IEBAIHN0YXRpYyBwZ190aW1lX3QgbGFzdF94bG9nX3N3aXRjaF90 aW1lOwogc3RhdGljIHZvaWQgSGFuZGxlQ2hlY2twb2ludGVySW50ZXJydXB0cyh2b2lkKTsK IHN0YXRpYyB2b2lkIENoZWNrQXJjaGl2ZVRpbWVvdXQodm9pZCk7CiBzdGF0aWMgYm9vbCBJ c0NoZWNrcG9pbnRPblNjaGVkdWxlKGRvdWJsZSBwcm9ncmVzcyk7Ci1zdGF0aWMgYm9vbCBJ bW1lZGlhdGVDaGVja3BvaW50UmVxdWVzdGVkKHZvaWQpOworc3RhdGljIGJvb2wgSW1tZWRp YXRlQ2hlY2twb2ludFJlcXVlc3RlZChpbnQgZmxhZ3MpOwogc3RhdGljIGJvb2wgQ29tcGFj dENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIFVwZGF0ZVNo YXJlZE1lbW9yeUNvbmZpZyh2b2lkKTsKIApAQCAtNjY3LDE2ICs2NjgsMjQgQEAgQ2hlY2tB cmNoaXZlVGltZW91dCh2b2lkKQogICogdGhlcmUgaXMgb25lIHBlbmRpbmcgYmVoaW5kIGl0 LikKICAqLwogc3RhdGljIGJvb2wKLUltbWVkaWF0ZUNoZWNrcG9pbnRSZXF1ZXN0ZWQodm9p ZCkKK0ltbWVkaWF0ZUNoZWNrcG9pbnRSZXF1ZXN0ZWQoaW50IGZsYWdzKQogewogCXZvbGF0 aWxlIENoZWNrcG9pbnRlclNobWVtU3RydWN0ICpjcHMgPSBDaGVja3BvaW50ZXJTaG1lbTsK IAorCWlmIChjcHMtPmNrcHRfZmxhZ3MgJiBDSEVDS1BPSU5UX1JFUVVFU1RFRCkKKwkJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX05FV19SRVFV RVNUUywgdHJ1ZSk7CisKIAkvKgogCSAqIFdlIGRvbid0IG5lZWQgdG8gYWNxdWlyZSB0aGUg Y2twdF9sY2sgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugd2UncmUgb25seQogCSAqIGxvb2tpbmcg YXQgYSBzaW5nbGUgZmxhZyBiaXQuCiAJICovCiAJaWYgKGNwcy0+Y2twdF9mbGFncyAmIENI RUNLUE9JTlRfSU1NRURJQVRFKQorCXsKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DSEVDS1BPSU5UX0ZMQUdTLAorCQkJCQkJCQkJIChmbGFncyB8IENIRUNL UE9JTlRfSU1NRURJQVRFKSk7CiAJCXJldHVybiB0cnVlOworCX0KKwogCXJldHVybiBmYWxz ZTsKIH0KIApAQCAtNzA4LDcgKzcxNyw3IEBAIENoZWNrcG9pbnRXcml0ZURlbGF5KGludCBm bGFncywgZG91YmxlIHByb2dyZXNzKQogCSAqLwogCWlmICghKGZsYWdzICYgQ0hFQ0tQT0lO VF9JTU1FRElBVEUpICYmCiAJCSFTaHV0ZG93blJlcXVlc3RQZW5kaW5nICYmCi0JCSFJbW1l ZGlhdGVDaGVja3BvaW50UmVxdWVzdGVkKCkgJiYKKwkJIUltbWVkaWF0ZUNoZWNrcG9pbnRS ZXF1ZXN0ZWQoZmxhZ3MpICYmCiAJCUlzQ2hlY2twb2ludE9uU2NoZWR1bGUocHJvZ3Jlc3Mp KQogCXsKIAkJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jCmluZGV4IDczZDMwYmY2MTkuLjZkNjkyNTU2NjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hsb2cuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9wcm9n cmVzcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJs aWIvYmluYXJ5aGVhcC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMjAyNiw2ICsy MDI3LDggQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJV3JpdGViYWNrQ29udGV4dEluaXQo JndiX2NvbnRleHQsICZjaGVja3BvaW50X2ZsdXNoX2FmdGVyKTsKIAogCVRSQUNFX1BPU1RH UkVTUUxfQlVGRkVSX1NZTkNfU1RBUlQoTkJ1ZmZlcnMsIG51bV90b19zY2FuKTsKKwlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfQlVGRkVSU19U T1RBTCwKKwkJCQkJCQkJIG51bV90b19zY2FuKTsKIAogCS8qCiAJICogU29ydCBidWZmZXJz IHRoYXQgbmVlZCB0byBiZSB3cml0dGVuIHRvIHJlZHVjZSB0aGUgbGlrZWxpaG9vZCBvZiBy YW5kb20KQEAgLTIxNDMsNiArMjE0Niw4IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCQli dWZIZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1Zl9pZCk7CiAKIAkJbnVtX3Byb2Nlc3Nl ZCsrOworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9J TlRfQlVGRkVSU19QUk9DRVNTRUQsCisJCQkJCQkJCQkgbnVtX3Byb2Nlc3NlZCk7CiAKIAkJ LyoKIAkJICogV2UgZG9uJ3QgbmVlZCB0byBhY3F1aXJlIHRoZSBsb2NrIGhlcmUsIGJlY2F1 c2Ugd2UncmUgb25seSBsb29raW5nCkBAIC0yMTYzLDYgKzIxNjgsOCBAQCBCdWZmZXJTeW5j KGludCBmbGFncykKIAkJCQlUUkFDRV9QT1NUR1JFU1FMX0JVRkZFUl9TWU5DX1dSSVRURU4o YnVmX2lkKTsKIAkJCQlQZW5kaW5nQ2hlY2twb2ludGVyU3RhdHMuYnVmX3dyaXR0ZW5fY2hl Y2twb2ludHMrKzsKIAkJCQludW1fd3JpdHRlbisrOworCQkJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1dSSVRURU4sCisJCQkJ CQkJCQkJCSBudW1fd3JpdHRlbik7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9z eW5jLmMKaW5kZXggOWQ2YTllOTEwOS4uYWEyNTIxNTkxMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFj dC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d1 dGlscy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgpAQCAtMzY4LDYgKzM2OSw5IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9p ZCkKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaHRhYmxlIGZvciBmc3luYyByZXF1ZXN0cyB0byBw cm9jZXNzICovCiAJYWJzb3JiX2NvdW50ZXIgPSBGU1lOQ1NfUEVSX0FCU09SQjsKIAloYXNo X3NlcV9pbml0KCZoc3RhdCwgcGVuZGluZ09wcyk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX0ZJTEVTX1RPVEFMLAorCQkJCQkJCQkgaGFz aF9nZXRfbnVtX2VudHJpZXMocGVuZGluZ09wcykpOworCiAJd2hpbGUgKChlbnRyeSA9IChQ ZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkK IAl7CiAJCWludAkJCWZhaWx1cmVzOwpAQCAtNDMxLDYgKzQzNSw4IEBAIFByb2Nlc3NTeW5j UmVxdWVzdHModm9pZCkKIAkJCQkJCWxvbmdlc3QgPSBlbGFwc2VkOwogCQkJCQl0b3RhbF9l bGFwc2VkICs9IGVsYXBzZWQ7CiAJCQkJCXByb2Nlc3NlZCsrOworCQkJCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfRklMRVNfU1lOQ0VELAor CQkJCQkJCQkJCQkJIHByb2Nlc3NlZCk7CiAKIAkJCQkJaWYgKGxvZ19jaGVja3BvaW50cykK IAkJCQkJCWVsb2coREVCVUcxLCAiY2hlY2twb2ludCBzeW5jOiBudW1iZXI9JWQgZmlsZT0l cyB0aW1lPSUuM2YgbXMiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCA5NmJmZmMwZjJhLi44MjgxZDk2MWJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0 ZnVuY3MuYwpAQCAtNDk3LDYgKzQ5Nyw4IEBAIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8o UEdfRlVOQ1RJT05fQVJHUykKIAkJY21kdHlwZSA9IFBST0dSRVNTX0NPTU1BTkRfQkFTRUJB Q0tVUDsKIAllbHNlIGlmIChwZ19zdHJjYXNlY21wKGNtZCwgIkNPUFkiKSA9PSAwKQogCQlj bWR0eXBlID0gUFJPR1JFU1NfQ09NTUFORF9DT1BZOworCSBlbHNlIGlmIChwZ19zdHJjYXNl Y21wKGNtZCwgIkNIRUNLUE9JTlQiKSA9PSAwKQorCQljbWR0eXBlID0gUFJPR1JFU1NfQ09N TUFORF9DSEVDS1BPSU5UOwogCWVsc2UKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9n cmVzcy5oCmluZGV4IGEyODkzOGNhZjQuLjMzYTY0ZDJmMGIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv cHJvZ3Jlc3MuaApAQCAtMTUxLDQgKzE1MSw0MiBAQAogI2RlZmluZSBQUk9HUkVTU19DT1BZ X1RZUEVfUElQRSAzCiAjZGVmaW5lIFBST0dSRVNTX0NPUFlfVFlQRV9DQUxMQkFDSyA0CiAK Ky8qIFByb2dyZXNzIHBhcmFtZXRlcnMgZm9yIGNoZWNrcG9pbnQgKi8KKyNkZWZpbmUgUFJP R1JFU1NfQ0hFQ0tQT0lOVF9UWVBFICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIFBS T0dSRVNTX0NIRUNLUE9JTlRfRkxBR1MgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBQ Uk9HUkVTU19DSEVDS1BPSU5UX0xTTiAgICAgICAgICAgICAgICAgICAgIDIKKyNkZWZpbmUg UFJPR1JFU1NfQ0hFQ0tQT0lOVF9TVEFSVF9USU1FU1RBTVAgICAgICAgICAzCisjZGVmaW5l IFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UgICAgICAgICAgICAgICAgICAgNAorI2RlZmlu ZSBQUk9HUkVTU19DSEVDS1BPSU5UX0JVRkZFUlNfVE9UQUwgICAgICAgICAgIDUKKyNkZWZp bmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1BST0NFU1NFRCAgICAgICA2CisjZGVm aW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfQlVGRkVSU19XUklUVEVOICAgICAgICAgNworI2Rl ZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0ZJTEVTX1RPVEFMICAgICAgICAgICAgIDgKKyNk ZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9GSUxFU19TWU5DRUQgICAgICAgICAgICA5Cisj ZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfTkVXX1JFUVVFU1RTICAgICAgICAgICAgMTAK KworLyogVHlwZXMgb2YgY2hlY2twb2ludCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9UWVBFKSAqLworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1RZUEVf Q0hFQ0tQT0lOVCAgICAgICAgIDEKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9UWVBF X1JFU1RBUlRQT0lOVCAgICAgICAyCisKKy8qIFBoYXNlcyBvZiBjaGVja3BvaW50IChhcyBh ZHZlcnRpc2VkIHZpYSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFKSAqLworI2RlZmluZSBQ Uk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICAg IDEKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9HRVRfVklSVFVBTF9UUkFO U0FDVElPTl9JRFMgICAyCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfUkVQ TElfU0xPVFMgICAgICAgICAgICAgICAgICAgMworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFX1NOQVBTSE9UUyAgICAgICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9MT0dJQ0FMX1JFV1JJVEVfTUFQUElOR1MgICAgICA1 CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfUkVQTElfT1JJR0lOICAgICAg ICAgICAgICAgICAgNgorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0NMT0df UEFHRVMgICAgICAgICAgICAgICAgICAgIDcKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lO VF9QSEFTRV9DT01NSVRUU19QQUdFUyAgICAgICAgICAgICAgICA4CisjZGVmaW5lIFBST0dS RVNTX0NIRUNLUE9JTlRfUEhBU0VfU1VCVFJBTlNfUEFHRVMgICAgICAgICAgICAgICAgOQor I2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX01VTFRJWEFDVF9QQUdFUyAgICAg ICAgICAgICAgIDEwCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfUFJFRElD QVRFX0xPQ0tfUEFHRVMgICAgICAgICAgMTEKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lO VF9QSEFTRV9CVUZGRVJTICAgICAgICAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBQUk9H UkVTU19DSEVDS1BPSU5UX1BIQVNFX1NZTkNfRklMRVMgICAgICAgICAgICAgICAgICAgIDEz CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfVFdPX1BIQVNFICAgICAgICAg ICAgICAgICAgICAgMTQKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9QT1NU X0NIRUNLUE9JTlRfQ0xFQU5VUCAgICAgICAxNQorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFX0lOVkFMSURBVEVfUkVQTElfU0xPVFMgICAgICAgIDE2CisjZGVmaW5lIFBS T0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfUkVDWUNMRV9PTERfWExPRyAgICAgICAgICAgICAg MTcKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9UUlVOQ0FURV9TVUJUUkFO UyAgICAgICAgICAgICAxOAorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0ZJ TkFMSVpFICAgICAgICAgICAgICAgICAgICAgIDE5CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvdXRp bHMvYmFja2VuZF9wcm9ncmVzcy5oCmluZGV4IDQ3YmY4MDI5YjAuLjAyZDUxZmI5NDggMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfcHJvZ3Jlc3MuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3Byb2dyZXNzLmgKQEAgLTI3LDcgKzI3LDggQEAg dHlwZWRlZiBlbnVtIFByb2dyZXNzQ29tbWFuZFR5cGUKIAlQUk9HUkVTU19DT01NQU5EX0NM VVNURVIsCiAJUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCiAJUFJPR1JFU1NfQ09N TUFORF9CQVNFQkFDS1VQLAotCVBST0dSRVNTX0NPTU1BTkRfQ09QWQorCVBST0dSRVNTX0NP TU1BTkRfQ09QWSwKKwlQUk9HUkVTU19DT01NQU5EX0NIRUNLUE9JTlQKIH0gUHJvZ3Jlc3ND b21tYW5kVHlwZTsKIAogI2RlZmluZSBQR1NUQVRfTlVNX1BST0dSRVNTX1BBUkFNCTIwCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDYyNGQwZTVhYWUuLmVhYjY4 ZDdmMTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xOTEzLDYg KzE5MTMsNzYgQEAgcGdfc3RhdF9wcm9ncmVzc19iYXNlYmFja3VwfCBTRUxFQ1Qgcy5waWQs CiAgICAgcy5wYXJhbTQgQVMgdGFibGVzcGFjZXNfdG90YWwsCiAgICAgcy5wYXJhbTUgQVMg dGFibGVzcGFjZXNfc3RyZWFtZWQKICAgIEZST00gcGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5m bygnQkFTRUJBQ0tVUCc6OnRleHQpIHMocGlkLCBkYXRpZCwgcmVsaWQsIHBhcmFtMSwgcGFy YW0yLCBwYXJhbTMsIHBhcmFtNCwgcGFyYW01LCBwYXJhbTYsIHBhcmFtNywgcGFyYW04LCBw YXJhbTksIHBhcmFtMTAsIHBhcmFtMTEsIHBhcmFtMTIsIHBhcmFtMTMsIHBhcmFtMTQsIHBh cmFtMTUsIHBhcmFtMTYsIHBhcmFtMTcsIHBhcmFtMTgsIHBhcmFtMTksIHBhcmFtMjApOwor cGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50fCBTRUxFQ1Qgcy5waWQsCisgICAgICAgIENB U0Ugcy5wYXJhbTEKKyAgICAgICAgICAgIFdIRU4gMSBUSEVOICdjaGVja3BvaW50Jzo6dGV4 dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3Jlc3RhcnRwb2ludCc6OnRleHQKKyAgICAg ICAgICAgIEVMU0UgTlVMTDo6dGV4dAorICAgICAgICBFTkQgQVMgdHlwZSwKKyAgICAoKCgo KAorICAgICAgICBDQVNFCisgICAgICAgICAgICBXSEVOICgocy5wYXJhbTIgJiAoNCk6OmJp Z2ludCkgPiAwKSBUSEVOICdpbW1lZGlhdGUgJzo6dGV4dAorICAgICAgICAgICAgRUxTRSAn Jzo6dGV4dAorICAgICAgICBFTkQgfHwKKyAgICAgICAgQ0FTRQorICAgICAgICAgICAgV0hF TiAoKHMucGFyYW0yICYgKDgpOjpiaWdpbnQpID4gMCkgVEhFTiAnZm9yY2UgJzo6dGV4dAor ICAgICAgICAgICAgRUxTRSAnJzo6dGV4dAorICAgICAgICBFTkQpIHx8CisgICAgICAgIENB U0UKKyAgICAgICAgICAgIFdIRU4gKChzLnBhcmFtMiAmICgxNik6OmJpZ2ludCkgPiAwKSBU SEVOICdmbHVzaC1hbGwgJzo6dGV4dAorICAgICAgICAgICAgRUxTRSAnJzo6dGV4dAorICAg ICAgICBFTkQpIHx8CisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4gKChzLnBhcmFt MiAmICgzMik6OmJpZ2ludCkgPiAwKSBUSEVOICd3YWl0ICc6OnRleHQKKyAgICAgICAgICAg IEVMU0UgJyc6OnRleHQKKyAgICAgICAgRU5EKSB8fAorICAgICAgICBDQVNFCisgICAgICAg ICAgICBXSEVOICgocy5wYXJhbTIgJiAoMTI4KTo6YmlnaW50KSA+IDApIFRIRU4gJ3dhbCAn Ojp0ZXh0CisgICAgICAgICAgICBFTFNFICcnOjp0ZXh0CisgICAgICAgIEVORCkgfHwKKyAg ICAgICAgQ0FTRQorICAgICAgICAgICAgV0hFTiAoKHMucGFyYW0yICYgKDI1Nik6OmJpZ2lu dCkgPiAwKSBUSEVOICd0aW1lICc6OnRleHQKKyAgICAgICAgICAgIEVMU0UgJyc6OnRleHQK KyAgICAgICAgRU5EKSBBUyBmbGFncywKKyAgICAoJzAvMCc6OnBnX2xzbiArICgKKyAgICAg ICAgQ0FTRQorICAgICAgICAgICAgV0hFTiAocy5wYXJhbTMgPCAwKSBUSEVOIHBvdygoMik6 Om51bWVyaWMsICg2NCk6Om51bWVyaWMpCisgICAgICAgICAgICBFTFNFICgwKTo6bnVtZXJp YworICAgICAgICBFTkQgKyAocy5wYXJhbTMpOjpudW1lcmljKSkgQVMgc3RhcnRfbHNuLAor ICAgIHRvX3RpbWVzdGFtcCgoKDk0NjY4NDgwMCk6OmRvdWJsZSBwcmVjaXNpb24gKyAoKHMu cGFyYW00KTo6ZG91YmxlIHByZWNpc2lvbiAvICgxMDAwMDAwKTo6ZG91YmxlIHByZWNpc2lv bikpKSBBUyBzdGFydF90aW1lLAorICAgICAgICBDQVNFIHMucGFyYW01CisgICAgICAgICAg ICBXSEVOIDEgVEhFTiAnaW5pdGlhbGl6aW5nJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAy IFRIRU4gJ2dldHRpbmcgdmlydHVhbCB0cmFuc2FjdGlvbiBJRHMnOjp0ZXh0CisgICAgICAg ICAgICBXSEVOIDMgVEhFTiAnY2hlY2twb2ludGluZyByZXBsaWNhdGlvbiBzbG90cyc6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gNCBUSEVOICdjaGVja3BvaW50aW5nIGxvZ2ljYWwgcmVw bGljYXRpb24gc25hcHNob3QgZmlsZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDUgVEhF TiAnY2hlY2twb2ludGluZyBsb2dpY2FsIHJld3JpdGUgbWFwcGluZyBmaWxlcyc6OnRleHQK KyAgICAgICAgICAgIFdIRU4gNiBUSEVOICdjaGVja3BvaW50aW5nIHJlcGxpY2F0aW9uIG9y aWdpbic6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdjaGVja3BvaW50aW5nIGNv bW1pdCBsb2cgcGFnZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAnY2hlY2tw b2ludGluZyBjb21taXQgdGltZSBzdGFtcCBwYWdlcyc6OnRleHQKKyAgICAgICAgICAgIFdI RU4gOSBUSEVOICdjaGVja3BvaW50aW5nIHN1YnRyYW5zYWN0aW9uIHBhZ2VzJzo6dGV4dAor ICAgICAgICAgICAgV0hFTiAxMCBUSEVOICdjaGVja3BvaW50aW5nIG11bHRpeGFjdCBwYWdl cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTEgVEhFTiAnY2hlY2twb2ludGluZyBwcmVk aWNhdGUgbG9jayBwYWdlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTIgVEhFTiAnY2hl Y2twb2ludGluZyBidWZmZXJzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxMyBUSEVOICdw cm9jZXNzaW5nIGZpbGUgc3luYyByZXF1ZXN0cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4g MTQgVEhFTiAncGVyZm9ybWluZyB0d28gcGhhc2UgY2hlY2twb2ludCc6OnRleHQKKyAgICAg ICAgICAgIFdIRU4gMTUgVEhFTiAncGVyZm9ybWluZyBwb3N0IGNoZWNrcG9pbnQgY2xlYW51 cCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTYgVEhFTiAnaW52YWxpZGF0aW5nIHJlcGxp Y2F0aW9uIHNsb3RzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxNyBUSEVOICdyZWN5Y2xp bmcgb2xkIFdBTCBmaWxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMTggVEhFTiAndHJ1 bmNhdGluZyBzdWJ0cmFuc2FjdGlvbnMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDE5IFRI RU4gJ2ZpbmFsaXppbmcnOjp0ZXh0CisgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKKyAg ICAgICAgRU5EIEFTIHBoYXNlLAorICAgIHMucGFyYW02IEFTIGJ1ZmZlcnNfdG90YWwsCisg ICAgcy5wYXJhbTcgQVMgYnVmZmVyc19wcm9jZXNzZWQsCisgICAgcy5wYXJhbTggQVMgYnVm ZmVyc193cml0dGVuLAorICAgIHMucGFyYW05IEFTIGZpbGVzX3RvdGFsLAorICAgIHMucGFy YW0xMCBBUyBmaWxlc19zeW5jZWQsCisgICAgICAgIENBU0Ugcy5wYXJhbTExCisgICAgICAg ICAgICBXSEVOIDAgVEhFTiAnZmFsc2UnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDEgVEhF TiAndHJ1ZSc6OnRleHQKKyAgICAgICAgICAgIEVMU0UgTlVMTDo6dGV4dAorICAgICAgICBF TkQgQVMgbmV3X3JlcXVlc3RzCisgICBGUk9NIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8o J0NIRUNLUE9JTlQnOjp0ZXh0KSBzKHBpZCwgZGF0aWQsIHJlbGlkLCBwYXJhbTEsIHBhcmFt MiwgcGFyYW0zLCBwYXJhbTQsIHBhcmFtNSwgcGFyYW02LCBwYXJhbTcsIHBhcmFtOCwgcGFy YW05LCBwYXJhbTEwLCBwYXJhbTExLCBwYXJhbTEyLCBwYXJhbTEzLCBwYXJhbTE0LCBwYXJh bTE1LCBwYXJhbTE2LCBwYXJhbTE3LCBwYXJhbTE4LCBwYXJhbTE5LCBwYXJhbTIwKTsKIHBn X3N0YXRfcHJvZ3Jlc3NfY2x1c3RlcnwgU0VMRUNUIHMucGlkLAogICAgIHMuZGF0aWQsCiAg ICAgZC5kYXRuYW1lLAo= --------------hKtZVtnHCVwrPlef0b0fb4pk--