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.96) (envelope-from ) id 1woOS7-0011oG-1l for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jul 2026 16:45:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1woOS6-00E9u8-1b for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Jul 2026 16:45:18 +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.96) (envelope-from ) id 1woOS5-00E9ts-2d for pgsql-hackers@lists.postgresql.org; Mon, 27 Jul 2026 16:45:18 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1woOS0-00000000bo4-2H50 for pgsql-hackers@lists.postgresql.org; Mon, 27 Jul 2026 16:45:16 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4957952e0f8so3706575e9.2 for ; Mon, 27 Jul 2026 09:45:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785170711; x=1785775511; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:from:to:cc :subject:date:message-id:reply-to:content-type; bh=ij6jRjrCJXBXeD+ZFqX1PjQhwjDbrJrzCW8HWmAR6oY=; b=XuZvK16Ry5MJ8C3PM4teveqV4/2Ym2lmjeGYVw15cQpRf+iCwE9njz4Fj1OqJ+q014 gk9yS3rSR0B0ojp0OFUD9mWP+l37fk5g9cAhdD+hYO38GbZ3TGsH3d4cWu6X44PduCXJ 97aqjTUmt0PPP6aJ/+ypajn2sahkXWYUdSADJp3JcxVhqsXHtRRc9SGXoDn9MXhHhFcY wMcW3Z14T2Ih4rHkJhDfKKQra+9R682/rv5KDLhxj3kYdDbCKfpd9JFCbJxlyeYoS6E9 mWjCbDg/3QqqIXgenRyyGiqYev+4UfjBi9MOFTOh/Oir/T3r1M6v8OBhB4tXcfd+cGKm O2Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785170711; x=1785775511; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:content-type:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ij6jRjrCJXBXeD+ZFqX1PjQhwjDbrJrzCW8HWmAR6oY=; b=RBMFHHwIosxdypUs2nwrq4JRC8KneaaAKIsKW5Ts2IAkmbpK11nq6fTqACUlm7MqgI vc0qYvpYATMj01QkvGXrTWzmlx0NxVU19DTqVkBc802efLXNihe9UUqd7S+8CbAziMil RIwtDon7tvtXaLxElEGk5YkyFOFPWrV2j+MV/MQEwno3QbfwMkvSjcX9/hrsyjrfJsyE FqZGGCR8wVVRJSwVHkqEIlwhvWDcGo5eZQ/f1NgHs2OpNl26CVEE1S7sFJ9GmKHUTQY9 /TDFRWJKXx33KPZYXHYshe16usoDGQDSWReSwMk98D/VhccoddNcRidVKzYVjBle5l6w T7YQ== X-Gm-Message-State: AOJu0Yz4YwPAxi3Pm29h2QtY5WYYFYZdVrZJnO5KHZLCU9wp0fAmnAiw p06MR2fGtTVjyfBgNstRuaOeT/Fmhnz0T5BLUP07q7VLgPTT/IofJDAe7o6k+w== X-Gm-Gg: AR+sD121uPKt4g/Tq9j93orEMpbRzrd0kKjIAzX5xBVxbA/VgdpPfQeHRJeZ/U4oc3U axLvRKNmL+5r/neA1LhG19Hzvd3K15QXvIt93KMsdb7nkLviVZprVVejwHPl3aeOYrTVVbFE4X8 4ThXPWDRxgM6gCINy4ZDM7bLXgnmerLE1rLJnK2D5wagRSk3Wqntzy65WUq+NqZSiln5ObSA5Pj Yo5x+UcjTnaeOuHOhVzavd/oOWtbm6leuffT1VByHZ6UPxanGCINGefmjRJ3tWn2TUjiZBGugBu QXh8RbONT9xISkB7pCB8d58fp/RKBAM8NZl0O6uvy2XrptLZ/3UT4voreBJFGcTqc/5copbouBS T+YltOrUl0X7zAnUruda0dqAFtwPODfm+5cfGMlPZkeYYUNYPXqBKRtefsGavD7hZegPAKWSr1Q 8OwJqn1M5PPJj8Ai9Sl35fb0y6cQ4sdbZWYVsX1CC+OMmAUbTZgLQiAgO5G+DNMuO+ X-Received: by 2002:a05:600c:e558:20b0:495:6bd1:60a2 with SMTP id 5b1f17b1804b1-496c3eb5e58mr4946965e9.6.1785170710788; Mon, 27 Jul 2026 09:45:10 -0700 (PDT) Received: from [10.87.88.24] ([163.116.235.144]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47f85b9a596sm49280984f8f.4.2026.07.27.09.45.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 Jul 2026 09:45:09 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------da23ox9SJeirXI9990Fp6Ey7" Message-ID: <9ba4c7da-06ee-4a5a-9479-9b1076cfc675@gmail.com> Date: Mon, 27 Jul 2026 18:45:08 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: pg_plan_advice: add NO_ scan and join method tags To: "Jonathan Gonzalez V." Cc: pgsql-hackers@lists.postgresql.org, robertmhaas@gmail.com References: <123bbb65-ae76-4112-b33d-864aca745b7b@gmail.com> <87qzl5pxuz.fsf@gmail.com> Content-Language: en-US From: Florin Irion In-Reply-To: <87qzl5pxuz.fsf@gmail.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. --------------da23ox9SJeirXI9990Fp6Ey7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, On 14/07/2026 14:19, Jonathan Gonzalez V. wrote: > I was trying to measure the test coverage of this patch and I found that > the meson configuration wasn't updated, I think you're missing something > like this: > > --- a/contrib/pg_plan_advice/meson.build > +++ b/contrib/pg_plan_advice/meson.build > @@ -57,6 +57,8 @@ tests += { > 'gather', > 'join_order', > 'join_strategy', > + 'no_join', > + 'no_scan', > 'partitionwise', > 'prepared', > 'scan', Thanks for catching the meson.build gap — confirmed, no_join/no_scan were added to the Makefile's REGRESS list but never mirrored into meson.build. Fixed. > > After the tests run only two cases were not tested NO_MERGE_JOIN and > NO_NESTED_LOOP, but these supposed to be tested, well I'll dig more on > this one a second pass of the review. On the coverage gap for NO_MERGE_JOIN/NO_NESTED_LOOP: I instrumented both switch cases in pgpa_walker.c with log probes and reran no_join.sql — both fire. Concretely: NO_NESTED_LOOP(f) (sql/no_join.sql:38) and the stacked NO_HASH_JOIN(f) NO_NESTED_LOOP(f) case (line 52) both hit the PGPA_TAG_NO_NESTED_LOOP case; NO_MERGE_JOIN(d) (line 45) hits PGPA_TAG_NO_MERGE_JOIN. So ISTM the underlying advice-tag handling is exercised. > > During the check, this came to my attention: > > + case PGPA_TAG_NO_INDEX_ONLY_SCAN: > + return PGS_INDEXONLYSCAN | PGS_CONSIDER_INDEXONLY; > > Reading the comments I got this: > > When PGS_CONSIDER_INDEXONLY is > unset, we don't even consider index-only scans, and any such scans that > would have been generated become index scans instead. On the other hand, > unsetting PGS_INDEXSCAN or PGS_INDEXONLYSCAN causes generated paths of the > corresponding types to be marked as disabled. > > The message is a bit confusing but, I think that > `PGS_INDEXONLY` should be the only option here? Otherwise, my > understanding is that it will disable also PGS_INDEXSCAN, which is in > the next line to be disable. On PGS_CONSIDER_INDEXONLY: I think this traces back to the pathnodes.h comment: ▎ When PGS_CONSIDER_INDEXONLY is unset, we don't even consider index-only scans, and any such scans that would have been generated become index scans instead. On the other hand, unsetting PGS_INDEXSCAN or PGS_INDEXONLYSCAN causes generated paths of the corresponding types to be marked as disabled. That comment is actually describing the behavior we want. NO_INDEX_ONLY_SCAN's mask clears PGS_INDEXONLYSCAN | PGS_CONSIDER_INDEXONLY, leaving PGS_INDEXSCAN untouched. Per the comment, clearing PGS_CONSIDER_INDEXONLY doesn't disable a path — it changes what check_index_only() builds in the first place, converting the would-be Index-Only Scan into a regular Index Scan path. Since we never touch PGS_INDEXSCAN, that converted path stays enabled. Drop PGS_CONSIDER_INDEXONLY from the mask (your suggestion) and check_index_only() still returns true, so the planner builds an actual (disabled) Index-Only Scan with no regular Index Scan alternative for that index at all. I confirmed this with the mask reduced to just PGS_INDEXONLYSCAN, the no_scan test that expects NO_INDEX_ONLY_SCAN to fall back to a plain Index Scan instead produced a Bitmap Heap Scan. So ISTM the current code is correct. attaching v3 with the meson.build change and rebased on current master. Cheers, Florin --- www.enterprisedb.com --------------da23ox9SJeirXI9990Fp6Ey7 Content-Type: text/plain; charset=UTF-8; name="v3-0001-pg_plan_advice-Add-NO_SCAN-and-NO_JOIN_METHOD-tag.patch" Content-Disposition: attachment; filename*0="v3-0001-pg_plan_advice-Add-NO_SCAN-and-NO_JOIN_METHOD-tag.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1ODQ3OWU5ZDdhMGVjYTBhYWU3NGNlMzJhMDliZWMxMDI5YWM1ZTVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaW4gSXJpb24gPGZsb3Jpbi5pcmlvbkBlbnRl cnByaXNlZGIuY29tPgpEYXRlOiBUaHUsIDE4IEp1biAyMDI2IDE0OjI4OjUwICswMjAwClN1 YmplY3Q6IFtQQVRDSCB2M10gcGdfcGxhbl9hZHZpY2U6IEFkZCBOT19TQ0FOIGFuZCBOT19K T0lOX01FVEhPRCB0YWdzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpB ZGQgTk9fU0VRX1NDQU4sIE5PX0lOREVYX1NDQU4sIE5PX0lOREVYX09OTFlfU0NBTiwKTk9f QklUTUFQX0hFQVBfU0NBTiwgYW5kIE5PX1RJRF9TQ0FOIGFzIG5lZ2F0aXZlIHNjYW4tbWV0 aG9kCmRpcmVjdGl2ZXM7IGFuZCBOT19IQVNIX0pPSU4sIE5PX05FU1RFRF9MT09QIChwbHVz IF9QTEFJTiwKX01FTU9JWkUsIF9NQVRFUklBTElaRSB2YXJpYW50cyksIGFuZCBOT19NRVJH RV9KT0lOIChwbHVzIF9QTEFJTiwKX01BVEVSSUFMSVpFIHZhcmlhbnRzKSBhcyBuZWdhdGl2 ZSBqb2luLW1ldGhvZCBkaXJlY3RpdmVzLgoKRWFjaCBOT18gdGFnIGlzIHRoZSBsb2dpY2Fs IGNvbXBsZW1lbnQgb2YgaXRzIHBvc2l0aXZlIGNvdW50ZXJwYXJ0LgpTY2FuIE5PXyB0YWdz IHVzZSBzaW1wbGVfdGFyZ2V0X2xpc3QgKHN1Ymxpc3RzIGludmFsaWQpOyBqb2luIE5PXwp0 YWdzIHVzZSBnZW5lcmljX3RhcmdldF9saXN0IChzdWJsaXN0cyBhbGxvd2VkKS4gQmVjYXVz ZSBvZiB0aGlzLApib3RoIHRoZSBzY2FubmVyIGFuZCB0aGUgcGFyc2VyIG9ubHkgbmVlZCB0 byBoYW5kbGUgdGhlIE5PXyBzY2FuCnRhZ3MgZXhwbGljaXRseTogdGhlIHNjYW5uZXIgY2xh c3NpZmllcyB0aGVtIGFzIFRPS19UQUdfU0lNUExFIGFuZAp0aGUgcGFyc2VyIHJlc29sdmVz IHRoZWlyIG5hbWVzIGluIHRoZSBUT0tfVEFHX1NJTVBMRSBhY3Rpb24uIFRoZQpOT18gam9p biB0YWdzIGZhbGwgdGhyb3VnaCB0byB0aGUgZGVmYXVsdCBUT0tfVEFHX0dFTkVSSUMgYnJh bmNoLAp3aGVyZSB0aGUgdGFnIGlzIHJlc29sdmVkIGdlbmVyaWNhbGx5IGJ5IHBncGFfcGFy c2VfYWR2aWNlX3RhZywgc28KdGhleSBuZWVkIG5vIHNjYW5uZXIgb3IgcGFyc2VyIGNoYW5n ZS4KCkNvbmZsaWN0IGRldGVjdGlvbiBtYXJrcyBib3RoIGEgcG9zaXRpdmUgYW5kIGl0cyBO T18gY291bnRlcnBhcnQgYXMKY29uZmxpY3Rpbmcgd2hlbiB0aGV5IHRhcmdldCB0aGUgc2Ft ZSByZWxhdGlvbiBhbmQgbWV0aG9kLgoKTk9fIGpvaW4gdGFncyBjYXJyeSB0aGUgc2FtZSBq b2luLW9yZGVyIGNvbnN0cmFpbnQgYXMgdGhlaXIgcG9zaXRpdmUKY291bnRlcnBhcnRzOiBO T19IQVNIX0pPSU4oeCkgbWVhbnMgeCBtYXkgbm90IGFwcGVhciBvbiB0aGUgb3V0ZXIKKGRy aXZpbmcpIHNpZGUg4oCUIGVxdWl2YWxlbnRseSwgaXQgbWVhbnMgInVzZSBoYXNoIGpvaW4g b3IgbWVyZ2Ugam9pbgp3aXRoIHggYXMgaW5uZXIiLiBUaGUgY29uc3RyYWludCBpcyBzZW1h bnRpY2FsbHkgaW50cmluc2ljLCBub3QKaW5jaWRlbnRhbC4KLS0tCiBjb250cmliL3BnX3Bs YW5fYWR2aWNlL01ha2VmaWxlICAgICAgICAgICAgIHwgICA0ICstCiBjb250cmliL3BnX3Bs YW5fYWR2aWNlL2V4cGVjdGVkL25vX2pvaW4ub3V0IHwgMjg4ICsrKysrKysrKysrKysrKysr KysrCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVkL25vX3NjYW4ub3V0IHwgMTk3 ICsrKysrKysrKysrKysKIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvbWVzb24uYnVpbGQgICAg ICAgICAgfCAgIDIgKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX2FzdC5jICAgICAg ICAgICB8ICA1MiArKysrCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfYXN0LmggICAg ICAgICAgIHwgIDEzICsKIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9wYXJzZXIueSAg ICAgICAgfCAgMTAgKwogY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3BsYW5uZXIuYyAg ICAgICB8IDE4NCArKysrKysrKysrKy0tCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFf c2Nhbm5lci5sICAgICAgIHwgICA3ICstCiBjb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFf dHJvdmUuYyAgICAgICAgIHwgIDEzICsKIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV93 YWxrZXIuYyAgICAgICAgfCAgNzEgKysrKysKIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2Uvc3Fs L25vX2pvaW4uc3FsICAgICAgfCAgOTIgKysrKysrKwogY29udHJpYi9wZ19wbGFuX2Fkdmlj ZS9zcWwvbm9fc2Nhbi5zcWwgICAgICB8ICA4OCArKysrKysKIGRvYy9zcmMvc2dtbC9wZ3Bs YW5hZHZpY2Uuc2dtbCAgICAgICAgICAgICAgfCAxMjkgKysrKysrKysrCiAxNCBmaWxlcyBj aGFuZ2VkLCAxMTI3IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvZXhwZWN0ZWQvbm9fam9pbi5vdXQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVkL25v X3NjYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19wbGFuX2FkdmljZS9z cWwvbm9fam9pbi5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX3BsYW5fYWR2 aWNlL3NxbC9ub19zY2FuLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZp Y2UvTWFrZWZpbGUgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL01ha2VmaWxlCmluZGV4IGM4 NDQ4NDZkZDU0Li45ZGI1MzU3MzlkMCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFuX2Fk dmljZS9NYWtlZmlsZQorKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL01ha2VmaWxlCkBA IC0xOSw4ICsxOSw4IEBAIEhFQURFUlNfcGdfcGxhbl9hZHZpY2UgPSBwZ19wbGFuX2Fkdmlj ZS5oCiAKIFBHRklMRURFU0MgPSAicGdfcGxhbl9hZHZpY2UgLSBoZWxwIHRoZSBwbGFubmVy IGdldCB0aGUgcmlnaHQgcGxhbiIKIAotUkVHUkVTUyA9IGFsdGVybmF0aXZlcyBnYXRoZXIg am9pbl9vcmRlciBqb2luX3N0cmF0ZWd5IHBhcnRpdGlvbndpc2UgXAotCXByZXBhcmVkIHNj YW4gc2VtaWpvaW4gc3ludGF4CitSRUdSRVNTID0gYWx0ZXJuYXRpdmVzIGdhdGhlciBqb2lu X29yZGVyIGpvaW5fc3RyYXRlZ3kgbm9fam9pbiBub19zY2FuIFwKKwlwYXJ0aXRpb253aXNl IHByZXBhcmVkIHNjYW4gc2VtaWpvaW4gc3ludGF4CiAKIFRBUF9URVNUUyA9IDEKIApkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9ub19qb2luLm91dCBi L2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvZXhwZWN0ZWQvbm9fam9pbi5vdXQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVjM2YzZmRiNzcyCi0tLSAvZGV2L251 bGwKKysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9ub19qb2luLm91dApA QCAtMCwwICsxLDI4OCBAQAorTE9BRCAncGdfcGxhbl9hZHZpY2UnOworU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAwOworQ1JFQVRFIFRBQkxFIG5vX2pvaW5fZGlt IChpZCBzZXJpYWwgcHJpbWFyeSBrZXksIGRpbSB0ZXh0KQorCVdJVEggKGF1dG92YWN1dW1f ZW5hYmxlZCA9IGZhbHNlKTsKK0lOU0VSVCBJTlRPIG5vX2pvaW5fZGltIChkaW0pIFNFTEVD VCByYW5kb20oKTo6dGV4dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCkgZzsKK1ZBQ1VV TSBBTkFMWVpFIG5vX2pvaW5fZGltOworQ1JFQVRFIFRBQkxFIG5vX2pvaW5fZmFjdCAoCisJ aWQgaW50IHByaW1hcnkga2V5LAorCWRpbV9pZCBpbnRlZ2VyIG5vdCBudWxsIHJlZmVyZW5j ZXMgbm9fam9pbl9kaW0gKGlkKQorKSBXSVRIIChhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxz ZSk7CitJTlNFUlQgSU5UTyBub19qb2luX2ZhY3QKKwlTRUxFQ1QgZywgKGclMykrMSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwMDAwMCkgZzsKK0NSRUFURSBJTkRFWCBub19qb2luX2Zh Y3RfZGltX2lkIE9OIG5vX2pvaW5fZmFjdCAoZGltX2lkKTsKK1ZBQ1VVTSBBTkFMWVpFIG5v X2pvaW5fZmFjdDsKKy0tIEJhc2VsaW5lOiBoYXNoIGpvaW4gd2l0aCBkIG9uIHRoZSBpbm5l ciBzaWRlLgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBG Uk9NIG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQu aWQ7CisgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggSm9pbgorICAgSGFzaCBD b25kOiAoZi5kaW1faWQgPSBkLmlkKQorICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZmFj dCBmCisgICAtPiAgSGFzaAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZGlt IGQKKyBHZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBKT0lOX09SREVSKGYgZCkKKyAgIEhB U0hfSk9JTihkKQorICAgU0VRX1NDQU4oZiBkKQorICAgTk9fR0FUSEVSKGYgZCkKKygxMCBy b3dzKQorCistLSBOT19IQVNIX0pPSU4oZCk6IGQgc3RheXMgaW5uZXIsIHBsYW5uZXIgZmFs bHMgYmFjayB0byBhbm90aGVyIG1ldGhvZC4KK0JFR0lOOworU0VUIExPQ0FMIHBnX3BsYW5f YWR2aWNlLmFkdmljZSA9ICdOT19IQVNIX0pPSU4oZCknOworRVhQTEFJTiAoQ09TVFMgT0ZG LCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9f am9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgTmVzdGVkIExvb3AKKyAgIC0+ICBTZXEgU2NhbiBvbiBub19qb2luX2ZhY3QgZgorICAg LT4gIE1lbW9pemUKKyAgICAgICAgIENhY2hlIEtleTogZi5kaW1faWQKKyAgICAgICAgIENh Y2hlIE1vZGU6IGxvZ2ljYWwKKyAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIG5vX2pv aW5fZGltX3BrZXkgb24gbm9fam9pbl9kaW0gZAorICAgICAgICAgICAgICAgSW5kZXggQ29u ZDogKGlkID0gZi5kaW1faWQpCisgU3VwcGxpZWQgUGxhbiBBZHZpY2U6CisgICBOT19IQVNI X0pPSU4oZCkgLyogbWF0Y2hlZCAqLworIEdlbmVyYXRlZCBQbGFuIEFkdmljZToKKyAgIEpP SU5fT1JERVIoZiBkKQorICAgTkVTVEVEX0xPT1BfTUVNT0laRShkKQorICAgU0VRX1NDQU4o ZikKKyAgIElOREVYX1NDQU4oZCBwdWJsaWMubm9fam9pbl9kaW1fcGtleSkKKyAgIE5PX0dB VEhFUihmIGQpCisoMTUgcm93cykKKworQ09NTUlUOworLS0gTk9fSEFTSF9KT0lOKGYpOiB0 aGUgam9pbi1vcmRlciBjb25zdHJhaW50IGZvcmNlcyBmIHRvIHRoZSBpbm5lciBzaWRlLgor QkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX0hBU0hfSk9J TihmKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZS T00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lkID0gZC5p ZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBKb2luCisg ICBNZXJnZSBDb25kOiAoZC5pZCA9IGYuZGltX2lkKQorICAgLT4gIEluZGV4IFNjYW4gdXNp bmcgbm9fam9pbl9kaW1fcGtleSBvbiBub19qb2luX2RpbSBkCisgICAtPiAgSW5kZXggU2Nh biB1c2luZyBub19qb2luX2ZhY3RfZGltX2lkIG9uIG5vX2pvaW5fZmFjdCBmCisgU3VwcGxp ZWQgUGxhbiBBZHZpY2U6CisgICBOT19IQVNIX0pPSU4oZikgLyogbWF0Y2hlZCAqLworIEdl bmVyYXRlZCBQbGFuIEFkdmljZToKKyAgIEpPSU5fT1JERVIoZCBmKQorICAgTUVSR0VfSk9J Tl9QTEFJTihmKQorICAgSU5ERVhfU0NBTihkIHB1YmxpYy5ub19qb2luX2RpbV9wa2V5IGYg cHVibGljLm5vX2pvaW5fZmFjdF9kaW1faWQpCisgICBOT19HQVRIRVIoZiBkKQorKDExIHJv d3MpCisKK0NPTU1JVDsKKy0tIE5PX05FU1RFRF9MT09QKGYpOiBmIGZvcmNlZCBpbm5lciwg YWxsIE5MIHZhcmlhbnRzIGZvcmJpZGRlbiAtPiBtZXJnZSBqb2luLgorQkVHSU47CitTRVQg TE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX05FU1RFRF9MT09QKGYpJzsKK0VY UExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19qb2lu X2ZhY3QgZiBKT0lOIG5vX2pvaW5fZGltIGQgT04gZi5kaW1faWQgPSBkLmlkOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1lcmdlIEpvaW4KKyAgIE1lcmdlIENv bmQ6IChkLmlkID0gZi5kaW1faWQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBub19qb2lu X2RpbV9wa2V5IG9uIG5vX2pvaW5fZGltIGQKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIG5v X2pvaW5fZmFjdF9kaW1faWQgb24gbm9fam9pbl9mYWN0IGYKKyBTdXBwbGllZCBQbGFuIEFk dmljZToKKyAgIE5PX05FU1RFRF9MT09QKGYpIC8qIG1hdGNoZWQgKi8KKyBHZW5lcmF0ZWQg UGxhbiBBZHZpY2U6CisgICBKT0lOX09SREVSKGQgZikKKyAgIE1FUkdFX0pPSU5fUExBSU4o ZikKKyAgIElOREVYX1NDQU4oZCBwdWJsaWMubm9fam9pbl9kaW1fcGtleSBmIHB1YmxpYy5u b19qb2luX2ZhY3RfZGltX2lkKQorICAgTk9fR0FUSEVSKGYgZCkKKygxMSByb3dzKQorCitD T01NSVQ7CistLSBOT19NRVJHRV9KT0lOKGQpOiBkIGFscmVhZHkgaW5uZXIsIGhhc2ggam9p biBzdGlsbCBhbGxvd2VkIC0+IHBsYW4gdW5jaGFuZ2VkLgorQkVHSU47CitTRVQgTE9DQUwg cGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX01FUkdFX0pPSU4oZCknOworRVhQTEFJTiAo Q09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX2pvaW5fZmFjdCBm IEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7CisgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEhhc2ggSm9pbgorICAgSGFzaCBDb25kOiAoZi5kaW1faWQgPSBk LmlkKQorICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZmFjdCBmCisgICAtPiAgSGFzaAor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZGltIGQKKyBTdXBwbGllZCBQbGFu IEFkdmljZToKKyAgIE5PX01FUkdFX0pPSU4oZCkgLyogbWF0Y2hlZCAqLworIEdlbmVyYXRl ZCBQbGFuIEFkdmljZToKKyAgIEpPSU5fT1JERVIoZiBkKQorICAgSEFTSF9KT0lOKGQpCisg ICBTRVFfU0NBTihmIGQpCisgICBOT19HQVRIRVIoZiBkKQorKDEyIHJvd3MpCisKK0NPTU1J VDsKKy0tIFN0YWNraW5nOiBOT19IQVNIX0pPSU4oZikgKyBOT19ORVNURURfTE9PUChmKSBs ZWF2ZXMgb25seSBtZXJnZSBqb2luLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZp Y2UuYWR2aWNlID0gJ05PX0hBU0hfSk9JTihmKSBOT19ORVNURURfTE9PUChmKSc7CitFWFBM QUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9m YWN0IGYgSk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBKb2luCisgICBNZXJnZSBDb25k OiAoZC5pZCA9IGYuZGltX2lkKQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgbm9fam9pbl9k aW1fcGtleSBvbiBub19qb2luX2RpbSBkCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBub19q b2luX2ZhY3RfZGltX2lkIG9uIG5vX2pvaW5fZmFjdCBmCisgU3VwcGxpZWQgUGxhbiBBZHZp Y2U6CisgICBOT19IQVNIX0pPSU4oZikgLyogbWF0Y2hlZCAqLworICAgTk9fTkVTVEVEX0xP T1AoZikgLyogbWF0Y2hlZCAqLworIEdlbmVyYXRlZCBQbGFuIEFkdmljZToKKyAgIEpPSU5f T1JERVIoZCBmKQorICAgTUVSR0VfSk9JTl9QTEFJTihmKQorICAgSU5ERVhfU0NBTihkIHB1 YmxpYy5ub19qb2luX2RpbV9wa2V5IGYgcHVibGljLm5vX2pvaW5fZmFjdF9kaW1faWQpCisg ICBOT19HQVRIRVIoZiBkKQorKDEyIHJvd3MpCisKK0NPTU1JVDsKKy0tIFNwZWNpZmljIE5P XyB2YXJpYW50cyB0YXJnZXRpbmcgZCwgYWxyZWFkeSB0aGUgaW5uZXIgc2lkZTogZm9yYmlk ZGluZyBhbnkgb25lCistLSBOTCBvciBtZXJnZSB2YXJpYW50IGxlYXZlcyBoYXNoIGpvaW4g YXZhaWxhYmxlLCBzbyB0aGUgcGxhbiBpcyB1bmNoYW5nZWQuCitCRUdJTjsKK1NFVCBMT0NB TCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fTkVTVEVEX0xPT1BfUExBSU4oZCknOwor RVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX2pv aW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7CisgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoIEpvaW4KKyAgIEhhc2ggQ29uZDog KGYuZGltX2lkID0gZC5pZCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBub19qb2luX2ZhY3QgZgor ICAgLT4gIEhhc2gKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBub19qb2luX2RpbSBkCisg U3VwcGxpZWQgUGxhbiBBZHZpY2U6CisgICBOT19ORVNURURfTE9PUF9QTEFJTihkKSAvKiBt YXRjaGVkICovCisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgSk9JTl9PUkRFUihmIGQp CisgICBIQVNIX0pPSU4oZCkKKyAgIFNFUV9TQ0FOKGYgZCkKKyAgIE5PX0dBVEhFUihmIGQp CisoMTIgcm93cykKKworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19O RVNURURfTE9PUF9NRU1PSVpFKGQpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJ Q0UpCisJU0VMRUNUICogRlJPTSBub19qb2luX2ZhY3QgZiBKT0lOIG5vX2pvaW5fZGltIGQg T04gZi5kaW1faWQgPSBkLmlkOworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEhhc2ggSm9pbgorICAgSGFzaCBDb25kOiAoZi5kaW1faWQgPSBkLmlkKQorICAgLT4g IFNlcSBTY2FuIG9uIG5vX2pvaW5fZmFjdCBmCisgICAtPiAgSGFzaAorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIG5vX2pvaW5fZGltIGQKKyBTdXBwbGllZCBQbGFuIEFkdmljZToKKyAg IE5PX05FU1RFRF9MT09QX01FTU9JWkUoZCkgLyogbWF0Y2hlZCAqLworIEdlbmVyYXRlZCBQ bGFuIEFkdmljZToKKyAgIEpPSU5fT1JERVIoZiBkKQorICAgSEFTSF9KT0lOKGQpCisgICBT RVFfU0NBTihmIGQpCisgICBOT19HQVRIRVIoZiBkKQorKDEyIHJvd3MpCisKK1NFVCBMT0NB TCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fTkVTVEVEX0xPT1BfTUFURVJJQUxJWkUo ZCknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9N IG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7 CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoIEpv aW4KKyAgIEhhc2ggQ29uZDogKGYuZGltX2lkID0gZC5pZCkKKyAgIC0+ICBTZXEgU2NhbiBv biBub19qb2luX2ZhY3QgZgorICAgLT4gIEhhc2gKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBub19qb2luX2RpbSBkCisgU3VwcGxpZWQgUGxhbiBBZHZpY2U6CisgICBOT19ORVNURURf TE9PUF9NQVRFUklBTElaRShkKSAvKiBtYXRjaGVkICovCisgR2VuZXJhdGVkIFBsYW4gQWR2 aWNlOgorICAgSk9JTl9PUkRFUihmIGQpCisgICBIQVNIX0pPSU4oZCkKKyAgIFNFUV9TQ0FO KGYgZCkKKyAgIE5PX0dBVEhFUihmIGQpCisoMTIgcm93cykKKworU0VUIExPQ0FMIHBnX3Bs YW5fYWR2aWNlLmFkdmljZSA9ICdOT19NRVJHRV9KT0lOX1BMQUlOKGQpJzsKK0VYUExBSU4g KENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19qb2luX2ZhY3Qg ZiBKT0lOIG5vX2pvaW5fZGltIGQgT04gZi5kaW1faWQgPSBkLmlkOworICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggSm9pbgorICAgSGFzaCBDb25kOiAoZi5kaW1faWQg PSBkLmlkKQorICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZmFjdCBmCisgICAtPiAgSGFz aAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIG5vX2pvaW5fZGltIGQKKyBTdXBwbGllZCBQ bGFuIEFkdmljZToKKyAgIE5PX01FUkdFX0pPSU5fUExBSU4oZCkgLyogbWF0Y2hlZCAqLwor IEdlbmVyYXRlZCBQbGFuIEFkdmljZToKKyAgIEpPSU5fT1JERVIoZiBkKQorICAgSEFTSF9K T0lOKGQpCisgICBTRVFfU0NBTihmIGQpCisgICBOT19HQVRIRVIoZiBkKQorKDEyIHJvd3Mp CisKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fTUVSR0VfSk9JTl9N QVRFUklBTElaRShkKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNF TEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGlt X2lkID0gZC5pZDsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBIYXNoIEpvaW4KKyAgIEhhc2ggQ29uZDogKGYuZGltX2lkID0gZC5pZCkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBub19qb2luX2ZhY3QgZgorICAgLT4gIEhhc2gKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBub19qb2luX2RpbSBkCisgU3VwcGxpZWQgUGxhbiBBZHZpY2U6CisgICBO T19NRVJHRV9KT0lOX01BVEVSSUFMSVpFKGQpIC8qIG1hdGNoZWQgKi8KKyBHZW5lcmF0ZWQg UGxhbiBBZHZpY2U6CisgICBKT0lOX09SREVSKGYgZCkKKyAgIEhBU0hfSk9JTihkKQorICAg U0VRX1NDQU4oZiBkKQorICAgTk9fR0FUSEVSKGYgZCkKKygxMiByb3dzKQorCitDT01NSVQ7 CistLSBDb25mbGljdDogc2FtZSBtZXRob2QgcmVxdWlyZWQgYW5kIGZvcmJpZGRlbjsgYm90 aCBtYXJrZWQgY29uZmxpY3RpbmcuCitCRUdJTjsKK1NFVCBMT0NBTCBwZ19wbGFuX2Fkdmlj ZS5hZHZpY2UgPSAnSEFTSF9KT0lOKGYpIE5PX0hBU0hfSk9JTihmKSc7CitFWFBMQUlOIChD T1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYg Sk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBKb2luCisgICBNZXJnZSBDb25kOiAoZC5p ZCA9IGYuZGltX2lkKQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgbm9fam9pbl9kaW1fcGtl eSBvbiBub19qb2luX2RpbSBkCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBub19qb2luX2Zh Y3RfZGltX2lkIG9uIG5vX2pvaW5fZmFjdCBmCisgU3VwcGxpZWQgUGxhbiBBZHZpY2U6Cisg ICBIQVNIX0pPSU4oZikgLyogbWF0Y2hlZCwgY29uZmxpY3RpbmcsIGZhaWxlZCAqLworICAg Tk9fSEFTSF9KT0lOKGYpIC8qIG1hdGNoZWQsIGNvbmZsaWN0aW5nICovCisgR2VuZXJhdGVk IFBsYW4gQWR2aWNlOgorICAgSk9JTl9PUkRFUihkIGYpCisgICBNRVJHRV9KT0lOX1BMQUlO KGYpCisgICBJTkRFWF9TQ0FOKGQgcHVibGljLm5vX2pvaW5fZGltX3BrZXkgZiBwdWJsaWMu bm9fam9pbl9mYWN0X2RpbV9pZCkKKyAgIE5PX0dBVEhFUihmIGQpCisoMTIgcm93cykKKwor Q09NTUlUOworLS0gTm8gY29uZmxpY3Q6IE5PX0hBU0hfSk9JTihmKSBhbmQgYSBwb3NpdGl2 ZSB0YWcgZm9yIGEgZGlmZmVyZW50IG1ldGhvZC4KK0JFR0lOOworU0VUIExPQ0FMIHBnX3Bs YW5fYWR2aWNlLmFkdmljZSA9ICdOT19IQVNIX0pPSU4oZikgTkVTVEVEX0xPT1BfUExBSU4o ZiknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9N IG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZXN0ZWQgTG9vcAorICAgLT4gIFNlcSBTY2FuIG9u IG5vX2pvaW5fZGltIGQKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIG5vX2pvaW5fZmFjdF9k aW1faWQgb24gbm9fam9pbl9mYWN0IGYKKyAgICAgICAgIEluZGV4IENvbmQ6IChkaW1faWQg PSBkLmlkKQorIFN1cHBsaWVkIFBsYW4gQWR2aWNlOgorICAgTk9fSEFTSF9KT0lOKGYpIC8q IG1hdGNoZWQgKi8KKyAgIE5FU1RFRF9MT09QX1BMQUlOKGYpIC8qIG1hdGNoZWQgKi8KKyBH ZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBKT0lOX09SREVSKGQgZikKKyAgIE5FU1RFRF9M T09QX1BMQUlOKGYpCisgICBTRVFfU0NBTihkKQorICAgSU5ERVhfU0NBTihmIHB1YmxpYy5u b19qb2luX2ZhY3RfZGltX2lkKQorICAgTk9fR0FUSEVSKGYgZCkKKygxMyByb3dzKQorCitD T01NSVQ7CitEUk9QIFRBQkxFIG5vX2pvaW5fZmFjdDsKK0RST1AgVEFCTEUgbm9fam9pbl9k aW07CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVkL25vX3Nj YW4ub3V0IGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9leHBlY3RlZC9ub19zY2FuLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDhmMmEyMWI2NTAKLS0t IC9kZXYvbnVsbAorKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL2V4cGVjdGVkL25vX3Nj YW4ub3V0CkBAIC0wLDAgKzEsMTk3IEBACitMT0FEICdwZ19wbGFuX2FkdmljZSc7CitTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitTRVQgc2VxX3BhZ2VfY29z dCA9IDAuMTsKK1NFVCByYW5kb21fcGFnZV9jb3N0ID0gMC4xOworU0VUIGNwdV90dXBsZV9j b3N0ID0gMDsKK1NFVCBjcHVfaW5kZXhfdHVwbGVfY29zdCA9IDA7CitDUkVBVEUgVEFCTEUg bm9fc2Nhbl90YWJsZSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCkKKwlXSVRIIChhdXRv dmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitJTlNFUlQgSU5UTyBub19zY2FuX3RhYmxlCisJ U0VMRUNUIGcsICdzb21lIHRleHQgJyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDAwMCkgZzsKK1ZBQ1VVTSBBTkFMWVpFIG5vX3NjYW5fdGFibGU7CistLSBCYXNlbGluZXMg d2l0aG91dCBhZHZpY2U6IHNlcSBzY2FuIGZvciBhIGZ1bGwgcmVhZCwgaW5kZXggc2NhbiBm b3IgYSBsb29rdXAuCitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVD VCAqIEZST00gbm9fc2Nhbl90YWJsZTsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBub19zY2FuX3Rh YmxlCisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgU0VRX1NDQU4obm9fc2Nhbl90YWJs ZSkKKyAgIE5PX0dBVEhFUihub19zY2FuX3RhYmxlKQorKDQgcm93cykKKworRVhQTEFJTiAo Q09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX3NjYW5fdGFibGUg V0hFUkUgYSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBub19zY2FuX3RhYmxlX3Br ZXkgb24gbm9fc2Nhbl90YWJsZQorICAgSW5kZXggQ29uZDogKGEgPSAxKQorIEdlbmVyYXRl ZCBQbGFuIEFkdmljZToKKyAgIElOREVYX1NDQU4obm9fc2Nhbl90YWJsZSBwdWJsaWMubm9f c2Nhbl90YWJsZV9wa2V5KQorICAgTk9fR0FUSEVSKG5vX3NjYW5fdGFibGUpCisoNSByb3dz KQorCistLSBOT19TRVFfU0NBTiB3aXRoIG5vIGluZGV4YWJsZSBxdWFsOiBubyBhbHRlcm5h dGl2ZSwgc28gdGhlIGFkdmljZSBmYWlscy4KK0JFR0lOOworU0VUIExPQ0FMIHBnX3BsYW5f YWR2aWNlLmFkdmljZSA9ICdOT19TRVFfU0NBTihub19zY2FuX3RhYmxlKSc7CitFWFBMQUlO IChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fc2Nhbl90YWJs ZTsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBTZXEgU2NhbiBvbiBub19zY2FuX3RhYmxlCisgICBEaXNhYmxlZDogdHJ1ZQorIFN1 cHBsaWVkIFBsYW4gQWR2aWNlOgorICAgTk9fU0VRX1NDQU4obm9fc2Nhbl90YWJsZSkgLyog bWF0Y2hlZCwgZmFpbGVkICovCisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgU0VRX1ND QU4obm9fc2Nhbl90YWJsZSkKKyAgIE5PX0dBVEhFUihub19zY2FuX3RhYmxlKQorKDcgcm93 cykKKworQ09NTUlUOworLS0gTk9fU0VRX1NDQU4gd2l0aCBhbiBpbmRleGFibGUgcXVhbDog ZmFsbHMgYmFjayB0byBpbmRleCBzY2FuLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9h ZHZpY2UuYWR2aWNlID0gJ05PX1NFUV9TQ0FOKG5vX3NjYW5fdGFibGUpJzsKK0VYUExBSU4g KENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19zY2FuX3RhYmxl IFdIRVJFIGEgPSAxOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgbm9fc2Nhbl90YWJsZV9w a2V5IG9uIG5vX3NjYW5fdGFibGUKKyAgIEluZGV4IENvbmQ6IChhID0gMSkKKyBTdXBwbGll ZCBQbGFuIEFkdmljZToKKyAgIE5PX1NFUV9TQ0FOKG5vX3NjYW5fdGFibGUpIC8qIG1hdGNo ZWQgKi8KKyBHZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBJTkRFWF9TQ0FOKG5vX3NjYW5f dGFibGUgcHVibGljLm5vX3NjYW5fdGFibGVfcGtleSkKKyAgIE5PX0dBVEhFUihub19zY2Fu X3RhYmxlKQorKDcgcm93cykKKworQ09NTUlUOworLS0gTk9fSU5ERVhfU0NBTjogZmFsbHMg YmFjayB0byBiaXRtYXAgaGVhcCBzY2FuLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9h ZHZpY2UuYWR2aWNlID0gJ05PX0lOREVYX1NDQU4obm9fc2Nhbl90YWJsZSknOworRVhQTEFJ TiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX3NjYW5fdGFi bGUgV0hFUkUgYSA9IDE7CisgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIG5vX3NjYW5fdGFibGUKKyAgIFJlY2hlY2sg Q29uZDogKGEgPSAxKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIG5vX3NjYW5fdGFi bGVfcGtleQorICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKQorIFN1cHBsaWVkIFBsYW4g QWR2aWNlOgorICAgTk9fSU5ERVhfU0NBTihub19zY2FuX3RhYmxlKSAvKiBtYXRjaGVkICov CisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgQklUTUFQX0hFQVBfU0NBTihub19zY2Fu X3RhYmxlKQorICAgTk9fR0FUSEVSKG5vX3NjYW5fdGFibGUpCisoOSByb3dzKQorCitDT01N SVQ7CistLSBOT19JTkRFWF9PTkxZX1NDQU46IGZhbGxzIGJhY2sgdG8gYSBwbGFpbiBpbmRl eCBzY2FuLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05P X0lOREVYX09OTFlfU0NBTihub19zY2FuX3RhYmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYs IFBMQU5fQURWSUNFKQorCVNFTEVDVCBhIEZST00gbm9fc2Nhbl90YWJsZSBXSEVSRSBhID0g MTsKKyAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIG5vX3NjYW5fdGFibGVfcGtleSBvbiBub19z Y2FuX3RhYmxlCisgICBJbmRleCBDb25kOiAoYSA9IDEpCisgU3VwcGxpZWQgUGxhbiBBZHZp Y2U6CisgICBOT19JTkRFWF9PTkxZX1NDQU4obm9fc2Nhbl90YWJsZSkgLyogbWF0Y2hlZCAq LworIEdlbmVyYXRlZCBQbGFuIEFkdmljZToKKyAgIElOREVYX1NDQU4obm9fc2Nhbl90YWJs ZSBwdWJsaWMubm9fc2Nhbl90YWJsZV9wa2V5KQorICAgTk9fR0FUSEVSKG5vX3NjYW5fdGFi bGUpCisoNyByb3dzKQorCitDT01NSVQ7CistLSBOT19CSVRNQVBfSEVBUF9TQ0FOOiB3aXRo IG9ubHkgYSBCUklOIGluZGV4IGF2YWlsYWJsZSwgZmFsbHMgYmFjayB0byBzZXEgc2Nhbi4K K0NSRUFURSBJTkRFWCBub19zY2FuX3RhYmxlX2IgT04gbm9fc2Nhbl90YWJsZSBVU0lORyBi cmluIChiKTsKK1ZBQ1VVTSBBTkFMWVpFIG5vX3NjYW5fdGFibGU7CitCRUdJTjsKK1NFVCBM T0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fQklUTUFQX0hFQVBfU0NBTihub19z Y2FuX3RhYmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVD VCAqIEZST00gbm9fc2Nhbl90YWJsZSBXSEVSRSBiID4gJ3NvbWUgdGV4dCA4JzsKKyAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEg U2NhbiBvbiBub19zY2FuX3RhYmxlCisgICBGaWx0ZXI6IChiID4gJ3NvbWUgdGV4dCA4Jzo6 dGV4dCkKKyBTdXBwbGllZCBQbGFuIEFkdmljZToKKyAgIE5PX0JJVE1BUF9IRUFQX1NDQU4o bm9fc2Nhbl90YWJsZSkgLyogbWF0Y2hlZCAqLworIEdlbmVyYXRlZCBQbGFuIEFkdmljZToK KyAgIFNFUV9TQ0FOKG5vX3NjYW5fdGFibGUpCisgICBOT19HQVRIRVIobm9fc2Nhbl90YWJs ZSkKKyg3IHJvd3MpCisKK0NPTU1JVDsKKy0tIE5PX1RJRF9TQ0FOOiBmYWxscyBiYWNrIHRv IHNlcSBzY2FuLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0g J05PX1RJRF9TQ0FOKG5vX3NjYW5fdGFibGUpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExB Tl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19zY2FuX3RhYmxlIFdIRVJFIGN0aWQgPSAn KDAsMSknOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNj YW4gb24gbm9fc2Nhbl90YWJsZQorICAgRmlsdGVyOiAoY3RpZCA9ICcoMCwxKSc6OnRpZCkK KyBTdXBwbGllZCBQbGFuIEFkdmljZToKKyAgIE5PX1RJRF9TQ0FOKG5vX3NjYW5fdGFibGUp IC8qIG1hdGNoZWQgKi8KKyBHZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBTRVFfU0NBTihu b19zY2FuX3RhYmxlKQorICAgTk9fR0FUSEVSKG5vX3NjYW5fdGFibGUpCisoNyByb3dzKQor CitDT01NSVQ7CistLSBNdWx0aXBsZSBOT18gc2NhbiB0YWdzIHN0YWNrIHdpdGhvdXQgY29u ZmxpY3QuCitCRUdJTjsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9f U0VRX1NDQU4obm9fc2Nhbl90YWJsZSkgTk9fQklUTUFQX0hFQVBfU0NBTihub19zY2FuX3Rh YmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZS T00gbm9fc2Nhbl90YWJsZSBXSEVSRSBhID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5n IG5vX3NjYW5fdGFibGVfcGtleSBvbiBub19zY2FuX3RhYmxlCisgICBJbmRleCBDb25kOiAo YSA9IDEpCisgU3VwcGxpZWQgUGxhbiBBZHZpY2U6CisgICBOT19TRVFfU0NBTihub19zY2Fu X3RhYmxlKSAvKiBtYXRjaGVkICovCisgICBOT19CSVRNQVBfSEVBUF9TQ0FOKG5vX3NjYW5f dGFibGUpIC8qIG1hdGNoZWQgKi8KKyBHZW5lcmF0ZWQgUGxhbiBBZHZpY2U6CisgICBJTkRF WF9TQ0FOKG5vX3NjYW5fdGFibGUgcHVibGljLm5vX3NjYW5fdGFibGVfcGtleSkKKyAgIE5P X0dBVEhFUihub19zY2FuX3RhYmxlKQorKDggcm93cykKKworQ09NTUlUOworLS0gQ29uZmxp Y3Q6IHNhbWUgbWV0aG9kIHJlcXVpcmVkIGFuZCBmb3JiaWRkZW47IGJvdGggY29uZmxpY3Rp bmcsIG5laXRoZXIgYXBwbGllZC4KK0JFR0lOOworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNl LmFkdmljZSA9ICdTRVFfU0NBTihub19zY2FuX3RhYmxlKSBOT19TRVFfU0NBTihub19zY2Fu X3RhYmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAq IEZST00gbm9fc2Nhbl90YWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBT Y2FuIG9uIG5vX3NjYW5fdGFibGUKKyBTdXBwbGllZCBQbGFuIEFkdmljZToKKyAgIFNFUV9T Q0FOKG5vX3NjYW5fdGFibGUpIC8qIG1hdGNoZWQsIGNvbmZsaWN0aW5nICovCisgICBOT19T RVFfU0NBTihub19zY2FuX3RhYmxlKSAvKiBtYXRjaGVkLCBjb25mbGljdGluZywgZmFpbGVk ICovCisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgU0VRX1NDQU4obm9fc2Nhbl90YWJs ZSkKKyAgIE5PX0dBVEhFUihub19zY2FuX3RhYmxlKQorKDcgcm93cykKKworQ09NTUlUOwor LS0gTm8gY29uZmxpY3Q6IE5PX1NFUV9TQ0FOIGFuZCBhIHBvc2l0aXZlIElOREVYX1NDQU4g YXJlIGNvbXBhdGlibGUuCitCRUdJTjsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZp Y2UgPSAnTk9fU0VRX1NDQU4obm9fc2Nhbl90YWJsZSkgSU5ERVhfU0NBTihub19zY2FuX3Rh YmxlIG5vX3NjYW5fdGFibGVfcGtleSknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FE VklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX3NjYW5fdGFibGUgV0hFUkUgYSA9IDE7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIG5vX3NjYW5fdGFibGVfcGtleSBv biBub19zY2FuX3RhYmxlCisgICBJbmRleCBDb25kOiAoYSA9IDEpCisgU3VwcGxpZWQgUGxh biBBZHZpY2U6CisgICBOT19TRVFfU0NBTihub19zY2FuX3RhYmxlKSAvKiBtYXRjaGVkICov CisgICBJTkRFWF9TQ0FOKG5vX3NjYW5fdGFibGUgbm9fc2Nhbl90YWJsZV9wa2V5KSAvKiBt YXRjaGVkICovCisgR2VuZXJhdGVkIFBsYW4gQWR2aWNlOgorICAgSU5ERVhfU0NBTihub19z Y2FuX3RhYmxlIHB1YmxpYy5ub19zY2FuX3RhYmxlX3BrZXkpCisgICBOT19HQVRIRVIobm9f c2Nhbl90YWJsZSkKKyg4IHJvd3MpCisKK0NPTU1JVDsKKy0tIFNjYW4gdGFncyBmb3JiaWQg c3VibGlzdHMgKHNpbXBsZV90YXJnZXRfbGlzdCk6IHRoaXMgaXMgYSBzeW50YXggZXJyb3Iu CitTRVQgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX1NFUV9TQ0FOKChub19zY2FuX3Rh YmxlIG5vX3NjYW5fdGFibGUpKSc7CitFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFt ZXRlciAicGdfcGxhbl9hZHZpY2UuYWR2aWNlIjogIk5PX1NFUV9TQ0FOKChub19zY2FuX3Rh YmxlIG5vX3NjYW5fdGFibGUpKSIKK0RFVEFJTDogIENvdWxkIG5vdCBwYXJzZSBhZHZpY2U6 IHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIoIgorRFJPUCBUQUJMRSBub19zY2FuX3RhYmxl OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9tZXNvbi5idWlsZCBiL2Nv bnRyaWIvcGdfcGxhbl9hZHZpY2UvbWVzb24uYnVpbGQKaW5kZXggYmJhYjY3NmJlMzEuLmNl N2VhZjYzMWY1IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL21lc29uLmJ1 aWxkCisrKyBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvbWVzb24uYnVpbGQKQEAgLTU3LDYg KzU3LDggQEAgdGVzdHMgKz0gewogICAgICAgJ2dhdGhlcicsCiAgICAgICAnam9pbl9vcmRl cicsCiAgICAgICAnam9pbl9zdHJhdGVneScsCisgICAgICAnbm9fam9pbicsCisgICAgICAn bm9fc2NhbicsCiAgICAgICAncGFydGl0aW9ud2lzZScsCiAgICAgICAncHJlcGFyZWQnLAog ICAgICAgJ3NjYW4nLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3Bh X2FzdC5jIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX2FzdC5jCmluZGV4IDAxZGI4 ZDI0Y2QwLi4wMjAyNWI2MWRkMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFuX2Fkdmlj ZS9wZ3BhX2FzdC5jCisrKyBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9hc3QuYwpA QCAtNTgsOCArNTgsMzQgQEAgcGdwYV9jc3RyaW5nX2FkdmljZV90YWcocGdwYV9hZHZpY2Vf dGFnX3R5cGUgYWR2aWNlX3RhZykKIAkJCXJldHVybiAiTkVTVEVEX0xPT1BfTUVNT0laRSI7 CiAJCWNhc2UgUEdQQV9UQUdfTkVTVEVEX0xPT1BfUExBSU46CiAJCQlyZXR1cm4gIk5FU1RF RF9MT09QX1BMQUlOIjsKKwkJY2FzZSBQR1BBX1RBR19OT19CSVRNQVBfSEVBUF9TQ0FOOgor CQkJcmV0dXJuICJOT19CSVRNQVBfSEVBUF9TQ0FOIjsKIAkJY2FzZSBQR1BBX1RBR19OT19H QVRIRVI6CiAJCQlyZXR1cm4gIk5PX0dBVEhFUiI7CisJCWNhc2UgUEdQQV9UQUdfTk9fSEFT SF9KT0lOOgorCQkJcmV0dXJuICJOT19IQVNIX0pPSU4iOworCQljYXNlIFBHUEFfVEFHX05P X0lOREVYX09OTFlfU0NBTjoKKwkJCXJldHVybiAiTk9fSU5ERVhfT05MWV9TQ0FOIjsKKwkJ Y2FzZSBQR1BBX1RBR19OT19JTkRFWF9TQ0FOOgorCQkJcmV0dXJuICJOT19JTkRFWF9TQ0FO IjsKKwkJY2FzZSBQR1BBX1RBR19OT19NRVJHRV9KT0lOOgorCQkJcmV0dXJuICJOT19NRVJH RV9KT0lOIjsKKwkJY2FzZSBQR1BBX1RBR19OT19NRVJHRV9KT0lOX01BVEVSSUFMSVpFOgor CQkJcmV0dXJuICJOT19NRVJHRV9KT0lOX01BVEVSSUFMSVpFIjsKKwkJY2FzZSBQR1BBX1RB R19OT19NRVJHRV9KT0lOX1BMQUlOOgorCQkJcmV0dXJuICJOT19NRVJHRV9KT0lOX1BMQUlO IjsKKwkJY2FzZSBQR1BBX1RBR19OT19ORVNURURfTE9PUDoKKwkJCXJldHVybiAiTk9fTkVT VEVEX0xPT1AiOworCQljYXNlIFBHUEFfVEFHX05PX05FU1RFRF9MT09QX01BVEVSSUFMSVpF OgorCQkJcmV0dXJuICJOT19ORVNURURfTE9PUF9NQVRFUklBTElaRSI7CisJCWNhc2UgUEdQ QV9UQUdfTk9fTkVTVEVEX0xPT1BfTUVNT0laRToKKwkJCXJldHVybiAiTk9fTkVTVEVEX0xP T1BfTUVNT0laRSI7CisJCWNhc2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1BfUExBSU46CisJ CQlyZXR1cm4gIk5PX05FU1RFRF9MT09QX1BMQUlOIjsKKwkJY2FzZSBQR1BBX1RBR19OT19T RVFfU0NBTjoKKwkJCXJldHVybiAiTk9fU0VRX1NDQU4iOworCQljYXNlIFBHUEFfVEFHX05P X1RJRF9TQ0FOOgorCQkJcmV0dXJuICJOT19USURfU0NBTiI7CiAJCWNhc2UgUEdQQV9UQUdf UEFSVElUSU9OV0lTRToKIAkJCXJldHVybiAiUEFSVElUSU9OV0lTRSI7CiAJCWNhc2UgUEdQ QV9UQUdfU0VNSUpPSU5fTk9OX1VOSVFVRToKQEAgLTEzNSw4ICsxNjEsMzQgQEAgcGdwYV9w YXJzZV9hZHZpY2VfdGFnKGNvbnN0IGNoYXIgKnRhZywgYm9vbCAqZmFpbCkKIAkJCQlyZXR1 cm4gUEdQQV9UQUdfTkVTVEVEX0xPT1BfTUVNT0laRTsKIAkJCWlmIChzdHJjbXAodGFnLCAi bmVzdGVkX2xvb3BfcGxhaW4iKSA9PSAwKQogCQkJCXJldHVybiBQR1BBX1RBR19ORVNURURf TE9PUF9QTEFJTjsKKwkJCWlmIChzdHJjbXAodGFnLCAibm9fYml0bWFwX2hlYXBfc2NhbiIp ID09IDApCisJCQkJcmV0dXJuIFBHUEFfVEFHX05PX0JJVE1BUF9IRUFQX1NDQU47CiAJCQlp ZiAoc3RyY21wKHRhZywgIm5vX2dhdGhlciIpID09IDApCiAJCQkJcmV0dXJuIFBHUEFfVEFH X05PX0dBVEhFUjsKKwkJCWlmIChzdHJjbXAodGFnLCAibm9faGFzaF9qb2luIikgPT0gMCkK KwkJCQlyZXR1cm4gUEdQQV9UQUdfTk9fSEFTSF9KT0lOOworCQkJaWYgKHN0cmNtcCh0YWcs ICJub19pbmRleF9vbmx5X3NjYW4iKSA9PSAwKQorCQkJCXJldHVybiBQR1BBX1RBR19OT19J TkRFWF9PTkxZX1NDQU47CisJCQlpZiAoc3RyY21wKHRhZywgIm5vX2luZGV4X3NjYW4iKSA9 PSAwKQorCQkJCXJldHVybiBQR1BBX1RBR19OT19JTkRFWF9TQ0FOOworCQkJaWYgKHN0cmNt cCh0YWcsICJub19tZXJnZV9qb2luIikgPT0gMCkKKwkJCQlyZXR1cm4gUEdQQV9UQUdfTk9f TUVSR0VfSk9JTjsKKwkJCWlmIChzdHJjbXAodGFnLCAibm9fbWVyZ2Vfam9pbl9tYXRlcmlh bGl6ZSIpID09IDApCisJCQkJcmV0dXJuIFBHUEFfVEFHX05PX01FUkdFX0pPSU5fTUFURVJJ QUxJWkU7CisJCQlpZiAoc3RyY21wKHRhZywgIm5vX21lcmdlX2pvaW5fcGxhaW4iKSA9PSAw KQorCQkJCXJldHVybiBQR1BBX1RBR19OT19NRVJHRV9KT0lOX1BMQUlOOworCQkJaWYgKHN0 cmNtcCh0YWcsICJub19uZXN0ZWRfbG9vcCIpID09IDApCisJCQkJcmV0dXJuIFBHUEFfVEFH X05PX05FU1RFRF9MT09QOworCQkJaWYgKHN0cmNtcCh0YWcsICJub19uZXN0ZWRfbG9vcF9t YXRlcmlhbGl6ZSIpID09IDApCisJCQkJcmV0dXJuIFBHUEFfVEFHX05PX05FU1RFRF9MT09Q X01BVEVSSUFMSVpFOworCQkJaWYgKHN0cmNtcCh0YWcsICJub19uZXN0ZWRfbG9vcF9tZW1v aXplIikgPT0gMCkKKwkJCQlyZXR1cm4gUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1BfTUVNT0la RTsKKwkJCWlmIChzdHJjbXAodGFnLCAibm9fbmVzdGVkX2xvb3BfcGxhaW4iKSA9PSAwKQor CQkJCXJldHVybiBQR1BBX1RBR19OT19ORVNURURfTE9PUF9QTEFJTjsKKwkJCWlmIChzdHJj bXAodGFnLCAibm9fc2VxX3NjYW4iKSA9PSAwKQorCQkJCXJldHVybiBQR1BBX1RBR19OT19T RVFfU0NBTjsKKwkJCWlmIChzdHJjbXAodGFnLCAibm9fdGlkX3NjYW4iKSA9PSAwKQorCQkJ CXJldHVybiBQR1BBX1RBR19OT19USURfU0NBTjsKIAkJCWJyZWFrOwogCQljYXNlICdwJzoK IAkJCWlmIChzdHJjbXAodGFnLCAicGFydGl0aW9ud2lzZSIpID09IDApCmRpZmYgLS1naXQg YS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfYXN0LmggYi9jb250cmliL3BnX3BsYW5f YWR2aWNlL3BncGFfYXN0LmgKaW5kZXggNGJkNmZmYTVlM2EuLmMxOGZjMTY0YWJjIDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfYXN0LmgKKysrIGIvY29udHJp Yi9wZ19wbGFuX2FkdmljZS9wZ3BhX2FzdC5oCkBAIC05Myw3ICs5MywyMCBAQCB0eXBlZGVm IGVudW0gcGdwYV9hZHZpY2VfdGFnX3R5cGUKIAlQR1BBX1RBR19ORVNURURfTE9PUF9NQVRF UklBTElaRSwKIAlQR1BBX1RBR19ORVNURURfTE9PUF9NRU1PSVpFLAogCVBHUEFfVEFHX05F U1RFRF9MT09QX1BMQUlOLAorCVBHUEFfVEFHX05PX0JJVE1BUF9IRUFQX1NDQU4sCiAJUEdQ QV9UQUdfTk9fR0FUSEVSLAorCVBHUEFfVEFHX05PX0hBU0hfSk9JTiwKKwlQR1BBX1RBR19O T19JTkRFWF9PTkxZX1NDQU4sCisJUEdQQV9UQUdfTk9fSU5ERVhfU0NBTiwKKwlQR1BBX1RB R19OT19NRVJHRV9KT0lOLAorCVBHUEFfVEFHX05PX01FUkdFX0pPSU5fTUFURVJJQUxJWkUs CisJUEdQQV9UQUdfTk9fTUVSR0VfSk9JTl9QTEFJTiwKKwlQR1BBX1RBR19OT19ORVNURURf TE9PUCwKKwlQR1BBX1RBR19OT19ORVNURURfTE9PUF9NQVRFUklBTElaRSwKKwlQR1BBX1RB R19OT19ORVNURURfTE9PUF9NRU1PSVpFLAorCVBHUEFfVEFHX05PX05FU1RFRF9MT09QX1BM QUlOLAorCVBHUEFfVEFHX05PX1NFUV9TQ0FOLAorCVBHUEFfVEFHX05PX1RJRF9TQ0FOLAog CVBHUEFfVEFHX1BBUlRJVElPTldJU0UsCiAJUEdQQV9UQUdfU0VNSUpPSU5fTk9OX1VOSVFV RSwKIAlQR1BBX1RBR19TRU1JSk9JTl9VTklRVUUsCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3BsYW5fYWR2aWNlL3BncGFfcGFyc2VyLnkgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3Bn cGFfcGFyc2VyLnkKaW5kZXggNTgxMWE2ZTVlNTYuLjM4Njg0YmVmNzI3IDEwMDY0NAotLS0g YS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfcGFyc2VyLnkKKysrIGIvY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ3BhX3BhcnNlci55CkBAIC0xMDgsOCArMTA4LDE4IEBAIGFkdmlj ZV9pdGVtOiBUT0tfVEFHX0pPSU5fT1JERVIgJygnIGpvaW5fb3JkZXJfdGFyZ2V0X2xpc3Qg JyknCiAJCQkJJCQtPnRhZyA9IFBHUEFfVEFHX0JJVE1BUF9IRUFQX1NDQU47CiAJCQllbHNl IGlmIChzdHJjbXAoJDEsICJkb19ub3Rfc2NhbiIpID09IDApCiAJCQkJJCQtPnRhZyA9IFBH UEFfVEFHX0RPX05PVF9TQ0FOOworCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAibm9fYml0bWFw X2hlYXBfc2NhbiIpID09IDApCisJCQkJJCQtPnRhZyA9IFBHUEFfVEFHX05PX0JJVE1BUF9I RUFQX1NDQU47CiAJCQllbHNlIGlmIChzdHJjbXAoJDEsICJub19nYXRoZXIiKSA9PSAwKQog CQkJCSQkLT50YWcgPSBQR1BBX1RBR19OT19HQVRIRVI7CisJCQllbHNlIGlmIChzdHJjbXAo JDEsICJub19pbmRleF9vbmx5X3NjYW4iKSA9PSAwKQorCQkJCSQkLT50YWcgPSBQR1BBX1RB R19OT19JTkRFWF9PTkxZX1NDQU47CisJCQllbHNlIGlmIChzdHJjbXAoJDEsICJub19pbmRl eF9zY2FuIikgPT0gMCkKKwkJCQkkJC0+dGFnID0gUEdQQV9UQUdfTk9fSU5ERVhfU0NBTjsK KwkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIm5vX3NlcV9zY2FuIikgPT0gMCkKKwkJCQkkJC0+ dGFnID0gUEdQQV9UQUdfTk9fU0VRX1NDQU47CisJCQllbHNlIGlmIChzdHJjbXAoJDEsICJu b190aWRfc2NhbiIpID09IDApCisJCQkJJCQtPnRhZyA9IFBHUEFfVEFHX05PX1RJRF9TQ0FO OwogCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAic2VxX3NjYW4iKSA9PSAwKQogCQkJCSQkLT50 YWcgPSBQR1BBX1RBR19TRVFfU0NBTjsKIAkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgInRpZF9z Y2FuIikgPT0gMCkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9w bGFubmVyLmMgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfcGxhbm5lci5jCmluZGV4 IGIzMzI5Yjc5M2FhLi5hMjk1MDBlMGUxZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFu X2FkdmljZS9wZ3BhX3BsYW5uZXIuYworKysgYi9jb250cmliL3BnX3BsYW5fYWR2aWNlL3Bn cGFfcGxhbm5lci5jCkBAIC0xNTUsNiArMTU1LDkgQEAgc3RhdGljIGJvb2wgcGdwYV9zZW1p am9pbl9wZXJtaXRzX2pvaW4oaW50IG91dGVyX2NvdW50LCBpbnQgaW5uZXJfY291bnQsCiAJ CQkJCQkJCQkgICBib29sIG91dGVyX2lzX251bGxhYmxlLAogCQkJCQkJCQkJICAgYm9vbCAq cmVzdHJpY3RfbWV0aG9kKTsKIAorc3RhdGljIHVpbnQ2NCBwZ3BhX25vX2pvaW5fbWFza19m cm9tX2FkdmljZV90YWcocGdwYV9hZHZpY2VfdGFnX3R5cGUgdGFnKTsKK3N0YXRpYyB1aW50 NjQgcGdwYV9ub19zY2FuX21hc2tfZnJvbV9hZHZpY2VfdGFnKHBncGFfYWR2aWNlX3RhZ190 eXBlIHRhZyk7CisKIHN0YXRpYyBMaXN0ICpwZ3BhX3BsYW5uZXJfYXBwZW5kX2ZlZWRiYWNr KExpc3QgKmxpc3QsIHBncGFfdHJvdmUgKnRyb3ZlLAogCQkJCQkJCQkJCSAgcGdwYV90cm92 ZV9sb29rdXBfdHlwZSB0eXBlLAogCQkJCQkJCQkJCSAgcGdwYV9pZGVudGlmaWVyICpydF9p ZGVudGlmaWVycywKQEAgLTk0Nyw4ICs5NTAsMTIgQEAgcGdwYV9wbGFubmVyX2FwcGx5X2pv aW5fcGF0aF9hZHZpY2UoSm9pblR5cGUgam9pbnR5cGUsIHVpbnQ2NCAqcGdzX21hc2tfcCwK IAlCaXRtYXBzZXQgICpqb19kZW55X2luZGV4ZXMgPSBOVUxMOwogCUJpdG1hcHNldCAgKmpv X2RlbnlfcmVsX2luZGV4ZXMgPSBOVUxMOwogCUJpdG1hcHNldCAgKmptX2luZGV4ZXMgPSBO VUxMOwotCWJvb2wJCWptX2NvbmZsaWN0ID0gZmFsc2U7CisJYm9vbAkJam1fcG9zX2NvbmZs aWN0ID0gZmFsc2U7CS8qIHBvc2l0aXZlIHRhZ3MgZGlzYWdyZWUgKi8KKwlib29sCQlqbV9w b3NfbmVnX2NvbmZsaWN0ID0gZmFsc2U7CS8qIGEgcG9zaXRpdmUgbWV0aG9kIGlzCisJCQkJ CQkJCQkJCQkgKiBmb3JiaWRkZW4gKi8KIAl1aW50NjQJCWpvaW5fbWFzayA9IDA7CisJQml0 bWFwc2V0ICAqbm9fam1faW5kZXhlcyA9IE5VTEw7CisJdWludDY0CQlub19qb2luX21hc2sg PSAwOwogCUJpdG1hcHNldCAgKnNqX3Blcm1pdF9pbmRleGVzID0gTlVMTDsKIAlCaXRtYXBz ZXQgICpzal9kZW55X2luZGV4ZXMgPSBOVUxMOwogCkBAIC0xMDQzLDEyICsxMDUwLDQzIEBA IHBncGFfcGxhbm5lcl9hcHBseV9qb2luX3BhdGhfYWR2aWNlKEpvaW5UeXBlIGpvaW50eXBl LCB1aW50NjQgKnBnc19tYXNrX3AsCiAJCQl7CiAJCQkJam1faW5kZXhlcyA9IGJtc19hZGRf bWVtYmVyKGptX2luZGV4ZXMsIGkpOwogCQkJCWlmIChqb2luX21hc2sgIT0gMCAmJiBqb2lu X21hc2sgIT0gbXlfam9pbl9tYXNrKQotCQkJCQlqbV9jb25mbGljdCA9IHRydWU7CisJCQkJ CWptX3Bvc19jb25mbGljdCA9IHRydWU7CiAJCQkJam9pbl9tYXNrID0gbXlfam9pbl9tYXNr OwogCQkJfQogCQkJY29udGludWU7CiAJCX0KIAorCQkvKiBIYW5kbGUgTk9fIGpvaW4gbWV0 aG9kIGFkdmljZS4gKi8KKwkJeworCQkJdWludDY0CQlteV9ub19qb2luX21hc2s7CisKKwkJ CW15X25vX2pvaW5fbWFzayA9IHBncGFfbm9fam9pbl9tYXNrX2Zyb21fYWR2aWNlX3RhZyhl bnRyeS0+dGFnKTsKKwkJCWlmIChteV9ub19qb2luX21hc2sgIT0gMCkKKwkJCXsKKwkJCQli b29sCQlwZXJtaXQ7CisJCQkJYm9vbAkJcmVzdHJpY3RfbWV0aG9kOworCisJCQkJLyoKKwkJ CQkgKiBOT18gam9pbiB0YWdzIGltcG9zZSB0aGUgc2FtZSBqb2luLW9yZGVyIGNvbnN0cmFp bnQgYXMKKwkJCQkgKiBwb3NpdGl2ZSBvbmVzOiB0aGUgdGFyZ2V0IG11c3QgYmUgdGhlIGlu bmVyIHJlbC4gIFJldXNlCisJCQkJICogcGdwYV9qb2luX21ldGhvZF9wZXJtaXRzX2pvaW4g dG8gZW5mb3JjZSBpdC4KKwkJCQkgKi8KKwkJCQlwZXJtaXQgPSBwZ3BhX2pvaW5fbWV0aG9k X3Blcm1pdHNfam9pbihwanMtPm91dGVyX2NvdW50LAorCQkJCQkJCQkJCQkJCSAgIHBqcy0+ aW5uZXJfY291bnQsCisJCQkJCQkJCQkJCQkJICAgcGpzLT5yaWRzLAorCQkJCQkJCQkJCQkJ CSAgIGVudHJ5LAorCQkJCQkJCQkJCQkJCSAgICZyZXN0cmljdF9tZXRob2QpOworCQkJCWlm ICghcGVybWl0KQorCQkJCQlqb19kZW55X2luZGV4ZXMgPSBibXNfYWRkX21lbWJlcihqb19k ZW55X2luZGV4ZXMsIGkpOworCQkJCWVsc2UgaWYgKHJlc3RyaWN0X21ldGhvZCkKKwkJCQl7 CisJCQkJCW5vX2ptX2luZGV4ZXMgPSBibXNfYWRkX21lbWJlcihub19qbV9pbmRleGVzLCBp KTsKKwkJCQkJbm9fam9pbl9tYXNrIHw9IG15X25vX2pvaW5fbWFzazsKKwkJCQl9CisJCQkJ Y29udGludWU7CisJCQl9CisJCX0KKwogCQkvKiBIYW5kbGUgc2VtaWpvaW4gdW5pcXVlbmVz cyBhZHZpY2UuICovCiAJCWlmIChlbnRyeS0+dGFnID09IFBHUEFfVEFHX1NFTUlKT0lOX1VO SVFVRSB8fAogCQkJZW50cnktPnRhZyA9PSBQR1BBX1RBR19TRU1JSk9JTl9OT05fVU5JUVVF KQpAQCAtMTExOCwxMyArMTE1NiwyNiBAQCBwZ3BhX3BsYW5uZXJfYXBwbHlfam9pbl9wYXRo X2FkdmljZShKb2luVHlwZSBqb2ludHlwZSwgdWludDY0ICpwZ3NfbWFza19wLAogCX0KIAog CS8qCi0JICogSWYgbW9yZSB0aGFuIG9uZSBqb2luIG1ldGhvZCBzcGVjaWZpY2F0aW9uIGlz IHJlbGV2YW50IGhlcmUgYW5kIHRoZXkKLQkgKiBkaWZmZXIsIG1hcmsgdGhlbSBhbGwgYXMg Y29uZmxpY3RpbmcuCisJICogSWYgbW9yZSB0aGFuIG9uZSBwb3NpdGl2ZSBqb2luIG1ldGhv ZCBzcGVjaWZpY2F0aW9uIGlzIHJlbGV2YW50IGhlcmUKKwkgKiBhbmQgdGhleSBkaWZmZXIs IG1hcmsgdGhlbSBhbGwgYXMgY29uZmxpY3RpbmcuCiAJICovCi0JaWYgKGptX2NvbmZsaWN0 KQorCWlmIChqbV9wb3NfY29uZmxpY3QpCiAJCXBncGFfdHJvdmVfc2V0X2ZsYWdzKHBqcy0+ am9pbl9lbnRyaWVzLCBqbV9pbmRleGVzLAogCQkJCQkJCSBQR1BBX0ZCX0NPTkZMSUNUSU5H KTsKIAorCS8qCisJICogRGV0ZWN0IHBvc2l0aXZlLXZzLW5lZ2F0aXZlIGpvaW4gbWV0aG9k IGNvbmZsaWN0OiBhIG1ldGhvZCBib3RoCisJICogcmVxdWlyZWQgYnkgYSBwb3NpdGl2ZSB0 YWcgYW5kIGZvcmJpZGRlbiBieSBhIE5PXyB0YWcuCisJICovCisJaWYgKChqb2luX21hc2sg JiBub19qb2luX21hc2spICE9IDApCisJeworCQlqbV9wb3NfbmVnX2NvbmZsaWN0ID0gdHJ1 ZTsKKwkJcGdwYV90cm92ZV9zZXRfZmxhZ3MocGpzLT5qb2luX2VudHJpZXMsIGptX2luZGV4 ZXMsCisJCQkJCQkJIFBHUEFfRkJfQ09ORkxJQ1RJTkcpOworCQlwZ3BhX3Ryb3ZlX3NldF9m bGFncyhwanMtPmpvaW5fZW50cmllcywgbm9fam1faW5kZXhlcywKKwkJCQkJCQkgUEdQQV9G Ql9DT05GTElDVElORyk7CisJfQorCiAJLyogSWYgc2VtaWpvaW4gYWR2aWNlIHNheXMgYm90 aCB5ZXMgYW5kIG5vLCBtYXJrIGl0IGFsbCBhcyBjb25mbGljdGluZy4gKi8KIAlpZiAoc2pf cGVybWl0X2luZGV4ZXMgIT0gTlVMTCAmJiBzal9kZW55X2luZGV4ZXMgIT0gTlVMTCkKIAl7 CkBAIC0xMTQzLDE4ICsxMTk0LDE4IEBAIHBncGFfcGxhbm5lcl9hcHBseV9qb2luX3BhdGhf YWR2aWNlKEpvaW5UeXBlIGpvaW50eXBlLCB1aW50NjQgKnBnc19tYXNrX3AsCiAJaWYgKChq b19kZW55X2luZGV4ZXMgIT0gTlVMTCB8fCBqb19kZW55X3JlbF9pbmRleGVzICE9IE5VTEwp ICYmCiAJCWpvX3Blcm1pdF9pbmRleGVzID09IE5VTEwpCiAJCSpwZ3NfbWFza19wICY9IH5Q R1NfSk9JTl9BTlk7Ci0JaWYgKGpvaW5fbWFzayAhPSAwICYmICFqbV9jb25mbGljdCkKKwlp ZiAoam9pbl9tYXNrICE9IDAgJiYgIWptX3Bvc19jb25mbGljdCAmJiAham1fcG9zX25lZ19j b25mbGljdCkKIAkJKnBnc19tYXNrX3AgJj0gfihQR1NfSk9JTl9BTlkgJiB+am9pbl9tYXNr KTsKKwlpZiAobm9fam9pbl9tYXNrICE9IDAgJiYgIWptX3Bvc19uZWdfY29uZmxpY3QpCisJ CSpwZ3NfbWFza19wICY9IH5ub19qb2luX21hc2s7CiAJaWYgKHNqX2RlbnlfaW5kZXhlcyAh PSBOVUxMICYmIHNqX3Blcm1pdF9pbmRleGVzID09IE5VTEwpCiAJCSpwZ3NfbWFza19wICY9 IH5QR1NfSk9JTl9BTlk7CiB9CiAKIC8qCi0gKiBUcmFuc2xhdGUgYW4gYWR2aWNlIHRhZyBp bnRvIGEgcGF0aCBnZW5lcmF0aW9uIHN0cmF0ZWd5IG1hc2suCisgKiBUcmFuc2xhdGUgYSBw b3NpdGl2ZSBqb2luIGFkdmljZSB0YWcgaW50byBhIHN0cmF0ZWd5IG1hc2sgdG8gZW5mb3Jj ZS4KICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgd2l0aCB0YWcgdHlwZXMg dGhhdCBkb24ndCByZXByZXNlbnQgam9pbgotICogc3RyYXRlZ2llcy4gSW4gc3VjaCBjYXNl cywgd2UganVzdCByZXR1cm4gMCwgd2hpY2ggY2FuJ3QgYmUgY29uZnVzZWQgd2l0aAotICog YSB2YWxpZCBtYXNrLgorICogUmV0dXJucyAwIGZvciB0YWdzIHRoYXQgZG9uJ3QgcmVwcmVz ZW50IChwb3NpdGl2ZSkgam9pbiBzdHJhdGVnaWVzLgogICovCiBzdGF0aWMgdWludDY0CiBw Z3BhX2pvaW5fc3RyYXRlZ3lfbWFza19mcm9tX2FkdmljZV90YWcocGdwYV9hZHZpY2VfdGFn X3R5cGUgdGFnKQpAQCAtMTE4MCw2ICsxMjMxLDM3IEBAIHBncGFfam9pbl9zdHJhdGVneV9t YXNrX2Zyb21fYWR2aWNlX3RhZyhwZ3BhX2FkdmljZV90YWdfdHlwZSB0YWcpCiAJfQogfQog CisvKgorICogVHJhbnNsYXRlIGEgTk9fIGpvaW4gYWR2aWNlIHRhZyBpbnRvIGEgc3RyYXRl Z3kgbWFzayB0byBmb3JiaWQuCisgKgorICogUmV0dXJucyAwIGZvciB0YWdzIHRoYXQgYXJl bid0IE5PXyBqb2luIHRhZ3MuCisgKi8KK3N0YXRpYyB1aW50NjQKK3BncGFfbm9fam9pbl9t YXNrX2Zyb21fYWR2aWNlX3RhZyhwZ3BhX2FkdmljZV90YWdfdHlwZSB0YWcpCit7CisJc3dp dGNoICh0YWcpCisJeworCQljYXNlIFBHUEFfVEFHX05PX0hBU0hfSk9JTjoKKwkJCXJldHVy biBQR1NfSEFTSEpPSU47CisJCWNhc2UgUEdQQV9UQUdfTk9fTUVSR0VfSk9JTjoKKwkJCXJl dHVybiBQR1NfTUVSR0VKT0lOX0FOWTsKKwkJY2FzZSBQR1BBX1RBR19OT19NRVJHRV9KT0lO X01BVEVSSUFMSVpFOgorCQkJcmV0dXJuIFBHU19NRVJHRUpPSU5fTUFURVJJQUxJWkU7CisJ CWNhc2UgUEdQQV9UQUdfTk9fTUVSR0VfSk9JTl9QTEFJTjoKKwkJCXJldHVybiBQR1NfTUVS R0VKT0lOX1BMQUlOOworCQljYXNlIFBHUEFfVEFHX05PX05FU1RFRF9MT09QOgorCQkJcmV0 dXJuIFBHU19ORVNUTE9PUF9BTlk7CisJCWNhc2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1Bf TUFURVJJQUxJWkU6CisJCQlyZXR1cm4gUEdTX05FU1RMT09QX01BVEVSSUFMSVpFOworCQlj YXNlIFBHUEFfVEFHX05PX05FU1RFRF9MT09QX01FTU9JWkU6CisJCQlyZXR1cm4gUEdTX05F U1RMT09QX01FTU9JWkU7CisJCWNhc2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1BfUExBSU46 CisJCQlyZXR1cm4gUEdTX05FU1RMT09QX1BMQUlOOworCQlkZWZhdWx0OgorCQkJcmV0dXJu IDA7CisJfQorfQorCiAvKgogICogRG9lcyBhIGNlcnRhaW4gaXRlbSBvZiBqb2luIG9yZGVy IGFkdmljZSBwZXJtaXQgYSBjZXJ0YWluIGpvaW4/CiAgKgpAQCAtMTYxOSw2ICsxNzAxLDMx IEBAIHBncGFfc2VtaWpvaW5fcGVybWl0c19qb2luKGludCBvdXRlcl9jb3VudCwgaW50IGlu bmVyX2NvdW50LAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIFRyYW5zbGF0ZSBhIE5P XyBzY2FuIGFkdmljZSB0YWcgaW50byBhIHN0cmF0ZWd5IG1hc2sgdG8gZm9yYmlkLgorICoK KyAqIFJldHVybnMgMCBmb3IgdGFncyB0aGF0IGFyZW4ndCBOT18gc2NhbiB0YWdzLgorICov CitzdGF0aWMgdWludDY0CitwZ3BhX25vX3NjYW5fbWFza19mcm9tX2FkdmljZV90YWcocGdw YV9hZHZpY2VfdGFnX3R5cGUgdGFnKQoreworCXN3aXRjaCAodGFnKQorCXsKKwkJY2FzZSBQ R1BBX1RBR19OT19CSVRNQVBfSEVBUF9TQ0FOOgorCQkJcmV0dXJuIFBHU19CSVRNQVBTQ0FO OworCQljYXNlIFBHUEFfVEFHX05PX0lOREVYX09OTFlfU0NBTjoKKwkJCXJldHVybiBQR1Nf SU5ERVhPTkxZU0NBTiB8IFBHU19DT05TSURFUl9JTkRFWE9OTFk7CisJCWNhc2UgUEdQQV9U QUdfTk9fSU5ERVhfU0NBTjoKKwkJCXJldHVybiBQR1NfSU5ERVhTQ0FOOworCQljYXNlIFBH UEFfVEFHX05PX1NFUV9TQ0FOOgorCQkJcmV0dXJuIFBHU19TRVFTQ0FOOworCQljYXNlIFBH UEFfVEFHX05PX1RJRF9TQ0FOOgorCQkJcmV0dXJuIFBHU19USURTQ0FOOworCQlkZWZhdWx0 OgorCQkJcmV0dXJuIDA7CisJfQorfQorCiAvKgogICogQXBwbHkgc2NhbiBhZHZpY2UgdG8g YSBSZWxPcHRJbmZvLgogICovCkBAIC0xNjM3LDE5ICsxNzQ0LDM2IEBAIHBncGFfcGxhbm5l cl9hcHBseV9zY2FuX2FkdmljZShSZWxPcHRJbmZvICpyZWwsCiAJaW50CQkJaSA9IC0xOwog CXBncGFfdHJvdmVfZW50cnkgKnNjYW5fZW50cnkgPSBOVUxMOwogCWludAkJCWZsYWdzOwot CWJvb2wJCXNjYW5fdHlwZV9jb25mbGljdCA9IGZhbHNlOworCWJvb2wJCXNjYW5fcG9zX2Nv bmZsaWN0ID0gZmFsc2U7CS8qIHBvc2l0aXZlIHRhZ3MgZGlzYWdyZWUgKi8KKwlib29sCQlz Y2FuX3Bvc19uZWdfY29uZmxpY3QgPSBmYWxzZTsJLyogYSBwb3NpdGl2ZSBtZXRob2QgaXMK KwkJCQkJCQkJCQkJCSAqIGZvcmJpZGRlbiAqLwogCUJpdG1hcHNldCAgKnNjYW5fdHlwZV9p bmRleGVzID0gTlVMTDsKIAlCaXRtYXBzZXQgICpzY2FuX3R5cGVfcmVsX2luZGV4ZXMgPSBO VUxMOworCUJpdG1hcHNldCAgKm5vX3NjYW5faW5kZXhlcyA9IE5VTEw7CiAJdWludDY0CQln YXRoZXJfbWFzayA9IDA7CiAJdWludDY0CQlzY2FuX3R5cGUgPSBhbGxfc2Nhbl9tYXNrOwkv KiBzZW50aW5lbDogbm8gYWR2aWNlIHlldCAqLworCXVpbnQ2NAkJbm9fc2Nhbl9tYXNrID0g MDsKIAogCS8qIFNjcnV0aW5pemUgYXZhaWxhYmxlIHNjYW4gYWR2aWNlLiAqLwogCXdoaWxl ICgoaSA9IGJtc19uZXh0X21lbWJlcihzY2FuX2luZGV4ZXMsIGkpKSA+PSAwKQogCXsKIAkJ cGdwYV90cm92ZV9lbnRyeSAqbXlfZW50cnkgPSAmc2Nhbl9lbnRyaWVzW2ldOwogCQl1aW50 NjQJCW15X3NjYW5fdHlwZSA9IGFsbF9zY2FuX21hc2s7CisJCXVpbnQ2NAkJbXlfbm9fc2Nh bl9tYXNrOworCisJCS8qCisJCSAqIE5PXyBzY2FuIHRhZ3MganVzdCBhY2N1bXVsYXRlIGEg c2V0IG9mIGZvcmJpZGRlbiBtZXRob2RzOyBoYW5kbGUKKwkJICogdGhlbSBzZXBhcmF0ZWx5 IGZyb20gdGhlIHBvc2l0aXZlIHNjYW4tdHlwZSBsb2dpYyBiZWxvdy4KKwkJICovCisJCW15 X25vX3NjYW5fbWFzayA9IHBncGFfbm9fc2Nhbl9tYXNrX2Zyb21fYWR2aWNlX3RhZyhteV9l bnRyeS0+dGFnKTsKKwkJaWYgKG15X25vX3NjYW5fbWFzayAhPSAwKQorCQl7CisJCQlub19z Y2FuX21hc2sgfD0gbXlfbm9fc2Nhbl9tYXNrOworCQkJbm9fc2Nhbl9pbmRleGVzID0gYm1z X2FkZF9tZW1iZXIobm9fc2Nhbl9pbmRleGVzLCBpKTsKKwkJCWNvbnRpbnVlOworCQl9CiAK LQkJLyogVHJhbnNsYXRlIG91ciBhZHZpY2UgdGFncyB0byBhIHNjYW4gc3RyYXRlZ3kgYWR2 aWNlIHZhbHVlLiAqLworCQkvKiBUcmFuc2xhdGUgcG9zaXRpdmUgYWR2aWNlIHRhZ3MgdG8g YSBzY2FuIHN0cmF0ZWd5IHZhbHVlLiAqLwogCQlpZiAobXlfZW50cnktPnRhZyA9PSBQR1BB X1RBR19ET19OT1RfU0NBTikKIAkJCW15X3NjYW5fdHlwZSA9IDA7CiAJCWVsc2UgaWYgKG15 X2VudHJ5LT50YWcgPT0gUEdQQV9UQUdfQklUTUFQX0hFQVBfU0NBTikKQEAgLTE2OTAsMTkg KzE4MTQsMjcgQEAgcGdwYV9wbGFubmVyX2FwcGx5X3NjYW5fYWR2aWNlKFJlbE9wdEluZm8g KnJlbCwKIAkJaWYgKG15X3NjYW5fdHlwZSAhPSBhbGxfc2Nhbl9tYXNrKQogCQl7CiAJCQlp ZiAoc2Nhbl90eXBlICE9IGFsbF9zY2FuX21hc2sgJiYgc2Nhbl90eXBlICE9IG15X3NjYW5f dHlwZSkKLQkJCQlzY2FuX3R5cGVfY29uZmxpY3QgPSB0cnVlOwotCQkJaWYgKCFzY2FuX3R5 cGVfY29uZmxpY3QgJiYgc2Nhbl9lbnRyeSAhPSBOVUxMICYmCisJCQkJc2Nhbl9wb3NfY29u ZmxpY3QgPSB0cnVlOworCQkJaWYgKCFzY2FuX3Bvc19jb25mbGljdCAmJiBzY2FuX2VudHJ5 ICE9IE5VTEwgJiYKIAkJCQlteV9lbnRyeS0+dGFyZ2V0LT5pdGFyZ2V0ICE9IE5VTEwgJiYK IAkJCQlzY2FuX2VudHJ5LT50YXJnZXQtPml0YXJnZXQgIT0gTlVMTCAmJgogCQkJCSFwZ3Bh X2luZGV4X3RhcmdldHNfZXF1YWwoc2Nhbl9lbnRyeS0+dGFyZ2V0LT5pdGFyZ2V0LAogCQkJ CQkJCQkJCSAgbXlfZW50cnktPnRhcmdldC0+aXRhcmdldCkpCi0JCQkJc2Nhbl90eXBlX2Nv bmZsaWN0ID0gdHJ1ZTsKKwkJCQlzY2FuX3Bvc19jb25mbGljdCA9IHRydWU7CiAJCQlzY2Fu X2VudHJ5ID0gbXlfZW50cnk7CiAJCQlzY2FuX3R5cGUgPSBteV9zY2FuX3R5cGU7CiAJCQlz Y2FuX3R5cGVfaW5kZXhlcyA9IGJtc19hZGRfbWVtYmVyKHNjYW5fdHlwZV9pbmRleGVzLCBp KTsKIAkJfQogCX0KIAorCS8qCisJICogRGV0ZWN0IHBvc2l0aXZlLXZzLW5lZ2F0aXZlIHNj YW4gY29uZmxpY3Q6IGEgcG9zaXRpdmUgc2NhbiB0eXBlIHRoYXQgaXMKKwkgKiBzaW11bHRh bmVvdXNseSBmb3JiaWRkZW4gYnkgYSBOT18gdGFnLiAgVHdvIE5PXyB0YWdzIGZvciBkaWZm ZXJlbnQKKwkgKiBtZXRob2RzIGFyZSBuZXZlciBpbiBjb25mbGljdCB3aXRoIGVhY2ggb3Ro ZXIuCisJICovCisJaWYgKHNjYW5fdHlwZSAhPSBhbGxfc2Nhbl9tYXNrICYmIChzY2FuX3R5 cGUgJiBub19zY2FuX21hc2spICE9IDApCisJCXNjYW5fcG9zX25lZ19jb25mbGljdCA9IHRy dWU7CisKIAkvKiBTY3J1dGluaXplIGF2YWlsYWJsZSBnYXRoZXItcmVsYXRlZCBhbmQgcGFy dGl0aW9ud2lzZSBhZHZpY2UuICovCiAJaSA9IC0xOwogCXdoaWxlICgoaSA9IGJtc19uZXh0 X21lbWJlcihyZWxfaW5kZXhlcywgaSkpID49IDApCkBAIC0xNzI1LDcgKzE4NTcsNyBAQCBw Z3BhX3BsYW5uZXJfYXBwbHlfc2Nhbl9hZHZpY2UoUmVsT3B0SW5mbyAqcmVsLAogCQkJCWNv bnN0IHVpbnQ2NCBteV9zY2FuX3R5cGUgPSBQR1NfQVBQRU5EIHwgUEdTX01FUkdFX0FQUEVO RDsKIAogCQkJCWlmIChzY2FuX3R5cGUgIT0gYWxsX3NjYW5fbWFzayAmJiBzY2FuX3R5cGUg IT0gbXlfc2Nhbl90eXBlKQotCQkJCQlzY2FuX3R5cGVfY29uZmxpY3QgPSB0cnVlOworCQkJ CQlzY2FuX3Bvc19jb25mbGljdCA9IHRydWU7CiAJCQkJc2Nhbl9lbnRyeSA9IG15X2VudHJ5 OwogCQkJCXNjYW5fdHlwZSA9IG15X3NjYW5fdHlwZTsKIAkJCQlzY2FuX3R5cGVfcmVsX2lu ZGV4ZXMgPQpAQCAtMTc3OCw3ICsxOTEwLDcgQEAgcGdwYV9wbGFubmVyX2FwcGx5X3NjYW5f YWR2aWNlKFJlbE9wdEluZm8gKnJlbCwKIAl9CiAKIAkvKiBFbmZvcmNlIGNob2ljZSBvZiBp bmRleC4gKi8KLQlpZiAoc2Nhbl9lbnRyeSAhPSBOVUxMICYmICFzY2FuX3R5cGVfY29uZmxp Y3QgJiYKKwlpZiAoc2Nhbl9lbnRyeSAhPSBOVUxMICYmICFzY2FuX3Bvc19jb25mbGljdCAm JgogCQkoc2Nhbl9lbnRyeS0+dGFnID09IFBHUEFfVEFHX0lOREVYX1NDQU4gfHwKIAkJIHNj YW5fZW50cnktPnRhZyA9PSBQR1BBX1RBR19JTkRFWF9PTkxZX1NDQU4pKQogCXsKQEAgLTE4 MjIsMTQgKzE5NTQsMjQgQEAgcGdwYV9wbGFubmVyX2FwcGx5X3NjYW5fYWR2aWNlKFJlbE9w dEluZm8gKnJlbCwKIAogCS8qCiAJICogTWFyayBhbGwgdGhlIHNjYW4gbWV0aG9kIGVudHJp ZXMgYXMgZnVsbHkgbWF0Y2hlZDsgYW5kIGlmIHRoZXkgc3BlY2lmeQotCSAqIGRpZmZlcmVu dCB0aGluZ3MsIG1hcmsgdGhlbSBhbGwgYXMgY29uZmxpY3RpbmcuCisJICogZGlmZmVyZW50 IHRoaW5ncywgbWFyayB0aGVtIGFsbCBhcyBjb25mbGljdGluZy4gIEFsc28gbWFyayB0aGVt IGFzCisJICogY29uZmxpY3RpbmcgaWYgYW55IE5PXyB0YWcgZm9yYmlkcyB0aGUgcmVxdWVz dGVkIHNjYW4gbWV0aG9kLgogCSAqLwogCWZsYWdzID0gUEdQQV9GQl9NQVRDSF9QQVJUSUFM IHwgUEdQQV9GQl9NQVRDSF9GVUxMOwotCWlmIChzY2FuX3R5cGVfY29uZmxpY3QpCisJaWYg KHNjYW5fcG9zX2NvbmZsaWN0IHx8IHNjYW5fcG9zX25lZ19jb25mbGljdCkKIAkJZmxhZ3Mg fD0gUEdQQV9GQl9DT05GTElDVElORzsKIAlwZ3BhX3Ryb3ZlX3NldF9mbGFncyhzY2FuX2Vu dHJpZXMsIHNjYW5fdHlwZV9pbmRleGVzLCBmbGFncyk7CiAJcGdwYV90cm92ZV9zZXRfZmxh Z3MocmVsX2VudHJpZXMsIHNjYW5fdHlwZV9yZWxfaW5kZXhlcywgZmxhZ3MpOwogCisJLyoK KwkgKiBNYXJrIE5PXyBzY2FuIGVudHJpZXMgYXMgZnVsbHkgbWF0Y2hlZC4gQWxzbyBtYXJr IHRoZW0gYXMgY29uZmxpY3RpbmcKKwkgKiB3aGVuIGEgcG9zaXRpdmUgdGFnIHJlcXVlc3Rz IHRoZSBzYW1lIHNjYW4gbWV0aG9kLgorCSAqLworCWZsYWdzID0gUEdQQV9GQl9NQVRDSF9Q QVJUSUFMIHwgUEdQQV9GQl9NQVRDSF9GVUxMOworCWlmIChzY2FuX3Bvc19uZWdfY29uZmxp Y3QpCisJCWZsYWdzIHw9IFBHUEFfRkJfQ09ORkxJQ1RJTkc7CisJcGdwYV90cm92ZV9zZXRf ZmxhZ3Moc2Nhbl9lbnRyaWVzLCBub19zY2FuX2luZGV4ZXMsIGZsYWdzKTsKKwogCS8qCiAJ ICogTWFyayBldmVyeSBHYXRoZXItcmVsYXRlZCBwaWVjZSBvZiBhZHZpY2UgYXMgcGFydGlh bGx5IG1hdGNoZWQuIE1hcmsKIAkgKiB0aGUgb25lcyB0aGF0IGluY2x1ZGVkIHRoaXMgcmVs YXRpb24gYXMgYSB0YXJnZXQgYnkgaXRzZWxmIGFzIGZ1bGx5CkBAIC0xODQ3LDggKzE5ODks MTAgQEAgcGdwYV9wbGFubmVyX2FwcGx5X3NjYW5fYWR2aWNlKFJlbE9wdEluZm8gKnJlbCwK IAkgKiBPbmx5IGNsZWFyIGJpdHMgaGVyZSwgc28gdGhhdCB3ZSBzdGlsbCByZXNwZWN0IHRo ZSBlbmFibGVfKiBHVUNzLiBEbwogCSAqIG5vdGhpbmcgaW4gY2FzZXMgd2hlcmUgdGhlIGFk dmljZSBvbiBhIHNpbmdsZSB0b3BpYyBjb25mbGljdHMuCiAJICovCi0JaWYgKHNjYW5fdHlw ZSAhPSBhbGxfc2Nhbl9tYXNrICYmICFzY2FuX3R5cGVfY29uZmxpY3QpCisJaWYgKHNjYW5f dHlwZSAhPSBhbGxfc2Nhbl9tYXNrICYmICFzY2FuX3Bvc19jb25mbGljdCAmJiAhc2Nhbl9w b3NfbmVnX2NvbmZsaWN0KQogCQlyZWwtPnBnc19tYXNrICY9IH4oYWxsX3NjYW5fbWFzayAm IH5zY2FuX3R5cGUpOworCWlmIChub19zY2FuX21hc2sgIT0gMCAmJiAhc2Nhbl9wb3NfbmVn X2NvbmZsaWN0KQorCQlyZWwtPnBnc19tYXNrICY9IH4oYWxsX3NjYW5fbWFzayAmIG5vX3Nj YW5fbWFzayk7CiAJaWYgKGdhdGhlcl9tYXNrICE9IDAgJiYgIWdhdGhlcl9jb25mbGljdCkK IAl7CiAJCXVpbnQ2NAkJYWxsX2dhdGhlcl9tYXNrOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19wbGFuX2FkdmljZS9wZ3BhX3NjYW5uZXIubCBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2Uv cGdwYV9zY2FubmVyLmwKaW5kZXggMTVkNjdjZDQ4OTYuLmMxMGQ1ZWRmNTM3IDEwMDY0NAot LS0gYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfc2Nhbm5lci5sCisrKyBiL2NvbnRy aWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FubmVyLmwKQEAgLTEzMCw3ICsxMzAsMTIgQEAg eGNpbnNpZGUJCVteKi9dKwogCQkJCQkJCSB0YWcgPT0gUEdQQV9UQUdfVElEX1NDQU4gfHwK IAkJCQkJCQkgdGFnID09IFBHUEFfVEFHX0JJVE1BUF9IRUFQX1NDQU4gfHwKIAkJCQkJCQkg dGFnID09IFBHUEFfVEFHX05PX0dBVEhFUiB8fAotCQkJCQkJCSB0YWcgPT0gUEdQQV9UQUdf RE9fTk9UX1NDQU4pCisJCQkJCQkJIHRhZyA9PSBQR1BBX1RBR19ET19OT1RfU0NBTiB8fAor CQkJCQkJCSB0YWcgPT0gUEdQQV9UQUdfTk9fU0VRX1NDQU4gfHwKKwkJCQkJCQkgdGFnID09 IFBHUEFfVEFHX05PX1RJRF9TQ0FOIHx8CisJCQkJCQkJIHRhZyA9PSBQR1BBX1RBR19OT19C SVRNQVBfSEVBUF9TQ0FOIHx8CisJCQkJCQkJIHRhZyA9PSBQR1BBX1RBR19OT19JTkRFWF9T Q0FOIHx8CisJCQkJCQkJIHRhZyA9PSBQR1BBX1RBR19OT19JTkRFWF9PTkxZX1NDQU4pCiAJ CQkJCQlyZXR1cm4gVE9LX1RBR19TSU1QTEU7CiAJCQkJCWVsc2UKIAkJCQkJCXJldHVybiBU T0tfVEFHX0dFTkVSSUM7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3Bn cGFfdHJvdmUuYyBiL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV90cm92ZS5jCmluZGV4 IGNhNjlmM2JkM2RmLi5hYmUxMDM2M2QzZSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19wbGFu X2FkdmljZS9wZ3BhX3Ryb3ZlLmMKKysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3Bh X3Ryb3ZlLmMKQEAgLTE2Niw2ICsxNjYsMTEgQEAgcGdwYV9idWlsZF90cm92ZShMaXN0ICph ZHZpY2VfaXRlbXMpCiAJCQljYXNlIFBHUEFfVEFHX0RPX05PVF9TQ0FOOgogCQkJY2FzZSBQ R1BBX1RBR19JTkRFWF9PTkxZX1NDQU46CiAJCQljYXNlIFBHUEFfVEFHX0lOREVYX1NDQU46 CisJCQljYXNlIFBHUEFfVEFHX05PX0JJVE1BUF9IRUFQX1NDQU46CisJCQljYXNlIFBHUEFf VEFHX05PX0lOREVYX09OTFlfU0NBTjoKKwkJCWNhc2UgUEdQQV9UQUdfTk9fSU5ERVhfU0NB TjoKKwkJCWNhc2UgUEdQQV9UQUdfTk9fU0VRX1NDQU46CisJCQljYXNlIFBHUEFfVEFHX05P X1RJRF9TQ0FOOgogCQkJY2FzZSBQR1BBX1RBR19TRVFfU0NBTjoKIAkJCWNhc2UgUEdQQV9U QUdfVElEX1NDQU46CiAKQEAgLTE5Miw2ICsxOTcsMTQgQEAgcGdwYV9idWlsZF90cm92ZShM aXN0ICphZHZpY2VfaXRlbXMpCiAJCQljYXNlIFBHUEFfVEFHX05FU1RFRF9MT09QX01BVEVS SUFMSVpFOgogCQkJY2FzZSBQR1BBX1RBR19ORVNURURfTE9PUF9NRU1PSVpFOgogCQkJY2Fz ZSBQR1BBX1RBR19ORVNURURfTE9PUF9QTEFJTjoKKwkJCWNhc2UgUEdQQV9UQUdfTk9fSEFT SF9KT0lOOgorCQkJY2FzZSBQR1BBX1RBR19OT19NRVJHRV9KT0lOOgorCQkJY2FzZSBQR1BB X1RBR19OT19NRVJHRV9KT0lOX01BVEVSSUFMSVpFOgorCQkJY2FzZSBQR1BBX1RBR19OT19N RVJHRV9KT0lOX1BMQUlOOgorCQkJY2FzZSBQR1BBX1RBR19OT19ORVNURURfTE9PUDoKKwkJ CWNhc2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1BfTUFURVJJQUxJWkU6CisJCQljYXNlIFBH UEFfVEFHX05PX05FU1RFRF9MT09QX01FTU9JWkU6CisJCQljYXNlIFBHUEFfVEFHX05PX05F U1RFRF9MT09QX1BMQUlOOgogCQkJY2FzZSBQR1BBX1RBR19TRU1JSk9JTl9OT05fVU5JUVVF OgogCQkJY2FzZSBQR1BBX1RBR19TRU1JSk9JTl9VTklRVUU6CiAKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV93YWxrZXIuYyBiL2NvbnRyaWIvcGdfcGxhbl9h ZHZpY2UvcGdwYV93YWxrZXIuYwppbmRleCA3YjI5OTQ0MGQ0ZC4uMDhlMDg4M2ZhYzEgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV93YWxrZXIuYworKysgYi9j b250cmliL3BnX3BsYW5fYWR2aWNlL3BncGFfd2Fsa2VyLmMKQEAgLTg5NCw2ICs4OTQsNzcg QEAgcGdwYV93YWxrZXJfd291bGRfYWR2aXNlKHBncGFfcGxhbl93YWxrZXJfY29udGV4dCAq d2Fsa2VyLAogCQkJCQkJCQkJCQkgcmVsaWRzKTsKIAkJY2FzZSBQR1BBX1RBR19OT19HQVRI RVI6CiAJCQlyZXR1cm4gcGdwYV93YWxrZXJfY29udGFpbnNfbm9fZ2F0aGVyKHdhbGtlciwg cmVsaWRzKTsKKworCQkJLyoKKwkJCSAqIEZvciBOT18gc2NhbiB0YWdzLCB0aGUgYWR2aWNl IGlzIHNhdGlzZmllZCB3aGVuIHRoZSBwbGFuIGRvZXMKKwkJCSAqIE5PVCB1c2UgdGhlIGZv cmJpZGRlbiBzY2FuIHN0cmF0ZWd5LgorCQkJICovCisJCWNhc2UgUEdQQV9UQUdfTk9fU0VR X1NDQU46CisJCQlyZXR1cm4gcGdwYV93YWxrZXJfZmluZF9zY2FuKHdhbGtlciwKKwkJCQkJ CQkJCQkgUEdQQV9TQ0FOX1NFUSwKKwkJCQkJCQkJCQkgcmVsaWRzKSA9PSBOVUxMOworCQlj YXNlIFBHUEFfVEFHX05PX0JJVE1BUF9IRUFQX1NDQU46CisJCQlyZXR1cm4gcGdwYV93YWxr ZXJfZmluZF9zY2FuKHdhbGtlciwKKwkJCQkJCQkJCQkgUEdQQV9TQ0FOX0JJVE1BUF9IRUFQ LAorCQkJCQkJCQkJCSByZWxpZHMpID09IE5VTEw7CisJCWNhc2UgUEdQQV9UQUdfTk9fSU5E RVhfU0NBTjoKKwkJCXJldHVybiBwZ3BhX3dhbGtlcl9maW5kX3NjYW4od2Fsa2VyLAorCQkJ CQkJCQkJCSBQR1BBX1NDQU5fSU5ERVgsCisJCQkJCQkJCQkJIHJlbGlkcykgPT0gTlVMTDsK KwkJY2FzZSBQR1BBX1RBR19OT19JTkRFWF9PTkxZX1NDQU46CisJCQlyZXR1cm4gcGdwYV93 YWxrZXJfZmluZF9zY2FuKHdhbGtlciwKKwkJCQkJCQkJCQkgUEdQQV9TQ0FOX0lOREVYX09O TFksCisJCQkJCQkJCQkJIHJlbGlkcykgPT0gTlVMTDsKKwkJY2FzZSBQR1BBX1RBR19OT19U SURfU0NBTjoKKwkJCXJldHVybiBwZ3BhX3dhbGtlcl9maW5kX3NjYW4od2Fsa2VyLAorCQkJ CQkJCQkJCSBQR1BBX1NDQU5fVElELAorCQkJCQkJCQkJCSByZWxpZHMpID09IE5VTEw7CisK KwkJCS8qCisJCQkgKiBGb3IgTk9fIGpvaW4gdGFncywgdGhlIGFkdmljZSBpcyBzYXRpc2Zp ZWQgd2hlbiB0aGUgcGxhbiBkb2VzCisJCQkgKiBOT1QgdXNlIGFueSBvZiB0aGUgZm9yYmlk ZGVuIGpvaW4gc3RyYXRlZ2llcy4KKwkJCSAqLworCQljYXNlIFBHUEFfVEFHX05PX0hBU0hf Sk9JTjoKKwkJCXJldHVybiAhcGdwYV93YWxrZXJfY29udGFpbnNfam9pbih3YWxrZXIsCisJ CQkJCQkJCQkJCSAgSlNUUkFUX0hBU0hfSk9JTiwKKwkJCQkJCQkJCQkJICByZWxpZHMpOwor CQljYXNlIFBHUEFfVEFHX05PX01FUkdFX0pPSU46CisJCQlyZXR1cm4gIXBncGFfd2Fsa2Vy X2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCQkgIEpTVFJBVF9NRVJHRV9KT0lO X1BMQUlOLAorCQkJCQkJCQkJCQkgIHJlbGlkcykgJiYKKwkJCQkhcGdwYV93YWxrZXJfY29u dGFpbnNfam9pbih3YWxrZXIsCisJCQkJCQkJCQkJICAgSlNUUkFUX01FUkdFX0pPSU5fTUFU RVJJQUxJWkUsCisJCQkJCQkJCQkJICAgcmVsaWRzKTsKKwkJY2FzZSBQR1BBX1RBR19OT19N RVJHRV9KT0lOX01BVEVSSUFMSVpFOgorCQkJcmV0dXJuICFwZ3BhX3dhbGtlcl9jb250YWlu c19qb2luKHdhbGtlciwKKwkJCQkJCQkJCQkJICBKU1RSQVRfTUVSR0VfSk9JTl9NQVRFUklB TElaRSwKKwkJCQkJCQkJCQkJICByZWxpZHMpOworCQljYXNlIFBHUEFfVEFHX05PX01FUkdF X0pPSU5fUExBSU46CisJCQlyZXR1cm4gIXBncGFfd2Fsa2VyX2NvbnRhaW5zX2pvaW4od2Fs a2VyLAorCQkJCQkJCQkJCQkgIEpTVFJBVF9NRVJHRV9KT0lOX1BMQUlOLAorCQkJCQkJCQkJ CQkgIHJlbGlkcyk7CisJCWNhc2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1A6CisJCQlyZXR1 cm4gIXBncGFfd2Fsa2VyX2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCQkgIEpT VFJBVF9ORVNURURfTE9PUF9QTEFJTiwKKwkJCQkJCQkJCQkJICByZWxpZHMpICYmCisJCQkJ IXBncGFfd2Fsa2VyX2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCSAgIEpTVFJB VF9ORVNURURfTE9PUF9NQVRFUklBTElaRSwKKwkJCQkJCQkJCQkgICByZWxpZHMpICYmCisJ CQkJIXBncGFfd2Fsa2VyX2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCSAgIEpT VFJBVF9ORVNURURfTE9PUF9NRU1PSVpFLAorCQkJCQkJCQkJCSAgIHJlbGlkcyk7CisJCWNh c2UgUEdQQV9UQUdfTk9fTkVTVEVEX0xPT1BfTUFURVJJQUxJWkU6CisJCQlyZXR1cm4gIXBn cGFfd2Fsa2VyX2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCQkgIEpTVFJBVF9O RVNURURfTE9PUF9NQVRFUklBTElaRSwKKwkJCQkJCQkJCQkJICByZWxpZHMpOworCQljYXNl IFBHUEFfVEFHX05PX05FU1RFRF9MT09QX01FTU9JWkU6CisJCQlyZXR1cm4gIXBncGFfd2Fs a2VyX2NvbnRhaW5zX2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCQkgIEpTVFJBVF9ORVNURURf TE9PUF9NRU1PSVpFLAorCQkJCQkJCQkJCQkgIHJlbGlkcyk7CisJCWNhc2UgUEdQQV9UQUdf Tk9fTkVTVEVEX0xPT1BfUExBSU46CisJCQlyZXR1cm4gIXBncGFfd2Fsa2VyX2NvbnRhaW5z X2pvaW4od2Fsa2VyLAorCQkJCQkJCQkJCQkgIEpTVFJBVF9ORVNURURfTE9PUF9QTEFJTiwK KwkJCQkJCQkJCQkJICByZWxpZHMpOwogCX0KIAogCS8qIHNob3VsZCBub3QgZ2V0IGhlcmUg Ki8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfcGxhbl9hZHZpY2Uvc3FsL25vX2pvaW4uc3Fs IGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9zcWwvbm9fam9pbi5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE5YTlhY2M5OWZlCi0tLSAvZGV2L251bGwK KysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9zcWwvbm9fam9pbi5zcWwKQEAgLTAsMCAr MSw5MiBAQAorTE9BRCAncGdfcGxhbl9hZHZpY2UnOworU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOworCitDUkVBVEUgVEFCTEUgbm9fam9pbl9kaW0gKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgZGltIHRleHQpCisJV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVk ID0gZmFsc2UpOworSU5TRVJUIElOVE8gbm9fam9pbl9kaW0gKGRpbSkgU0VMRUNUIHJhbmRv bSgpOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnOworVkFDVVVNIEFOQUxZ WkUgbm9fam9pbl9kaW07CisKK0NSRUFURSBUQUJMRSBub19qb2luX2ZhY3QgKAorCWlkIGlu dCBwcmltYXJ5IGtleSwKKwlkaW1faWQgaW50ZWdlciBub3QgbnVsbCByZWZlcmVuY2VzIG5v X2pvaW5fZGltIChpZCkKKykgV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOwor SU5TRVJUIElOVE8gbm9fam9pbl9mYWN0CisJU0VMRUNUIGcsIChnJTMpKzEgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwxMDAwMDApIGc7CitDUkVBVEUgSU5ERVggbm9fam9pbl9mYWN0X2Rp bV9pZCBPTiBub19qb2luX2ZhY3QgKGRpbV9pZCk7CitWQUNVVU0gQU5BTFlaRSBub19qb2lu X2ZhY3Q7CisKKy0tIEJhc2VsaW5lOiBoYXNoIGpvaW4gd2l0aCBkIG9uIHRoZSBpbm5lciBz aWRlLgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9N IG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7 CisKKy0tIE5PX0hBU0hfSk9JTihkKTogZCBzdGF5cyBpbm5lciwgcGxhbm5lciBmYWxscyBi YWNrIHRvIGFub3RoZXIgbWV0aG9kLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZp Y2UuYWR2aWNlID0gJ05PX0hBU0hfSk9JTihkKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBM QU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2lu X2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKK0NPTU1JVDsKKworLS0gTk9fSEFTSF9KT0lO KGYpOiB0aGUgam9pbi1vcmRlciBjb25zdHJhaW50IGZvcmNlcyBmIHRvIHRoZSBpbm5lciBz aWRlLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX0hB U0hfSk9JTihmKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVD VCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lk ID0gZC5pZDsKK0NPTU1JVDsKKworLS0gTk9fTkVTVEVEX0xPT1AoZik6IGYgZm9yY2VkIGlu bmVyLCBhbGwgTkwgdmFyaWFudHMgZm9yYmlkZGVuIC0+IG1lcmdlIGpvaW4uCitCRUdJTjsK K1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fTkVTVEVEX0xPT1AoZikn OworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5v X2pvaW5fZmFjdCBmIEpPSU4gbm9fam9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7CitD T01NSVQ7CisKKy0tIE5PX01FUkdFX0pPSU4oZCk6IGQgYWxyZWFkeSBpbm5lciwgaGFzaCBq b2luIHN0aWxsIGFsbG93ZWQgLT4gcGxhbiB1bmNoYW5nZWQuCitCRUdJTjsKK1NFVCBMT0NB TCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fTUVSR0VfSk9JTihkKSc7CitFWFBMQUlO IChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0 IGYgSk9JTiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKK0NPTU1JVDsKKwor LS0gU3RhY2tpbmc6IE5PX0hBU0hfSk9JTihmKSArIE5PX05FU1RFRF9MT09QKGYpIGxlYXZl cyBvbmx5IG1lcmdlIGpvaW4uCitCRUdJTjsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5h ZHZpY2UgPSAnTk9fSEFTSF9KT0lOKGYpIE5PX05FU1RFRF9MT09QKGYpJzsKK0VYUExBSU4g KENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19qb2luX2ZhY3Qg ZiBKT0lOIG5vX2pvaW5fZGltIGQgT04gZi5kaW1faWQgPSBkLmlkOworQ09NTUlUOworCist LSBTcGVjaWZpYyBOT18gdmFyaWFudHMgdGFyZ2V0aW5nIGQsIGFscmVhZHkgdGhlIGlubmVy IHNpZGU6IGZvcmJpZGRpbmcgYW55IG9uZQorLS0gTkwgb3IgbWVyZ2UgdmFyaWFudCBsZWF2 ZXMgaGFzaCBqb2luIGF2YWlsYWJsZSwgc28gdGhlIHBsYW4gaXMgdW5jaGFuZ2VkLgorQkVH SU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX05FU1RFRF9MT09Q X1BMQUlOKGQpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNU ICogRlJPTSBub19qb2luX2ZhY3QgZiBKT0lOIG5vX2pvaW5fZGltIGQgT04gZi5kaW1faWQg PSBkLmlkOworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19ORVNURURf TE9PUF9NRU1PSVpFKGQpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJ U0VMRUNUICogRlJPTSBub19qb2luX2ZhY3QgZiBKT0lOIG5vX2pvaW5fZGltIGQgT04gZi5k aW1faWQgPSBkLmlkOworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19O RVNURURfTE9PUF9NQVRFUklBTElaRShkKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5f QURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2luX2Rp bSBkIE9OIGYuZGltX2lkID0gZC5pZDsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZp Y2UgPSAnTk9fTUVSR0VfSk9JTl9QTEFJTihkKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBM QU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9JTiBub19qb2lu X2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5h ZHZpY2UgPSAnTk9fTUVSR0VfSk9JTl9NQVRFUklBTElaRShkKSc7CitFWFBMQUlOIChDT1NU UyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fam9pbl9mYWN0IGYgSk9J TiBub19qb2luX2RpbSBkIE9OIGYuZGltX2lkID0gZC5pZDsKK0NPTU1JVDsKKworLS0gQ29u ZmxpY3Q6IHNhbWUgbWV0aG9kIHJlcXVpcmVkIGFuZCBmb3JiaWRkZW47IGJvdGggbWFya2Vk IGNvbmZsaWN0aW5nLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNl ID0gJ0hBU0hfSk9JTihmKSBOT19IQVNIX0pPSU4oZiknOworRVhQTEFJTiAoQ09TVFMgT0ZG LCBQTEFOX0FEVklDRSkKKwlTRUxFQ1QgKiBGUk9NIG5vX2pvaW5fZmFjdCBmIEpPSU4gbm9f am9pbl9kaW0gZCBPTiBmLmRpbV9pZCA9IGQuaWQ7CitDT01NSVQ7CisKKy0tIE5vIGNvbmZs aWN0OiBOT19IQVNIX0pPSU4oZikgYW5kIGEgcG9zaXRpdmUgdGFnIGZvciBhIGRpZmZlcmVu dCBtZXRob2QuCitCRUdJTjsKK1NFVCBMT0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAn Tk9fSEFTSF9KT0lOKGYpIE5FU1RFRF9MT09QX1BMQUlOKGYpJzsKK0VYUExBSU4gKENPU1RT IE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19qb2luX2ZhY3QgZiBKT0lO IG5vX2pvaW5fZGltIGQgT04gZi5kaW1faWQgPSBkLmlkOworQ09NTUlUOworCitEUk9QIFRB QkxFIG5vX2pvaW5fZmFjdDsKK0RST1AgVEFCTEUgbm9fam9pbl9kaW07CmRpZmYgLS1naXQg YS9jb250cmliL3BnX3BsYW5fYWR2aWNlL3NxbC9ub19zY2FuLnNxbCBiL2NvbnRyaWIvcGdf cGxhbl9hZHZpY2Uvc3FsL25vX3NjYW4uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5iMTg5ZWY3MzQ0MAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2Uvc3FsL25vX3NjYW4uc3FsCkBAIC0wLDAgKzEsODggQEAKK0xPQUQg J3BnX3BsYW5fYWR2aWNlJzsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID0gMDsKK1NFVCBzZXFfcGFnZV9jb3N0ID0gMC4xOworU0VUIHJhbmRvbV9wYWdlX2Nvc3Qg PSAwLjE7CitTRVQgY3B1X3R1cGxlX2Nvc3QgPSAwOworU0VUIGNwdV9pbmRleF90dXBsZV9j b3N0ID0gMDsKKworQ1JFQVRFIFRBQkxFIG5vX3NjYW5fdGFibGUgKGEgaW50IHByaW1hcnkg a2V5LCBiIHRleHQpCisJV0lUSCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworSU5T RVJUIElOVE8gbm9fc2Nhbl90YWJsZQorCVNFTEVDVCBnLCAnc29tZSB0ZXh0ICcgfHwgZyBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMDApIGc7CitWQUNVVU0gQU5BTFlaRSBub19z Y2FuX3RhYmxlOworCistLSBCYXNlbGluZXMgd2l0aG91dCBhZHZpY2U6IHNlcSBzY2FuIGZv ciBhIGZ1bGwgcmVhZCwgaW5kZXggc2NhbiBmb3IgYSBsb29rdXAuCitFWFBMQUlOIChDT1NU UyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fc2Nhbl90YWJsZTsKK0VY UExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19zY2Fu X3RhYmxlIFdIRVJFIGEgPSAxOworCistLSBOT19TRVFfU0NBTiB3aXRoIG5vIGluZGV4YWJs ZSBxdWFsOiBubyBhbHRlcm5hdGl2ZSwgc28gdGhlIGFkdmljZSBmYWlscy4KK0JFR0lOOwor U0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19TRVFfU0NBTihub19zY2Fu X3RhYmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAq IEZST00gbm9fc2Nhbl90YWJsZTsKK0NPTU1JVDsKKworLS0gTk9fU0VRX1NDQU4gd2l0aCBh biBpbmRleGFibGUgcXVhbDogZmFsbHMgYmFjayB0byBpbmRleCBzY2FuLgorQkVHSU47CitT RVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05PX1NFUV9TQ0FOKG5vX3NjYW5f dGFibGUpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICog RlJPTSBub19zY2FuX3RhYmxlIFdIRVJFIGEgPSAxOworQ09NTUlUOworCistLSBOT19JTkRF WF9TQ0FOOiBmYWxscyBiYWNrIHRvIGJpdG1hcCBoZWFwIHNjYW4uCitCRUdJTjsKK1NFVCBM T0NBTCBwZ19wbGFuX2FkdmljZS5hZHZpY2UgPSAnTk9fSU5ERVhfU0NBTihub19zY2FuX3Rh YmxlKSc7CitFWFBMQUlOIChDT1NUUyBPRkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZS T00gbm9fc2Nhbl90YWJsZSBXSEVSRSBhID0gMTsKK0NPTU1JVDsKKworLS0gTk9fSU5ERVhf T05MWV9TQ0FOOiBmYWxscyBiYWNrIHRvIGEgcGxhaW4gaW5kZXggc2Nhbi4KK0JFR0lOOwor U0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19JTkRFWF9PTkxZX1NDQU4o bm9fc2Nhbl90YWJsZSknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklDRSkKKwlT RUxFQ1QgYSBGUk9NIG5vX3NjYW5fdGFibGUgV0hFUkUgYSA9IDE7CitDT01NSVQ7CisKKy0t IE5PX0JJVE1BUF9IRUFQX1NDQU46IHdpdGggb25seSBhIEJSSU4gaW5kZXggYXZhaWxhYmxl LCBmYWxscyBiYWNrIHRvIHNlcSBzY2FuLgorQ1JFQVRFIElOREVYIG5vX3NjYW5fdGFibGVf YiBPTiBub19zY2FuX3RhYmxlIFVTSU5HIGJyaW4gKGIpOworVkFDVVVNIEFOQUxZWkUgbm9f c2Nhbl90YWJsZTsKK0JFR0lOOworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9 ICdOT19CSVRNQVBfSEVBUF9TQ0FOKG5vX3NjYW5fdGFibGUpJzsKK0VYUExBSU4gKENPU1RT IE9GRiwgUExBTl9BRFZJQ0UpCisJU0VMRUNUICogRlJPTSBub19zY2FuX3RhYmxlIFdIRVJF IGIgPiAnc29tZSB0ZXh0IDgnOworQ09NTUlUOworCistLSBOT19USURfU0NBTjogZmFsbHMg YmFjayB0byBzZXEgc2Nhbi4KK0JFR0lOOworU0VUIExPQ0FMIHBnX3BsYW5fYWR2aWNlLmFk dmljZSA9ICdOT19USURfU0NBTihub19zY2FuX3RhYmxlKSc7CitFWFBMQUlOIChDT1NUUyBP RkYsIFBMQU5fQURWSUNFKQorCVNFTEVDVCAqIEZST00gbm9fc2Nhbl90YWJsZSBXSEVSRSBj dGlkID0gJygwLDEpJzsKK0NPTU1JVDsKKworLS0gTXVsdGlwbGUgTk9fIHNjYW4gdGFncyBz dGFjayB3aXRob3V0IGNvbmZsaWN0LgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZp Y2UuYWR2aWNlID0gJ05PX1NFUV9TQ0FOKG5vX3NjYW5fdGFibGUpIE5PX0JJVE1BUF9IRUFQ X1NDQU4obm9fc2Nhbl90YWJsZSknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklD RSkKKwlTRUxFQ1QgKiBGUk9NIG5vX3NjYW5fdGFibGUgV0hFUkUgYSA9IDE7CitDT01NSVQ7 CisKKy0tIENvbmZsaWN0OiBzYW1lIG1ldGhvZCByZXF1aXJlZCBhbmQgZm9yYmlkZGVuOyBi b3RoIGNvbmZsaWN0aW5nLCBuZWl0aGVyIGFwcGxpZWQuCitCRUdJTjsKK1NFVCBMT0NBTCBw Z19wbGFuX2FkdmljZS5hZHZpY2UgPSAnU0VRX1NDQU4obm9fc2Nhbl90YWJsZSkgTk9fU0VR X1NDQU4obm9fc2Nhbl90YWJsZSknOworRVhQTEFJTiAoQ09TVFMgT0ZGLCBQTEFOX0FEVklD RSkKKwlTRUxFQ1QgKiBGUk9NIG5vX3NjYW5fdGFibGU7CitDT01NSVQ7CisKKy0tIE5vIGNv bmZsaWN0OiBOT19TRVFfU0NBTiBhbmQgYSBwb3NpdGl2ZSBJTkRFWF9TQ0FOIGFyZSBjb21w YXRpYmxlLgorQkVHSU47CitTRVQgTE9DQUwgcGdfcGxhbl9hZHZpY2UuYWR2aWNlID0gJ05P X1NFUV9TQ0FOKG5vX3NjYW5fdGFibGUpIElOREVYX1NDQU4obm9fc2Nhbl90YWJsZSBub19z Y2FuX3RhYmxlX3BrZXkpJzsKK0VYUExBSU4gKENPU1RTIE9GRiwgUExBTl9BRFZJQ0UpCisJ U0VMRUNUICogRlJPTSBub19zY2FuX3RhYmxlIFdIRVJFIGEgPSAxOworQ09NTUlUOworCist LSBTY2FuIHRhZ3MgZm9yYmlkIHN1Ymxpc3RzIChzaW1wbGVfdGFyZ2V0X2xpc3QpOiB0aGlz IGlzIGEgc3ludGF4IGVycm9yLgorU0VUIHBnX3BsYW5fYWR2aWNlLmFkdmljZSA9ICdOT19T RVFfU0NBTigobm9fc2Nhbl90YWJsZSBub19zY2FuX3RhYmxlKSknOworCitEUk9QIFRBQkxF IG5vX3NjYW5fdGFibGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdwbGFuYWR2aWNl LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGdwbGFuYWR2aWNlLnNnbWwKaW5kZXggYjEzOTVlYzk1 MWUuLmRmZjY1OTRhNTRiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdwbGFuYWR2aWNl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BncGxhbmFkdmljZS5zZ21sCkBAIC0zMjAsNiAr MzIwLDU4IEBAIERPX05PVF9TQ0FOKDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxl PiBbIC4uLiBdKTwvc3lub3BzaXM+CiAKICAgPC9zZWN0Mz4KIAorICA8c2VjdDMgaWQ9InBn cGxhbmFkdmljZS1uby1zY2FuLW1ldGhvZCI+CisgIDx0aXRsZT5OZWdhdGl2ZSBTY2FuIE1l dGhvZCBBZHZpY2U8L3RpdGxlPgorICAgPHN5bm9wc2lzPgorTk9fU0VRX1NDQU4oPHJlcGxh Y2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IFsgLi4uIF0pCitOT19USURfU0NBTig8cmVw bGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSkKK05PX0lOREVYX1NDQU4o PHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IFsgLi4uIF0pCitOT19JTkRFWF9P TkxZX1NDQU4oPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IFsgLi4uIF0pCitO T19CSVRNQVBfSEVBUF9TQ0FOKDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBb IC4uLiBdKTwvc3lub3BzaXM+CisKKyAgIDxwYXJhPgorICAgIFRoZXNlIHRhZ3MgYXJlIHRo ZSBuZWdhdGl2ZSBjb3VudGVycGFydHMgb2YgdGhlIHBvc2l0aXZlIHNjYW4gbWV0aG9kIHRh Z3MuCisgICAgRWFjaCA8bGl0ZXJhbD5OT188L2xpdGVyYWw+IHRhZyBmb3JiaWRzIHRoZSBj b3JyZXNwb25kaW5nIHNjYW4gbWV0aG9kIGZvcgorICAgIHRoZSBzcGVjaWZpZWQgcmVsYXRp b24gb3IgcmVsYXRpb25zLiBUaGUgcGxhbm5lciB3aWxsIGNob29zZSBhbnkgb3RoZXIKKyAg ICBlbGlnaWJsZSBzY2FuIG1ldGhvZCBpbnN0ZWFkLgorICAgPC9wYXJhPgorCisgICA8cGFy YT4KKyAgICBGb3IgZXhhbXBsZSwgPGxpdGVyYWw+Tk9fU0VRX1NDQU4odCk8L2xpdGVyYWw+ IHRlbGxzIHRoZSBwbGFubmVyIG5vdCB0bworICAgIHVzZSBhIDxsaXRlcmFsPlNlcSBTY2Fu PC9saXRlcmFsPiBvbiA8bGl0ZXJhbD50PC9saXRlcmFsPi4gSWYgdGhlIG9ubHkKKyAgICB2 aWFibGUgYWx0ZXJuYXRpdmUgaXMgYW4gaW5kZXggc2NhbiwgdGhlIHBsYW5uZXIgd2lsbCB1 c2UgdGhhdC4gSWYgbm8KKyAgICBhbHRlcm5hdGl2ZSBpcyBhdmFpbGFibGUsIHRoZSBwbGFu IHN0aWxsIHVzZXMgdGhlIGZvcmJpZGRlbiBtZXRob2QgYW5kIHRoZQorICAgIGFkdmljZSBp cyByZXBvcnRlZCBhcyA8bGl0ZXJhbD5mYWlsZWQ8L2xpdGVyYWw+LgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICBVbmxpa2UgdGhlIHBvc2l0aXZlIHNjYW4gbWV0aG9kIHRhZ3Ms IG11bHRpcGxlIG5lZ2F0aXZlIHNjYW4gbWV0aG9kIHRhZ3MKKyAgICBmb3IgdGhlIHNhbWUg cmVsYXRpb24gY2FuIGJlIGNvbWJpbmVkIGZyZWVseSB3aXRob3V0IGNvbmZsaWN0LiBGb3Ig ZXhhbXBsZSwKKyAgICA8bGl0ZXJhbD5OT19TRVFfU0NBTih0KSBOT19CSVRNQVBfSEVBUF9T Q0FOKHQpPC9saXRlcmFsPiBpcyB2YWxpZCBhbmQKKyAgICByZXN0cmljdHMgdGhlIHBsYW5u ZXIgdG8gdXNlIGFuIGluZGV4IHNjYW4gb3IgVElEIHNjYW4gb24gPGxpdGVyYWw+dDwvbGl0 ZXJhbD4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEEgbmVnYXRpdmUgdGFnIGFu ZCBhIHBvc2l0aXZlIHRhZyBzcGVjaWZ5aW5nIHRoZSBzYW1lIG1ldGhvZCBhcmUgaW4KKyAg ICBjb25mbGljdCB3aXRoIGVhY2ggb3RoZXIuIEZvciBleGFtcGxlLCA8bGl0ZXJhbD5TRVFf U0NBTih0KQorICAgIE5PX1NFUV9TQ0FOKHQpPC9saXRlcmFsPiBpcyBhIGNvbnRyYWRpY3Rp b24sIGFuZCBib3RoIHBpZWNlcyBvZiBhZHZpY2Ugd2lsbAorICAgIGJlIG1hcmtlZCA8bGl0 ZXJhbD5jb25mbGljdGluZzwvbGl0ZXJhbD4uIEhvd2V2ZXIsIGEgbmVnYXRpdmUgdGFnIGZv ciBvbmUKKyAgICBtZXRob2QgZG9lcyBub3QgY29uZmxpY3Qgd2l0aCBhIHBvc2l0aXZlIHRh ZyBmb3IgYSBkaWZmZXJlbnQgbWV0aG9kLiBGb3IKKyAgICBpbnN0YW5jZSwgPGxpdGVyYWw+ Tk9fU0VRX1NDQU4odCkgSU5ERVhfU0NBTih0IG15X2luZGV4KTwvbGl0ZXJhbD4gaXMgbm90 IGEKKyAgICBjb25mbGljdDogdGhlIGluZGV4IHNjYW4gaXMgZW5mb3JjZWQgYW5kIHRoZSBw cm9oaWJpdGlvbiBvbiBzZXF1ZW50aWFsIHNjYW5zCisgICAgaXMgYWxzbyBzYXRpc2ZpZWQu CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE5vdGUgdGhhdCA8bGl0ZXJhbD5OT19T RVFfU0NBTigoeCB5KSk8L2xpdGVyYWw+IGFuZCBzaW1pbGFyIGZvcm1zIHdpdGggYQorICAg IHBhcmVudGhlc2l6ZWQgc3VibGlzdCBhcmUgbm90IHZhbGlkIHN5bnRheCBmb3IgbmVnYXRp dmUgc2NhbiB0YWdzLCBiZWNhdXNlCisgICAgc2NhbiBtZXRob2RzIGFwcGx5IHRvIGluZGl2 aWR1YWwgcmVsYXRpb25zLCBub3Qgam9pbiBwcm9kdWN0cy4gTmVnYXRpdmUgc2NhbgorICAg IHRhZ3MgdXNlIHRoZSBzYW1lIHRhcmdldCBzeW50YXggYXMgdGhlaXIgcG9zaXRpdmUgY291 bnRlcnBhcnRzOiBhCisgICAgZmxhdCBsaXN0IG9mIHJlbGF0aW9uIGlkZW50aWZpZXJzLgor ICAgPC9wYXJhPgorCisgIDwvc2VjdDM+CisKICAgPHNlY3QzIGlkPSJwZ3BsYW5hZHZpY2Ut am9pbi1vcmRlciI+CiAgIDx0aXRsZT5Kb2luIE9yZGVyIEFkdmljZTwvdGl0bGU+CiAgICA8 c3lub3BzaXM+CkBAIC00MzMsNiArNDg1LDgzIEBAIGpvaW5fbWV0aG9kX25hbWUoPHJlcGxh Y2VhYmxlPmpvaW5fbWV0aG9kX2l0ZW08L3JlcGxhY2VhYmxlPiBbIC4uLiBdKQogCiAgIDwv c2VjdDM+CiAKKyAgPHNlY3QzIGlkPSJwZ3BsYW5hZHZpY2Utbm8tam9pbi1tZXRob2QiPgor ICA8dGl0bGU+TmVnYXRpdmUgSm9pbiBNZXRob2QgQWR2aWNlPC90aXRsZT4KKyAgIDxzeW5v cHNpcz4KK25vX2pvaW5fbWV0aG9kX25hbWUoPHJlcGxhY2VhYmxlPmpvaW5fbWV0aG9kX2l0 ZW08L3JlcGxhY2VhYmxlPiBbIC4uLiBdKQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJs ZT5ub19qb2luX21ldGhvZF9uYW1lPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKK3sg Tk9fSEFTSF9KT0lOIHwKKyAgTk9fTkVTVEVEX0xPT1AgfCBOT19ORVNURURfTE9PUF9QTEFJ TiB8IE5PX05FU1RFRF9MT09QX01BVEVSSUFMSVpFIHwgTk9fTkVTVEVEX0xPT1BfTUVNT0la RSB8CisgIE5PX01FUkdFX0pPSU4gfCBOT19NRVJHRV9KT0lOX1BMQUlOIHwgTk9fTUVSR0Vf Sk9JTl9NQVRFUklBTElaRSB9CisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZT5qb2luX21l dGhvZF9pdGVtPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CisKK3sgPHJlcGxhY2VhYmxl PmFkdmljZV90YXJnZXQ8L3JlcGxhY2VhYmxlPiB8CisoIDxyZXBsYWNlYWJsZT5hZHZpY2Vf dGFyZ2V0PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSApIH08L3N5bm9wc2lzPgorCisgICA8cGFy YT4KKyAgICBUaGVzZSB0YWdzIGFyZSB0aGUgbmVnYXRpdmUgY291bnRlcnBhcnRzIG9mIHRo ZSBwb3NpdGl2ZSBqb2luIG1ldGhvZCB0YWdzLgorICAgIEEgbmVnYXRpdmUgam9pbiBtZXRo b2QgdGFnIHNwZWNpZmllcyB0aGF0IHRoZSBuYW1lZCBqb2luIG1ldGhvZCAob3IgZmFtaWx5 CisgICAgb2Ygam9pbiBtZXRob2RzKSBzaG91bGQgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+ IGJlIHVzZWQgd2hlbiB0aGUgc3BlY2lmaWVkCisgICAgcmVsYXRpb24gb3Igc2V0IG9mIHJl bGF0aW9ucyBhcHBlYXJzIG9uIHRoZSBpbm5lciBzaWRlIG9mIGEgam9pbi4gVGhlCisgICAg cGxhbm5lciB3aWxsIGNob29zZSBhbnkgb3RoZXIgZWxpZ2libGUgam9pbiBtZXRob2QgaW5z dGVhZC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQm90aCBhIGNvYXJzZXIgZ3Jv dXAgZm9ybSBhbmQgYSBmaW5lciBzcGVjaWZpYyBmb3JtIGFyZSBhdmFpbGFibGUgZm9yCisg ICAgbmVzdGVkLWxvb3AgYW5kIG1lcmdlLWpvaW4uIDxsaXRlcmFsPk5PX05FU1RFRF9MT09Q KHQpPC9saXRlcmFsPiBkaXNhYmxlcworICAgIGFsbCB0aHJlZSBuZXN0ZWQtbG9vcCB2YXJp YW50cyAoPGxpdGVyYWw+TkVTVEVEX0xPT1BfUExBSU48L2xpdGVyYWw+LAorICAgIDxsaXRl cmFsPk5FU1RFRF9MT09QX01BVEVSSUFMSVpFPC9saXRlcmFsPiwgYW5kCisgICAgPGxpdGVy YWw+TkVTVEVEX0xPT1BfTUVNT0laRTwvbGl0ZXJhbD4pLCB3aGlsZQorICAgIDxsaXRlcmFs Pk5PX05FU1RFRF9MT09QX1BMQUlOKHQpPC9saXRlcmFsPiBkaXNhYmxlcyBvbmx5IHRoZSBw bGFpbiB2YXJpYW50LAorICAgIGxlYXZpbmcgdGhlIG90aGVyIHR3byBhdmFpbGFibGUuIFNp bWlsYXJseSwKKyAgICA8bGl0ZXJhbD5OT19NRVJHRV9KT0lOKHQpPC9saXRlcmFsPiBkaXNh YmxlcyBib3RoIG1lcmdlLWpvaW4gdmFyaWFudHMsIHdoaWxlCisgICAgPGxpdGVyYWw+Tk9f TUVSR0VfSk9JTl9QTEFJTih0KTwvbGl0ZXJhbD4gYW5kCisgICAgPGxpdGVyYWw+Tk9fTUVS R0VfSk9JTl9NQVRFUklBTElaRSh0KTwvbGl0ZXJhbD4gdGFyZ2V0IGluZGl2aWR1YWwgdmFy aWFudHMuCisgICAgPGxpdGVyYWw+Tk9fSEFTSF9KT0lOPC9saXRlcmFsPiBoYXMgb25seSBv bmUgZm9ybSBzaW5jZSB0aGVyZSBpcyBvbmx5IG9uZQorICAgIGhhc2gtam9pbiB2YXJpYW50 LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBMaWtlIHBvc2l0aXZlIGpvaW4gbWV0 aG9kIHRhZ3MsIG5lZ2F0aXZlIGpvaW4gbWV0aG9kIHRhZ3MgYWNjZXB0CisgICAgcGFyZW50 aGVzaXplZCBzdWJsaXN0cyBzcGVjaWZ5aW5nIGEgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IHNo b3VsZCBhcHBlYXIKKyAgICB0b2dldGhlciBvbiB0aGUgaW5uZXIgc2lkZS4gRm9yIGV4YW1w bGUsCisgICAgPGxpdGVyYWw+Tk9fSEFTSF9KT0lOKChhIGIpKTwvbGl0ZXJhbD4gbWVhbnMg dGhhdCB0aGUgam9pbiBwcm9kdWN0IG9mCisgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gYW5k IDxsaXRlcmFsPmI8L2xpdGVyYWw+IHNob3VsZCBub3QgYXBwZWFyIHRvZ2V0aGVyIG9uCisg ICAgdGhlIGlubmVyIHNpZGUgb2YgYSBoYXNoIGpvaW4uCisgICA8L3BhcmE+CisKKyAgIDxw YXJhPgorICAgIE5lZ2F0aXZlIGpvaW4gbWV0aG9kIHRhZ3MgaW1wb3NlIHRoZSBzYW1lIGpv aW4tb3JkZXIgY29uc3RyYWludCBhcyB0aGVpcgorICAgIHBvc2l0aXZlIGNvdW50ZXJwYXJ0 czogdGhlIHNwZWNpZmllZCByZWxhdGlvbiAob3Igam9pbiBwcm9kdWN0KSBjYW5ub3QKKyAg ICBiZWNvbWUgdGhlIGRyaXZpbmcgdGFibGUuIEZvciBleGFtcGxlLCA8bGl0ZXJhbD5OT19I QVNIX0pPSU4odCk8L2xpdGVyYWw+CisgICAgaW1wbGllcyB0aGF0IDxsaXRlcmFsPnQ8L2xp dGVyYWw+IGNhbm5vdCBiZSB0aGUgb3V0ZXJtb3N0IHJlbGF0aW9uIGluIHRoZQorICAgIGpv aW4sIGV4YWN0bHkgYXMgPGxpdGVyYWw+SEFTSF9KT0lOKHQpPC9saXRlcmFsPiB3b3VsZC4g VGhpbmsgb2YKKyAgICA8bGl0ZXJhbD5OT19IQVNIX0pPSU4odCk8L2xpdGVyYWw+IGFzIHNh eWluZworICAgIDxxdW90ZT51c2UgYW55dGhpbmcgYnV0IGEgaGFzaCBqb2luLCBidXQga2Vl cCA8bGl0ZXJhbD50PC9saXRlcmFsPiBvbiB0aGUKKyAgICBpbm5lciBzaWRlLjwvcXVvdGU+ CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE11bHRpcGxlIG5lZ2F0aXZlIGpvaW4g bWV0aG9kIHRhZ3MgZm9yIHRoZSBzYW1lIHJlbGF0aW9uIGNhbiBiZSBjb21iaW5lZAorICAg IGZyZWVseS4gRm9yIGV4YW1wbGUsIDxsaXRlcmFsPk5PX0hBU0hfSk9JTih0KSBOT19ORVNU RURfTE9PUCh0KTwvbGl0ZXJhbD4KKyAgICByZXN0cmljdHMgdGhlIHBsYW5uZXIgdG8gbWVy Z2Utam9pbiB3aGVuIDxsaXRlcmFsPnQ8L2xpdGVyYWw+IGlzIG9uIHRoZQorICAgIGlubmVy IHNpZGUuIEEgbmVnYXRpdmUgdGFnIGZvciBvbmUgbWV0aG9kIGRvZXMgbm90IGNvbmZsaWN0 IHdpdGggYSBwb3NpdGl2ZQorICAgIHRhZyBmb3IgYSBkaWZmZXJlbnQgbWV0aG9kOiA8bGl0 ZXJhbD5OT19IQVNIX0pPSU4odCkKKyAgICBORVNURURfTE9PUF9QTEFJTih0KTwvbGl0ZXJh bD4gaXMgbm90IGEgY29uZmxpY3QuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEEg bmVnYXRpdmUgdGFnIGFuZCBhIHBvc2l0aXZlIHRhZyBzcGVjaWZ5aW5nIHRoZSBzYW1lIGpv aW4gbWV0aG9kIGFyZSBpbgorICAgIGNvbmZsaWN0LiBGb3IgZXhhbXBsZSwgPGxpdGVyYWw+ SEFTSF9KT0lOKHQpIE5PX0hBU0hfSk9JTih0KTwvbGl0ZXJhbD4KKyAgICBjb250cmFkaWN0 cyBpdHNlbGYsIGFuZCBib3RoIGVudHJpZXMgd2lsbCBiZSBtYXJrZWQKKyAgICA8bGl0ZXJh bD5jb25mbGljdGluZzwvbGl0ZXJhbD4uCisgICA8L3BhcmE+CisKKyAgPC9zZWN0Mz4KKwog ICA8c2VjdDMgaWQ9InBncGxhbmFkdmljZS1wYXJ0aXRpb253aXNlIj4KICAgPHRpdGxlPlBh cnRpdGlvbndpc2UgQWR2aWNlPC90aXRsZT4KICAgIDxzeW5vcHNpcz4KLS0gCjIuNDUuMQoK --------------da23ox9SJeirXI9990Fp6Ey7--