<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>222937</bug_id>
          
          <creation_ts>2021-03-08 13:08:30 -0800</creation_ts>
          <short_desc>Simplify CallbackAggregator in WebsiteDataStore::fetchDataAndApply()</short_desc>
          <delta_ts>2021-03-08 19:41:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222837</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1737251</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-08 13:08:30 -0800</bug_when>
    <thetext>Simplify CallbackAggregator in WebsiteDataStore::fetchDataAndApply().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737254</commentid>
    <comment_count>1</comment_count>
      <attachid>422609</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-08 13:11:46 -0800</bug_when>
    <thetext>Created attachment 422609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737390</commentid>
    <comment_count>2</comment_count>
      <attachid>422609</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-08 17:32:16 -0800</bug_when>
    <thetext>Comment on attachment 422609
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422609&amp;action=review

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:432
&gt; +private:

Should indent this 4?

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:441
&gt; +    auto callbackAggregator = adoptRef(new CallbackAggregator(fetchOptions, WTFMove(queue), WTFMove(apply), *this));

Seems like there is a missing * here so we get a Ref&lt;&gt; instead of a RefPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737396</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-08 17:44:55 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 422609 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422609&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:432
&gt; &gt; +private:
&gt; 
&gt; Should indent this 4?
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:441
&gt; &gt; +    auto callbackAggregator = adoptRef(new CallbackAggregator(fetchOptions, WTFMove(queue), WTFMove(apply), *this));
&gt; 
&gt; Seems like there is a missing * here so we get a Ref&lt;&gt; instead of a RefPtr&lt;&gt;.

Oh right. We used to not do that to make capture by value convenient in the lambdas. However, Ref&lt;&gt; has a copy-constructor nowadays!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737398</commentid>
    <comment_count>4</comment_count>
      <attachid>422646</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-08 17:50:01 -0800</bug_when>
    <thetext>Created attachment 422646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737412</commentid>
    <comment_count>5</comment_count>
      <attachid>422649</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-08 18:13:14 -0800</bug_when>
    <thetext>Created attachment 422649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737443</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-08 19:40:42 -0800</bug_when>
    <thetext>Committed r274130: &lt;https://commits.webkit.org/r274130&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422649.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737444</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-08 19:41:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/75199890&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422609</attachid>
            <date>2021-03-08 13:11:46 -0800</date>
            <delta_ts>2021-03-08 17:49:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222937-20210308131145.patch</filename>
            <type>text/plain</type>
            <size>16462</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEwNGI4OGZjMzczYzEyNDNi
OTllNDFjZmRjNDUyNDI4MTcwMmJmNTguLjI0Yjg3NzMxNDNiYTA4YTE3ZWIxNjZjMzYzOGQ5ZjM3
YjBmZmQxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBDYWxsYmFja0FnZ3Jl
Z2F0b3IgaW4gV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltcGxpZnkgQ2FsbGJhY2tB
Z2dyZWdhdG9yIGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KCk6CisgICAg
ICAgIDEuIEdldCByaWQgb2YgcmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCkgLyBhZGRQZW5kaW5nQ2Fs
bGJhY2soKSAvIGNhbGxJZk5lZWRlZCgpCisgICAgICAgICAgIGFuZCBpbnN0ZWFkIHJlbHkgb24g
cmVmIGNvdW50aW5nIHRvIGRldGVybWluZSB3aGVuIHdlIG5lZWQgdG8gY2FsbCB0aGUKKyAgICAg
ICAgICAgYXBwbHkgZnVuY3Rpb24uCisgICAgICAgIDIuIFJlcGxhY2VkIHJlbW92ZVBlbmRpbmdD
YWxsYmFjaygpIHdpdGggYWRkV2Vic2l0ZURhdGEoKSBzaW5jZSBpdCB0YWtlcworICAgICAgICAg
ICBhIFdlYnNpdGVEYXRhIGFzIGFuIG9iamVjdCBhbmQgbWFrZSBpdCBzbyB0aGF0IGl0IGNhbiBi
ZSBjYWxsZWQgb24KKyAgICAgICAgICAgYW55IHRocmVhZCBmb3IgY29udmVuaWVuY2UuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorCiAyMDIxLTAzLTA4ICBTdGVwaGFuIFN6YWJvICA8
c3RlcGhhbi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEJ1aWxkcyB3aXRo
IEVOQUJMRV9DT05URVhUX01FTlVTPU9GRiBmYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggYWVjMTVlNWQzODFhZDFiZGIxMTk3
ZjM3NGQzYjAwN2Q0M2I1MmI4ZS4uN2NlNGViMzRiM2U1NWFmMWVhZDQ3MDlkYmQyYTliY2I1Y2Uw
ZGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0xNTUsNCArMTU2LDI4IEBAIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVE
YXRhOjpmaWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0CiAgICAgcmV0dXJu
IGZpbHRlcmVkOwogfQogCitXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV2Vic2l0ZURhdGEgeworICAgICAgICBjcm9zc1RocmVhZENv
cHkoZW50cmllcyksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShob3N0TmFtZXNXaXRoQ29va2ll
cyksCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgICAgIGNyb3NzVGhyZWFk
Q29weShob3N0TmFtZXNXaXRoUGx1Z2luRGF0YSksCisjZW5kaWYKKyAgICAgICAgY3Jvc3NUaHJl
YWRDb3B5KGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShyZWdpc3RyYWJsZURvbWFpbnNX
aXRoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyksCisjZW5kaWYKKyAgICB9OworfQorCithdXRvIFdl
YnNpdGVEYXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gRW50cnkKK3sKKyAgICBy
ZXR1cm4gRW50cnkgeworICAgICAgICBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwKKyAgICAgICAg
dHlwZSwKKyAgICAgICAgc2l6ZSwKKyAgICB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAppbmRleCBlZDU1YWU4ZTEyY2U4ZmE2ZGE2
YTdmNjFhNDZiYjYwYjAyOWUzNmU3Li4yNzhhYTNhOTJlZDA3YTdiNDI3OTM3YzViOTAyN2QxOGU1
MzZiMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmgKQEAgLTQ5LDEwICs0OSwxNCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBX
ZWJzaXRlRGF0YVR5cGUgdHlwZTsKICAgICAgICAgdWludDY0X3Qgc2l6ZTsKIAorICAgICAgICBF
bnRyeSBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpFbnRy
eT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogICAgIH07CiAKKyAgICBXZWJzaXRlRGF0YSBpc29s
YXRlZENvcHkoKSBjb25zdDsKKwogICAgIFZlY3RvcjxFbnRyeT4gZW50cmllczsKICAgICBIYXNo
U2V0PFN0cmluZz4gaG9zdE5hbWVzV2l0aENvb2tpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXgg
MjM3YjIxM2EzOTA0MTgwN2M5NGEzMjIzYmI3OWRjYjlmYTc2ZTA4Ni4uMjA0N2I4NDViMTRmZmEy
NWFhNzZlOWI5OTI2Y2M4MGQ4Mzk4YTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMxMCwxMiAr
MzEwLDEzIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8
V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29y
ZD4pPiYmIGFwcGx5KQogewotICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25U
aHJlYWQ6Ok1haW5SdW5Mb29wPiB7CisgICAgY2xhc3MgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFs
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvciwgV1RGOjpE
ZXN0cnVjdGlvblRocmVhZDo6TWFpblJ1bkxvb3A+IHsKKyAgICBwdWJsaWM6CiAgICAgICAgIENh
bGxiYWNrQWdncmVnYXRvcihPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hP
cHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxX
ZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUp
Ci0gICAgICAgICAgICA6IGZldGNoT3B0aW9ucyhmZXRjaE9wdGlvbnMpCi0gICAgICAgICAgICAs
IHF1ZXVlKFdURk1vdmUocXVldWUpKQotICAgICAgICAgICAgLCBhcHBseShXVEZNb3ZlKGFwcGx5
KSkKLSAgICAgICAgICAgICwgcHJvdGVjdGVkRGF0YVN0b3JlKGRhdGFTdG9yZSkKKyAgICAgICAg
ICAgIDogbV9mZXRjaE9wdGlvbnMoZmV0Y2hPcHRpb25zKQorICAgICAgICAgICAgLCBtX3F1ZXVl
KFdURk1vdmUocXVldWUpKQorICAgICAgICAgICAgLCBtX2FwcGx5KFdURk1vdmUoYXBwbHkpKQor
ICAgICAgICAgICAgLCBtX3Byb3RlY3RlZERhdGFTdG9yZShkYXRhU3RvcmUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIH0KQEAgLTMy
MywyMSArMzI0LDMzIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHko
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgIH5DYWxsYmFj
a0FnZ3JlZ2F0b3IoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwotICAgICAgICAgICAgQVNTRVJUKCFwZW5kaW5nQ2FsbGJhY2tzKTsKLSAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgYWRkUGVuZGluZ0NhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgICAgICsrcGVuZGluZ0Nh
bGxiYWNrczsKKyAgICAgICAgICAgIFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4gcmVjb3JkczsK
KyAgICAgICAgICAgIHJlY29yZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3dlYnNpdGVEYXRh
UmVjb3Jkcy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX3dlYnNp
dGVEYXRhUmVjb3Jkcy52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICByZWNvcmRzLnVuY2hlY2tl
ZEFwcGVuZChtX3F1ZXVlID8gY3Jvc3NUaHJlYWRDb3B5KHJlY29yZCkgOiBXVEZNb3ZlKHJlY29y
ZCkpOworCisgICAgICAgICAgICBhdXRvIHByb2Nlc3NSZWNvcmRzID0gW2FwcGx5ID0gV1RGTW92
ZShtX2FwcGx5KSwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyldICgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGFwcGx5KFdURk1vdmUocmVjb3JkcykpOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgaWYgKG1fcXVldWUpCisgICAgICAgICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0
Y2goV1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NSZWNvcmRzKSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIHJlbW92ZVBlbmRpbmdDYWxsYmFjayhXZWJzaXRl
RGF0YSB3ZWJzaXRlRGF0YSkKKyAgICAgICAgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+JiBmZXRjaE9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoT3B0aW9uczsg
fQorCisgICAgICAgIHZvaWQgYWRkV2Vic2l0ZURhdGEoV2Vic2l0ZURhdGEmJiB3ZWJzaXRlRGF0
YSkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFSdW5Mb29wOjppc01haW4oKSkgeworICAg
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB3ZWJzaXRlRGF0YSA9IGNyb3NzVGhyZWFkQ29weSh3ZWJzaXRlRGF0YSld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFdlYnNp
dGVEYXRhKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgQVNTRVJUKHBlbmRpbmdDYWxsYmFja3MpOwot
ICAgICAgICAgICAgLS1wZW5kaW5nQ2FsbGJhY2tzOwotCiAgICAgICAgICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogd2Vic2l0ZURhdGEuZW50cmllcykgewogICAgICAgICAgICAgICAgIGF1dG8gZGlz
cGxheU5hbWUgPSBXZWJzaXRlRGF0YVJlY29yZDo6ZGlzcGxheU5hbWVGb3JPcmlnaW4oZW50cnku
b3JpZ2luKTsKICAgICAgICAgICAgICAgICBpZiAoIWRpc3BsYXlOYW1lKSB7CkBAIC0zNTQsNyAr
MzY3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KIAogICAgICAgICAgICAgICAgIHJlY29y
ZC5hZGQoZW50cnkudHlwZSwgZW50cnkub3JpZ2luKTsKIAotICAgICAgICAgICAgICAgIGlmIChm
ZXRjaE9wdGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVz
KSkgeworICAgICAgICAgICAgICAgIGlmIChtX2ZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRl
RGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcmVjb3JkLnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuc2l6ZSA9IFdl
YnNpdGVEYXRhUmVjb3JkOjpTaXplIHsgMCwgeyB9IH07CiAKQEAgLTQxNCw1MyArNDI3LDI2IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAgICAgcmVjb3JkLmFkZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOwogICAgICAgICAgICAg
fQogI2VuZGlmCi0KLSAgICAgICAgICAgIGNhbGxJZk5lZWRlZCgpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBjYWxsSWZOZWVkZWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICAgICAgaWYgKHBlbmRpbmdDYWxsYmFja3MpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBWZWN0b3I8V2Vic2l0ZURhdGFS
ZWNvcmQ+IHJlY29yZHM7Ci0gICAgICAgICAgICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV93ZWJzaXRlRGF0YVJlY29yZHMuc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoYXV0byYg
cmVjb3JkIDogbV93ZWJzaXRlRGF0YVJlY29yZHMudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAg
cmVjb3Jkcy51bmNoZWNrZWRBcHBlbmQocXVldWUgPyBjcm9zc1RocmVhZENvcHkocmVjb3JkKSA6
IFdURk1vdmUocmVjb3JkKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gcHJvY2Vzc1JlY29yZHMgPSBb
YXBwbHkgPSBXVEZNb3ZlKGFwcGx5KSwgcmVjb3JkcyA9IFdURk1vdmUocmVjb3JkcyldICgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGFwcGx5KFdURk1vdmUocmVjb3JkcykpOwotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKHF1ZXVlKQotICAgICAgICAgICAgICAgIHF1ZXVl
LT5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NSZWNvcmRzKSk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUocHJvY2Vzc1Jl
Y29yZHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnM7Ci0KLSAgICAgICAgdW5zaWduZWQgcGVuZGluZ0Nh
bGxiYWNrcyA9IDA7Ci0gICAgICAgIFJlZlB0cjxXb3JrUXVldWU+IHF1ZXVlOwotICAgICAgICBG
dW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiBhcHBseTsKK3ByaXZhdGU6
CisgICAgICAgIGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBtX2ZldGNo
T3B0aW9uczsKKyAgICAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAgICAgRnVu
Y3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBseTsKIAogICAgICAg
ICBIYXNoTWFwPFN0cmluZywgV2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0ZURhdGFSZWNvcmRz
OwotICAgICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gcHJvdGVjdGVkRGF0YVN0b3JlOworICAg
ICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gbV9wcm90ZWN0ZWREYXRhU3RvcmU7CiAgICAgfTsK
IAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFk
b3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVl
KSwgV1RGTW92ZShhcHBseSksICp0aGlzKSk7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKGZldGNoT3B0aW9ucywgV1RGTW92ZShx
dWV1ZSksIFdURk1vdmUoYXBwbHkpLCAqdGhpcykpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAg
IG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9u
LT5tZWRpYUNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRv
cl0gewogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSkpCi0gICAgICAgICAgICAgICAgd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NUaHJlYWRDb3B5KG9y
aWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYnNpdGVEYXRhID0g
V1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkp
OwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5h
cHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tD
YWNoZSwgMCB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vic2l0ZURh
dGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYKQEAg
LTQ3Myw5ICs0NTksOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICBGQUxMVEhS
T1VHSDsKICAgICBjYXNlIFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZDoKICAgICAg
ICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5m
ZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgW2Nh
bGxiYWNrQWdncmVnYXRvcl0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKLSAgICAgICAgICAg
ICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdl
YnNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJz
aXRlRGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKQEAgLTUwMSw2NSArNDg2LDQ4IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5
cGVzLCBPCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNr
KCk7CiAgICAgICAgICAgICBwcm9jZXNzLmZldGNoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRh
dGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
ayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRXZWJzaXRlRGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0KSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotCiAgICAgICAgIG1fZGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UtPmdldERldmljZUlkSGFzaFNhbHRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1
dG8mJiBvcmlnaW5zKSB7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKLQog
ICAgICAgICAgICAgd2hpbGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICB3
ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRh
a2VBbnkoKSwgV2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LCAwIH0pOwotCi0gICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3Zl
KHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFdlYnNp
dGVEYXRhKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNh
dGlvbkNhY2hlKSAmJiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtm
ZXRjaE9wdGlvbnMsIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25D
YWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAgICAgICAgICBXZWJz
aXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc3Rv
cmFnZS0+b3JpZ2luc1dpdGhDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6
ZSA9IGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRl
U2l6ZXMpID8gc3RvcmFnZS0+ZGlza1VzYWdlRm9yT3JpZ2luKG9yaWdpbikgOiAwOwotICAgICAg
ICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7
IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlLCBzaXplIH0pOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgc2l6ZSB9KTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJz
aXRlRGF0YSA9IFdURk1vdmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vi
c2l0ZURhdGEpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRXZWJzaXRlRGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJT
UUxEYXRhYmFzZXMpICYmIGlzUGVyc2lzdGVudCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrQWdncmVn
YXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0KICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdKCkgewogICAg
ICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBh
dGgod2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAg
d2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NUaHJl
YWRDb3B5KG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzLCAwIH0pOwot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3Is
IHdlYnNpdGVEYXRhID0gV1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92
ZSh3ZWJzaXRlRGF0YSkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgd2Vic2l0
ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRl
RGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcywgMCB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+YWRkV2Vic2l0ZURhdGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICB9
KTsKICAgICB9CiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
TWVkaWFLZXlzKSAmJiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwotCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAg
ICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IG9yaWdpbiA6IG1lZGlhS2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKLSAg
ICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50
cnkgeyBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMs
IDAgfSk7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdn
cmVnYXRvciwgd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
ayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4s
IFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzLCAwIH0pOworICAgICAgICAgICAgY2FsbGJhY2tB
Z2dyZWdhdG9yLT5hZGRXZWJzaXRlRGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAg
IH0pOwogICAgIH0KIApAQCAtNTc3LDggKzU0NSw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
ZmV0Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBP
CiAgICAgICAgICAgICAgICAgOiBtX2NhbGxiYWNrQWdncmVnYXRvcihXVEZNb3ZlKGNhbGxiYWNr
QWdncmVnYXRvcikpCiAgICAgICAgICAgICAgICAgLCBtX3BsdWdpbnMoV1RGTW92ZShwbHVnaW5z
KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtX2NhbGxiYWNrQWdncmVnYXRvci0+
YWRkUGVuZGluZ0NhbGxiYWNrKCk7Ci0KICAgICAgICAgICAgICAgICBmZXRjaFdlYnNpdGVEYXRh
Rm9yTmV4dFBsdWdpbigpOwogICAgICAgICAgICAgfQogCkBAIC01OTMsMTQgKzU1OSwxNCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3
ZWJzaXRlRGF0YTsKICAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0
aFBsdWdpbkRhdGEgPSBXVEZNb3ZlKG1faG9zdE5hbWVzKTsKIAotICAgICAgICAgICAgICAgICAg
ICBtX2NhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vi
c2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jYWxsYmFja0FnZ3JlZ2F0b3ItPmFk
ZFdlYnNpdGVEYXRhKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKIAogICAgICAgICAgICAgICAgICAg
ICBkZWxldGUgdGhpczsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIGF1dG8gcGx1Z2luID0gbV9wbHVnaW5zLnRha2VMYXN0
KCk7Ci0gICAgICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmZl
dGNoV2Vic2l0ZURhdGEocGx1Z2luLCBtX2NhbGxiYWNrQWdncmVnYXRvci0+ZmV0Y2hPcHRpb25z
LCBbdGhpc10oVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVzKSB7CisgICAgICAgICAgICAgICAgUGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmZldGNoV2Vic2l0ZURhdGEocGx1Z2luLCBt
X2NhbGxiYWNrQWdncmVnYXRvci0+ZmV0Y2hPcHRpb25zKCksIFt0aGlzXShWZWN0b3I8U3RyaW5n
PiBob3N0TmFtZXMpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6
IGhvc3ROYW1lcykKICAgICAgICAgICAgICAgICAgICAgICAgIG1faG9zdE5hbWVzLmFkZChXVEZN
b3ZlKGhvc3ROYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgIGZldGNoV2Vic2l0ZURhdGFGb3JO
ZXh0UGx1Z2luKCk7CkBAIC02MTUsOCArNTgxLDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpm
ZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8K
ICAgICAgICAgU3RhdGU6OmZldGNoRGF0YSgqY2FsbGJhY2tBZ2dyZWdhdG9yLCBwbHVnaW5zKCkp
OwogICAgIH0KICNlbmRpZgotCi0gICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQo
KTsKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422646</attachid>
            <date>2021-03-08 17:50:01 -0800</date>
            <delta_ts>2021-03-08 18:21:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222937-20210308175000.patch</filename>
            <type>text/plain</type>
            <size>18928</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjMzEwZjcwNmUxZTRhZmYz
ZDVmNzZiNzIzZmNmYmI4YTA3YmI2MzIuLmI1NmM3M2UwZjk2ZjA0ZjIwMWJiNDIyOGRlMWYwZGRm
ZmVhZWNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBDYWxsYmFja0FnZ3Jl
Z2F0b3IgaW4gV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgU2ltcGxpZnkgQ2FsbGJhY2tBZ2dy
ZWdhdG9yIGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KCk6CisgICAgICAg
IDEuIEdldCByaWQgb2YgcmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCkgLyBhZGRQZW5kaW5nQ2FsbGJh
Y2soKSAvIGNhbGxJZk5lZWRlZCgpCisgICAgICAgICAgIGFuZCBpbnN0ZWFkIHJlbHkgb24gcmVm
IGNvdW50aW5nIHRvIGRldGVybWluZSB3aGVuIHdlIG5lZWQgdG8gY2FsbCB0aGUKKyAgICAgICAg
ICAgYXBwbHkgZnVuY3Rpb24uCisgICAgICAgIDIuIFJlcGxhY2VkIHJlbW92ZVBlbmRpbmdDYWxs
YmFjaygpIHdpdGggYWRkV2Vic2l0ZURhdGEoKSBzaW5jZSBpdCB0YWtlcworICAgICAgICAgICBh
IFdlYnNpdGVEYXRhIGFzIGFuIG9iamVjdCBhbmQgbWFrZSBpdCBzbyB0aGF0IGl0IGNhbiBiZSBj
YWxsZWQgb24KKyAgICAgICAgICAgYW55IHRocmVhZCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorCiAyMDIxLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV1bR1BVUF0gRW5hYmxlIFdlYk0vVm9yYmlz
L09wdXMgaW4gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggYWVjMTVlNWQzODFhZDFiZGIxMTk3ZjM3NGQz
YjAwN2Q0M2I1MmI4ZS4uN2NlNGViMzRiM2U1NWFmMWVhZDQ3MDlkYmQyYTliY2I1Y2UwZGVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NTUsNCArMTU2LDI4IEBAIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVEYXRhOjpm
aWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0CiAgICAgcmV0dXJuIGZpbHRl
cmVkOwogfQogCitXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2Vic2l0ZURhdGEgeworICAgICAgICBjcm9zc1RocmVhZENvcHkoZW50
cmllcyksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShob3N0TmFtZXNXaXRoQ29va2llcyksCisj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weSho
b3N0TmFtZXNXaXRoUGx1Z2luRGF0YSksCisjZW5kaWYKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShyZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyksCisjZW5kaWYKKyAgICB9OworfQorCithdXRvIFdlYnNpdGVE
YXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gRW50cnkKK3sKKyAgICByZXR1cm4g
RW50cnkgeworICAgICAgICBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwKKyAgICAgICAgdHlwZSwK
KyAgICAgICAgc2l6ZSwKKyAgICB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAppbmRleCBlZDU1YWU4ZTEyY2U4ZmE2ZGE2YTdmNjFh
NDZiYjYwYjAyOWUzNmU3Li4yNzhhYTNhOTJlZDA3YTdiNDI3OTM3YzViOTAyN2QxOGU1MzZiMWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgK
QEAgLTQ5LDEwICs0OSwxNCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBXZWJzaXRl
RGF0YVR5cGUgdHlwZTsKICAgICAgICAgdWludDY0X3Qgc2l6ZTsKIAorICAgICAgICBFbnRyeSBp
c29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpFbnRyeT4gZGVj
b2RlKElQQzo6RGVjb2RlciYpOwogICAgIH07CiAKKyAgICBXZWJzaXRlRGF0YSBpc29sYXRlZENv
cHkoKSBjb25zdDsKKwogICAgIFZlY3RvcjxFbnRyeT4gZW50cmllczsKICAgICBIYXNoU2V0PFN0
cmluZz4gaG9zdE5hbWVzV2l0aENvb2tpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjM3YjIx
M2EzOTA0MTgwN2M5NGEzMjIzYmI3OWRjYjlmYTc2ZTA4Ni4uYzVhNjEwYmI5NmE4NTcyOTQ0YWMx
MzkwNjdkN2RlY2ZjYzI0ZTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMxMCwzNCArMzEwLDQz
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0
Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1
ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYm
IGFwcGx5KQogewotICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW5SdW5Mb29wPiB7Ci0gICAgICAgIENhbGxiYWNrQWdncmVnYXRvcihPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1
ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCi0gICAgICAgICAgICA6IGZldGNoT3B0aW9ucyhm
ZXRjaE9wdGlvbnMpCi0gICAgICAgICAgICAsIHF1ZXVlKFdURk1vdmUocXVldWUpKQotICAgICAg
ICAgICAgLCBhcHBseShXVEZNb3ZlKGFwcGx5KSkKLSAgICAgICAgICAgICwgcHJvdGVjdGVkRGF0
YVN0b3JlKGRhdGFTdG9yZSkKKyAgICBjbGFzcyBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yLCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlv
bjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0FnZ3Jl
Z2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVlKSwgV1RGTW92ZShhcHBseSksIGRhdGFT
dG9yZSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkNhbGxiYWNrQWdncmVnYXRvcigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXBlbmRpbmdDYWxsYmFja3MpOwotICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBh
ZGRQZW5kaW5nQ2FsbGJhY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgICAgICAgICAgKytwZW5kaW5nQ2FsbGJhY2tzOworICAgICAgICAg
ICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzOworICAgICAgICAgICAgcmVjb3Jk
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVl
cygpKQorICAgICAgICAgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKG1fcXVldWUgPyBj
cm9zc1RocmVhZENvcHkocmVjb3JkKSA6IFdURk1vdmUocmVjb3JkKSk7CisKKyAgICAgICAgICAg
IGF1dG8gcHJvY2Vzc1JlY29yZHMgPSBbYXBwbHkgPSBXVEZNb3ZlKG1fYXBwbHkpLCByZWNvcmRz
ID0gV1RGTW92ZShyZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXBwbHko
V1RGTW92ZShyZWNvcmRzKSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAobV9x
dWV1ZSkKKyAgICAgICAgICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NS
ZWNvcmRzKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgcmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQor
ICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4mIGZldGNoT3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hPcHRpb25zOyB9CisKKyAgICAgICAgdm9pZCBh
ZGRXZWJzaXRlRGF0YShXZWJzaXRlRGF0YSYmIHdlYnNpdGVEYXRhKQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYnNp
dGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkV2Vic2l0ZURhdGEoV1RGTW92ZSh3ZWJz
aXRlRGF0YSkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQocGVuZGluZ0NhbGxiYWNrcyk7Ci0gICAgICAgICAgICAtLXBlbmRp
bmdDYWxsYmFja3M7Ci0KICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0
YS5lbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgYXV0byBkaXNwbGF5TmFtZSA9IFdlYnNpdGVE
YXRhUmVjb3JkOjpkaXNwbGF5TmFtZUZvck9yaWdpbihlbnRyeS5vcmlnaW4pOwogICAgICAgICAg
ICAgICAgIGlmICghZGlzcGxheU5hbWUpIHsKQEAgLTM1NCw3ICszNjMsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICAgICAgcmVjb3JkLmFkZChlbnRyeS50eXBlLCBl
bnRyeS5vcmlnaW4pOwogCi0gICAgICAgICAgICAgICAgaWYgKGZldGNoT3B0aW9ucy5jb250YWlu
cyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNv
bXB1dGVTaXplcykpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNvcmQuc2l6ZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5zaXplID0gV2Vic2l0ZURhdGFSZWNvcmQ6OlNp
emUgeyAwLCB7IH0gfTsKIApAQCAtNDE0LDUzICs0MjMsMzUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIE8KICAgICAgICAgICAgICAgICByZWNvcmQuYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jl
Z2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgICAgICAgICB9CiAjZW5kaWYKLQotICAgICAg
ICAgICAgY2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNhbGxJZk5l
ZWRlZCgpCitwcml2YXRlOgorICAgICAgICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwg
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorICAgICAgICAgICAgOiBtX2ZldGNoT3B0aW9u
cyhmZXRjaE9wdGlvbnMpCisgICAgICAgICAgICAsIG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCisg
ICAgICAgICAgICAsIG1fYXBwbHkoV1RGTW92ZShhcHBseSkpCisgICAgICAgICAgICAsIG1fcHJv
dGVjdGVkRGF0YVN0b3JlKGRhdGFTdG9yZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgVmVjdG9yPFdlYnNpdGVEYXRh
UmVjb3JkPiByZWNvcmRzOwotICAgICAgICAgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVlcygpKQotICAgICAgICAgICAgICAg
IHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHF1ZXVlID8gY3Jvc3NUaHJlYWRDb3B5KHJlY29yZCkg
OiBXVEZNb3ZlKHJlY29yZCkpOwotCi0gICAgICAgICAgICBhdXRvIHByb2Nlc3NSZWNvcmRzID0g
W2FwcGx5ID0gV1RGTW92ZShhcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhcHBseShXVEZNb3ZlKHJlY29yZHMpKTsKLSAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmIChxdWV1ZSkKLSAgICAgICAgICAgICAgICBxdWV1
ZS0+ZGlzcGF0Y2goV1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NS
ZWNvcmRzKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zOwotCi0gICAgICAgIHVuc2lnbmVkIHBlbmRpbmdD
YWxsYmFja3MgPSAwOwotICAgICAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZTsKLSAgICAgICAg
RnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gYXBwbHk7CisgICAgICAg
IGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBtX2ZldGNoT3B0aW9uczsK
KyAgICAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAgICAgRnVuY3Rpb248dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBseTsKIAogICAgICAgICBIYXNoTWFw
PFN0cmluZywgV2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0ZURhdGFSZWNvcmRzOwotICAgICAg
ICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gcHJvdGVjdGVkRGF0YVN0b3JlOworICAgICAgICBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gbV9wcm90ZWN0ZWREYXRhU3RvcmU7CiAgICAgfTsKIAotICAgIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5l
dyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVlKSwgV1RGTW92
ZShhcHBseSksICp0aGlzKSk7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBuZXcgQ2Fs
bGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVlKSwgV1RG
TW92ZShhcHBseSksICp0aGlzKTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgewotICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNo
ZURpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAg
ICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1l
ZGlhQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMu
YXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IGNyb3NzVGhyZWFkQ29weShvcmlnaW4pLCBXZWJz
aXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9KTsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YSA9IFdURk1vdmUod2Vi
c2l0ZURhdGEpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRv
ci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKLSAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNp
dGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfSk7
CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFdlYnNpdGVEYXRhKFdURk1vdmUo
d2Vic2l0ZURhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmCkBAIC00NzMsOSArNDY0
LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE8KICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
Y2FzZSBQcm9jZXNzQWNjZXNzVHlwZTo6T25seUlmTGF1bmNoZWQ6CiAgICAgICAgIGlmIChtX25l
dHdvcmtQcm9jZXNzKSB7Ci0gICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwogICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZmV0Y2hXZWJzaXRl
RGF0YShtX3Nlc3Npb25JRCwgZGF0YVR5cGVzLCBmZXRjaE9wdGlvbnMsIFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkp
OworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vic2l0ZURhdGEoV1RG
TW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CkBAIC01MDEsNjUgKzQ5MSw0OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNo
RGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogICAgICAg
ICAgICAgcHJvY2Vzcy5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3
ZWJzaXRlRGF0YSkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vi
c2l0ZURhdGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
RGV2aWNlSWRIYXNoU2FsdCkpIHsKLSAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5k
aW5nQ2FsbGJhY2soKTsKLQogICAgICAgICBtX2RldmljZUlkSGFzaFNhbHRTdG9yYWdlLT5nZXRE
ZXZpY2VJZEhhc2hTYWx0T3JpZ2lucyhbY2FsbGJhY2tBZ2dyZWdhdG9yXShhdXRvJiYgb3JpZ2lu
cykgewogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7Ci0KICAgICAgICAgICAg
IHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEu
ZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2lucy50YWtlQW55KCksIFdl
YnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdCwgMCB9KTsKLQotICAgICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0
YSkpOworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJzaXRlRGF0YShXVEZN
b3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGlmIChkYXRhVHlw
ZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSkg
JiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5k
aW5nQ2FsbGJhY2soKTsKLQogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25z
LCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGFwcGxpY2F0aW9uQ2FjaGVGbGF0Rmls
ZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0
RmlsZVN1YmRpcmVjdG9yeU5hbWUoKS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CiAgICAgICAgICAgICBhdXRvIHN0b3JhZ2UgPSBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIGFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwogICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vi
c2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHN0b3JhZ2UtPm9yaWdp
bnNXaXRoQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBmZXRjaE9w
dGlvbnMuY29udGFpbnMoV2Vic2l0ZURhdGFGZXRjaE9wdGlvbjo6Q29tcHV0ZVNpemVzKSA/IHN0
b3JhZ2UtPmRpc2tVc2FnZUZvck9yaWdpbihvcmlnaW4pIDogMDsKLSAgICAgICAgICAgICAgICB3
ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBjcm9zc1RocmVh
ZENvcHkob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZSwgc2l6ZSB9KTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChX
ZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGUsIHNpemUgfSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgd2Vic2l0ZURhdGEgPSBX
VEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7
Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vi
c2l0ZURhdGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9CiAKICAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2Vz
KSAmJiBpc1BlcnNpc3RlbnQoKSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBl
bmRpbmdDYWxsYmFjaygpOwotCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFt3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KS5pc29sYXRlZENvcHkoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSgpIHsKICAgICAgICAgICAgIFdl
YnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBX
ZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKHdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRh
LmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IGNyb3NzVGhyZWFkQ29weShvcmln
aW4pLCBXZWJzaXRlRGF0YVR5cGU6OldlYlNRTERhdGFiYXNlcywgMCB9KTsKLSAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0
YSA9IFdURk1vdmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNh
bGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURh
dGEpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJp
ZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpX
ZWJTUUxEYXRhYmFzZXMsIDAgfSk7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFk
ZFdlYnNpdGVEYXRhKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQog
CiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok1lZGlhS2V5cykg
JiYgaXNQZXJzaXN0ZW50KCkpIHsKLSAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5k
aW5nQ2FsbGJhY2soKTsKLQogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKICAgICAgICAgICAgIFdl
YnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBt
ZWRpYUtleU9yaWdpbnMobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgICAgICAg
ICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NU
aHJlYWRDb3B5KG9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzLCAwIH0pOwotICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHdl
YnNpdGVEYXRhID0gV1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3
ZWJzaXRlRGF0YSkpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0
YVR5cGU6Ok1lZGlhS2V5cywgMCB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
YWRkV2Vic2l0ZURhdGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTU3Nyw4ICs1NTAsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFu
ZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICAg
ICAgICAgIDogbV9jYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3Ip
KQogICAgICAgICAgICAgICAgICwgbV9wbHVnaW5zKFdURk1vdmUocGx1Z2lucykpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbV9jYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotCiAgICAgICAgICAgICAgICAgZmV0Y2hXZWJzaXRlRGF0YUZvck5leHRQbHVn
aW4oKTsKICAgICAgICAgICAgIH0KIApAQCAtNTkzLDE0ICs1NjQsMTQgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBk
YXRhVHlwZXMsIE8KICAgICAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7
CiAgICAgICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhQbHVnaW5EYXRh
ID0gV1RGTW92ZShtX2hvc3ROYW1lcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgbV9jYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7
CisgICAgICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJzaXRlRGF0
YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAKICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRo
aXM7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICBhdXRvIHBsdWdpbiA9IG1fcGx1Z2lucy50YWtlTGFzdCgpOwotICAgICAg
ICAgICAgICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5mZXRjaFdlYnNpdGVE
YXRhKHBsdWdpbiwgbV9jYWxsYmFja0FnZ3JlZ2F0b3ItPmZldGNoT3B0aW9ucywgW3RoaXNdKFZl
Y3RvcjxTdHJpbmc+IGhvc3ROYW1lcykgeworICAgICAgICAgICAgICAgIFBsdWdpblByb2Nlc3NN
YW5hZ2VyOjpzaW5nbGV0b24oKS5mZXRjaFdlYnNpdGVEYXRhKHBsdWdpbiwgbV9jYWxsYmFja0Fn
Z3JlZ2F0b3ItPmZldGNoT3B0aW9ucygpLCBbdGhpc10oVmVjdG9yPFN0cmluZz4gaG9zdE5hbWVz
KSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMp
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2hvc3ROYW1lcy5hZGQoV1RGTW92ZShob3N0TmFt
ZSkpOwogICAgICAgICAgICAgICAgICAgICBmZXRjaFdlYnNpdGVEYXRhRm9yTmV4dFBsdWdpbigp
OwpAQCAtNjE1LDggKzU4Niw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5k
QXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgIFN0
YXRlOjpmZXRjaERhdGEoKmNhbGxiYWNrQWdncmVnYXRvciwgcGx1Z2lucygpKTsKICAgICB9CiAj
ZW5kaWYKLQotICAgIGNhbGxiYWNrQWdncmVnYXRvci0+Y2FsbElmTmVlZGVkKCk7CiB9CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNjc0LDExICs2NDMsOSBAQCBz
dGF0aWMgUHJvY2Vzc0FjY2Vzc1R5cGUgY29tcHV0ZVdlYlByb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0
YVJlbW92YWwoT3B0aW9uU2V0PFdlYgogCiBjbGFzcyBSZW1vdmFsQ2FsbGJhY2tBZ2dyZWdhdG9y
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW92YWxDYWxsYmFja0FnZ3JlZ2F0b3Is
IFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW5SdW5Mb29wPiB7CiBwdWJsaWM6Ci0gICAgUmVt
b3ZhbENhbGxiYWNrQWdncmVnYXRvcihXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgOiBtX3By
b3RlY3RlZERhdGFTdG9yZShkYXRhU3RvcmUpCi0gICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICBzdGF0aWMgUmVmPFJlbW92YWxDYWxs
YmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAgICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW92YWxDYWxsYmFja0FnZ3JlZ2F0b3IoZGF0YVN0b3JlLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkpOwogICAgIH0KIAogICAgIH5SZW1vdmFsQ2FsbGJhY2tBZ2dyZWdhdG9yKCkKQEAg
LTY4OCwxMyArNjU1LDIwIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgUmVtb3Zh
bENhbGxiYWNrQWdncmVnYXRvcihXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBtX3Byb3Rl
Y3RlZERhdGFTdG9yZShkYXRhU3RvcmUpCisgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgfQorCiAgICAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IG1fcHJvdGVj
dGVkRGF0YVN0b3JlOwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gbV9jb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBSZW1vdmFsQ2FsbGJhY2tBZ2dyZWdhdG9yKCp0aGlz
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gUmVtb3ZhbENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKQEAgLTg0Niw3ICs4MjAs
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQo
b3JpZ2luKTsKICAgICB9CiAKLSAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVm
KG5ldyBSZW1vdmFsQ2FsbGJhY2tBZ2dyZWdhdG9yKCp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkpOworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gUmVtb3ZhbENhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAg
ICAgCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSkpIHsKICAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnM7Cg==
</data>
<flag name="commit-queue"
          id="441791"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422649</attachid>
            <date>2021-03-08 18:13:14 -0800</date>
            <delta_ts>2021-03-08 19:40:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222937-20210308181313.patch</filename>
            <type>text/plain</type>
            <size>19725</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNjMzEwZjcwNmUxZTRhZmYz
ZDVmNzZiNzIzZmNmYmI4YTA3YmI2MzIuLmI1NmM3M2UwZjk2ZjA0ZjIwMWJiNDIyOGRlMWYwZGRm
ZmVhZWNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDMtMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBDYWxsYmFja0FnZ3Jl
Z2F0b3IgaW4gV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBwbHkoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgU2ltcGxpZnkgQ2FsbGJhY2tBZ2dy
ZWdhdG9yIGluIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KCk6CisgICAgICAg
IDEuIEdldCByaWQgb2YgcmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCkgLyBhZGRQZW5kaW5nQ2FsbGJh
Y2soKSAvIGNhbGxJZk5lZWRlZCgpCisgICAgICAgICAgIGFuZCBpbnN0ZWFkIHJlbHkgb24gcmVm
IGNvdW50aW5nIHRvIGRldGVybWluZSB3aGVuIHdlIG5lZWQgdG8gY2FsbCB0aGUKKyAgICAgICAg
ICAgYXBwbHkgZnVuY3Rpb24uCisgICAgICAgIDIuIFJlcGxhY2VkIHJlbW92ZVBlbmRpbmdDYWxs
YmFjaygpIHdpdGggYWRkV2Vic2l0ZURhdGEoKSBzaW5jZSBpdCB0YWtlcworICAgICAgICAgICBh
IFdlYnNpdGVEYXRhIGFzIGFuIG9iamVjdCBhbmQgbWFrZSBpdCBzbyB0aGF0IGl0IGNhbiBiZSBj
YWxsZWQgb24KKyAgICAgICAgICAgYW55IHRocmVhZCBmb3IgY29udmVuaWVuY2UuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGE6OkVudHJ5Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZmV0Y2hEYXRhQW5kQXBwbHkpOgorCiAyMDIxLTAzLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV1bR1BVUF0gRW5hYmxlIFdlYk0vVm9yYmlz
L09wdXMgaW4gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggYWVjMTVlNWQzODFhZDFiZGIxMTk3ZjM3NGQz
YjAwN2Q0M2I1MmI4ZS4uN2NlNGViMzRiM2U1NWFmMWVhZDQ3MDlkYmQyYTliY2I1Y2UwZGVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NTUsNCArMTU2LDI4IEBAIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IFdlYnNpdGVEYXRhOjpm
aWx0ZXIoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdW5maWx0CiAgICAgcmV0dXJuIGZpbHRl
cmVkOwogfQogCitXZWJzaXRlRGF0YSBXZWJzaXRlRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2Vic2l0ZURhdGEgeworICAgICAgICBjcm9zc1RocmVhZENvcHkoZW50
cmllcyksCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShob3N0TmFtZXNXaXRoQ29va2llcyksCisj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weSho
b3N0TmFtZXNXaXRoUGx1Z2luRGF0YSksCisjZW5kaWYKKyAgICAgICAgY3Jvc3NUaHJlYWRDb3B5
KGhvc3ROYW1lc1dpdGhIU1RTQ2FjaGUpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgICAgIGNyb3NzVGhyZWFkQ29weShyZWdpc3RyYWJsZURvbWFpbnNXaXRoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyksCisjZW5kaWYKKyAgICB9OworfQorCithdXRvIFdlYnNpdGVE
YXRhOjpFbnRyeTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gRW50cnkKK3sKKyAgICByZXR1cm4g
RW50cnkgeworICAgICAgICBjcm9zc1RocmVhZENvcHkob3JpZ2luKSwKKyAgICAgICAgdHlwZSwK
KyAgICAgICAgc2l6ZSwKKyAgICB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuaAppbmRleCBlZDU1YWU4ZTEyY2U4ZmE2ZGE2YTdmNjFh
NDZiYjYwYjAyOWUzNmU3Li4yNzhhYTNhOTJlZDA3YTdiNDI3OTM3YzViOTAyN2QxOGU1MzZiMWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmgK
QEAgLTQ5LDEwICs0OSwxNCBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGEgewogICAgICAgICBXZWJzaXRl
RGF0YVR5cGUgdHlwZTsKICAgICAgICAgdWludDY0X3Qgc2l6ZTsKIAorICAgICAgICBFbnRyeSBp
c29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPFdlYnNpdGVEYXRhOjpFbnRyeT4gZGVj
b2RlKElQQzo6RGVjb2RlciYpOwogICAgIH07CiAKKyAgICBXZWJzaXRlRGF0YSBpc29sYXRlZENv
cHkoKSBjb25zdDsKKwogICAgIFZlY3RvcjxFbnRyeT4gZW50cmllczsKICAgICBIYXNoU2V0PFN0
cmluZz4gaG9zdE5hbWVzV2l0aENvb2tpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjM3YjIx
M2EzOTA0MTgwN2M5NGEzMjIzYmI3OWRjYjlmYTc2ZTA4Ni4uN2VjNzhlYzUwMzM3Y2MzMjE1NmQ5
NjkzMTViNzI2ZTdkZjhkZmIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTMxMCwzNCArMzEwLDQz
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0
Y2hEYXRhQW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1
ZXVlPiYmIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYm
IGFwcGx5KQogewotICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3IsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW5SdW5Mb29wPiB7Ci0gICAgICAgIENhbGxiYWNrQWdncmVnYXRvcihPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1
ZXVlLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCi0gICAgICAgICAgICA6IGZldGNoT3B0aW9ucyhm
ZXRjaE9wdGlvbnMpCi0gICAgICAgICAgICAsIHF1ZXVlKFdURk1vdmUocXVldWUpKQotICAgICAg
ICAgICAgLCBhcHBseShXVEZNb3ZlKGFwcGx5KSkKLSAgICAgICAgICAgICwgcHJvdGVjdGVkRGF0
YVN0b3JlKGRhdGFTdG9yZSkKKyAgICBjbGFzcyBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yLCBXVEY6OkRlc3Ry
dWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBSZWZQdHI8V29ya1F1ZXVlPiYmIHF1ZXVlLCBGdW5jdGlv
bjx2b2lkKFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5LCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYWxsYmFja0FnZ3Jl
Z2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVlKSwgV1RGTW92ZShhcHBseSksIGRhdGFT
dG9yZSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkNhbGxiYWNrQWdncmVnYXRvcigpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXBlbmRpbmdDYWxsYmFja3MpOwotICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBh
ZGRQZW5kaW5nQ2FsbGJhY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgICAgICAgICAgKytwZW5kaW5nQ2FsbGJhY2tzOworICAgICAgICAg
ICAgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPiByZWNvcmRzOworICAgICAgICAgICAgcmVjb3Jk
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IG1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVl
cygpKQorICAgICAgICAgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKG1fcXVldWUgPyBj
cm9zc1RocmVhZENvcHkocmVjb3JkKSA6IFdURk1vdmUocmVjb3JkKSk7CisKKyAgICAgICAgICAg
IGF1dG8gcHJvY2Vzc1JlY29yZHMgPSBbYXBwbHkgPSBXVEZNb3ZlKG1fYXBwbHkpLCByZWNvcmRz
ID0gV1RGTW92ZShyZWNvcmRzKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXBwbHko
V1RGTW92ZShyZWNvcmRzKSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAobV9x
dWV1ZSkKKyAgICAgICAgICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NS
ZWNvcmRzKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUocHJvY2Vzc1JlY29yZHMpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgcmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQor
ICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4mIGZldGNoT3B0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hPcHRpb25zOyB9CisKKyAgICAgICAgdm9pZCBh
ZGRXZWJzaXRlRGF0YShXZWJzaXRlRGF0YSYmIHdlYnNpdGVEYXRhKQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYnNp
dGVEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkV2Vic2l0ZURhdGEoV1RGTW92ZSh3ZWJz
aXRlRGF0YSkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgICAgICAgICBBU1NFUlQocGVuZGluZ0NhbGxiYWNrcyk7Ci0gICAgICAgICAgICAtLXBlbmRp
bmdDYWxsYmFja3M7Ci0KICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB3ZWJzaXRlRGF0
YS5lbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgYXV0byBkaXNwbGF5TmFtZSA9IFdlYnNpdGVE
YXRhUmVjb3JkOjpkaXNwbGF5TmFtZUZvck9yaWdpbihlbnRyeS5vcmlnaW4pOwogICAgICAgICAg
ICAgICAgIGlmICghZGlzcGxheU5hbWUpIHsKQEAgLTM1NCw3ICszNjMsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgTwogCiAgICAgICAgICAgICAgICAgcmVjb3JkLmFkZChlbnRyeS50eXBlLCBl
bnRyeS5vcmlnaW4pOwogCi0gICAgICAgICAgICAgICAgaWYgKGZldGNoT3B0aW9ucy5jb250YWlu
cyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG1fZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNv
bXB1dGVTaXplcykpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNvcmQuc2l6ZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5zaXplID0gV2Vic2l0ZURhdGFSZWNvcmQ6OlNp
emUgeyAwLCB7IH0gfTsKIApAQCAtNDE0LDUzICs0MjMsMzUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMsIE8KICAgICAgICAgICAgICAgICByZWNvcmQuYWRkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jl
Z2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CiAgICAgICAgICAgICB9CiAjZW5kaWYKLQotICAgICAg
ICAgICAgY2FsbElmTmVlZGVkKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGNhbGxJZk5l
ZWRlZCgpCitwcml2YXRlOgorICAgICAgICBDYWxsYmFja0FnZ3JlZ2F0b3IoT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgUmVmUHRyPFdvcmtRdWV1ZT4mJiBx
dWV1ZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4mJiBhcHBseSwg
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQorICAgICAgICAgICAgOiBtX2ZldGNoT3B0aW9u
cyhmZXRjaE9wdGlvbnMpCisgICAgICAgICAgICAsIG1fcXVldWUoV1RGTW92ZShxdWV1ZSkpCisg
ICAgICAgICAgICAsIG1fYXBwbHkoV1RGTW92ZShhcHBseSkpCisgICAgICAgICAgICAsIG1fcHJv
dGVjdGVkRGF0YVN0b3JlKGRhdGFTdG9yZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgVmVjdG9yPFdlYnNpdGVEYXRh
UmVjb3JkPiByZWNvcmRzOwotICAgICAgICAgICAgcmVjb3Jkcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fd2Vic2l0ZURhdGFSZWNvcmRzLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVlcygpKQotICAgICAgICAgICAgICAg
IHJlY29yZHMudW5jaGVja2VkQXBwZW5kKHF1ZXVlID8gY3Jvc3NUaHJlYWRDb3B5KHJlY29yZCkg
OiBXVEZNb3ZlKHJlY29yZCkpOwotCi0gICAgICAgICAgICBhdXRvIHByb2Nlc3NSZWNvcmRzID0g
W2FwcGx5ID0gV1RGTW92ZShhcHBseSksIHJlY29yZHMgPSBXVEZNb3ZlKHJlY29yZHMpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhcHBseShXVEZNb3ZlKHJlY29yZHMpKTsKLSAgICAg
ICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmIChxdWV1ZSkKLSAgICAgICAgICAgICAgICBxdWV1
ZS0+ZGlzcGF0Y2goV1RGTW92ZShwcm9jZXNzUmVjb3JkcykpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHByb2Nlc3NS
ZWNvcmRzKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zOwotCi0gICAgICAgIHVuc2lnbmVkIHBlbmRpbmdD
YWxsYmFja3MgPSAwOwotICAgICAgICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZTsKLSAgICAgICAg
RnVuY3Rpb248dm9pZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gYXBwbHk7CisgICAgICAg
IGNvbnN0IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBtX2ZldGNoT3B0aW9uczsK
KyAgICAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICAgICAgRnVuY3Rpb248dm9p
ZChWZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gbV9hcHBseTsKIAogICAgICAgICBIYXNoTWFw
PFN0cmluZywgV2Vic2l0ZURhdGFSZWNvcmQ+IG1fd2Vic2l0ZURhdGFSZWNvcmRzOwotICAgICAg
ICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gcHJvdGVjdGVkRGF0YVN0b3JlOworICAgICAgICBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gbV9wcm90ZWN0ZWREYXRhU3RvcmU7CiAgICAgfTsKIAotICAgIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5l
dyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0Y2hPcHRpb25zLCBXVEZNb3ZlKHF1ZXVlKSwgV1RGTW92
ZShhcHBseSksICp0aGlzKSk7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFj
a0FnZ3JlZ2F0b3I6OmNyZWF0ZShmZXRjaE9wdGlvbnMsIFdURk1vdmUocXVldWUpLCBXVEZNb3Zl
KGFwcGx5KSwgKnRoaXMpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChkYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7Ci0gICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFttZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGly
ZWN0b3J5KCkuaXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAg
ICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUobWVkaWFD
YWNoZURpcmVjdG9yeSkpCi0gICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBl
bmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiksIFdlYnNpdGVE
YXRhVHlwZTo6RGlza0NhY2hlLCAwIH0pOwotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYnNpdGVEYXRhID0gV1RGTW92ZSh3ZWJzaXRl
RGF0YSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5y
ZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwotICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURh
dGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9KTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vic2l0ZURhdGEoV1RGTW92ZSh3ZWJz
aXRlRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYKQEAgLTQ3Myw5ICs0NjQsOCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgTwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNl
IFByb2Nlc3NBY2Nlc3NUeXBlOjpPbmx5SWZMYXVuY2hlZDoKICAgICAgICAgaWYgKG1fbmV0d29y
a1Byb2Nlc3MpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0Nh
bGxiYWNrKCk7CiAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5mZXRjaFdlYnNpdGVEYXRh
KG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIGZldGNoT3B0aW9ucywgW2NhbGxiYWNrQWdncmVnYXRv
cl0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJzaXRlRGF0YShXVEZNb3Zl
KHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKQEAgLTUwMSw2NSArNDkxLDQ4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
QW5kQXBwbHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgICAg
ICBwcm9jZXNzLmZldGNoV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgW2NhbGxi
YWNrQWdncmVnYXRvcl0oV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNp
dGVEYXRhKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJzaXRl
RGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEZXZp
Y2VJZEhhc2hTYWx0KSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotCiAgICAgICAgIG1fZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UtPmdldERldmlj
ZUlkSGFzaFNhbHRPcmlnaW5zKFtjYWxsYmFja0FnZ3JlZ2F0b3JdKGF1dG8mJiBvcmlnaW5zKSB7
CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKLQogICAgICAgICAgICAgd2hp
bGUgKCFvcmlnaW5zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5lbnRy
aWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW5zLnRha2VBbnkoKSwgV2Vic2l0
ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LCAwIH0pOwotCi0gICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7
CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFdlYnNpdGVEYXRhKFdURk1vdmUo
d2Vic2l0ZURhdGEpKTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYgKGRhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlKSAmJiBp
c1BlcnNpc3RlbnQoKSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkoKS5pc29sYXRlZENvcHkoKSwgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSgpLmlzb2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsK
ICAgICAgICAgICAgIGF1dG8gc3RvcmFnZSA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgYXBwbGljYXRpb25DYWNoZUZs
YXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRl
RGF0YTsKICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc3RvcmFnZS0+b3JpZ2luc1dp
dGhDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGZldGNoT3B0aW9u
cy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpID8gc3RvcmFn
ZS0+ZGlza1VzYWdlRm9yT3JpZ2luKG9yaWdpbikgOiAwOwotICAgICAgICAgICAgICAgIHdlYnNp
dGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IGNyb3NzVGhyZWFkQ29w
eShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCBz
aXplIH0pOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNp
dGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZSwgc2l6ZSB9KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YSA9IFdURk1v
dmUod2Vic2l0ZURhdGEpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKLSAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRXZWJzaXRl
RGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KIAogICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFzZXMpICYm
IGlzUGVyc2lzdGVudCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGlu
Z0NhbGxiYWNrKCk7Ci0KICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3dlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLmlz
b2xhdGVkQ29weSgpLCBjYWxsYmFja0FnZ3JlZ2F0b3JdKCkgewogICAgICAgICAgICAgV2Vic2l0
ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IFdlYkNv
cmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgod2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkpLT5vcmlnaW5zKCkpCi0gICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgY3Jvc3NUaHJlYWRDb3B5KG9yaWdpbiks
IFdlYnNpdGVEYXRhVHlwZTo6V2ViU1FMRGF0YWJhc2VzLCAwIH0pOwotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIHdlYnNpdGVEYXRhID0g
V1RGTW92ZSh3ZWJzaXRlRGF0YSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkp
OwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5h
cHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OldlYlNR
TERhdGFiYXNlcywgMCB9KTsKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkV2Vi
c2l0ZURhdGEoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICB9KTsKICAgICB9CiAKICAg
ICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6TWVkaWFLZXlzKSAmJiBp
c1BlcnNpc3RlbnQoKSkgewotICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdD
YWxsYmFjaygpOwotCiAgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFttZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCku
aXNvbGF0ZWRDb3B5KCksIGNhbGxiYWNrQWdncmVnYXRvcl0gewogICAgICAgICAgICAgV2Vic2l0
ZURhdGEgd2Vic2l0ZURhdGE7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG1lZGlh
S2V5T3JpZ2lucyhtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKLSAgICAgICAgICAgICAgICB3
ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBjcm9zc1RocmVh
ZENvcHkob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpNZWRpYUtleXMsIDAgfSk7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgd2Vic2l0
ZURhdGEgPSBXVEZNb3ZlKHdlYnNpdGVEYXRhKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNp
dGVEYXRhKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5l
bnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlw
ZTo6TWVkaWFLZXlzLCAwIH0pOworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRX
ZWJzaXRlRGF0YShXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApA
QCAtNTc3LDggKzU1MCw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBw
bHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICAg
ICAgOiBtX2NhbGxiYWNrQWdncmVnYXRvcihXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcikpCiAg
ICAgICAgICAgICAgICAgLCBtX3BsdWdpbnMoV1RGTW92ZShwbHVnaW5zKSkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBtX2NhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxi
YWNrKCk7Ci0KICAgICAgICAgICAgICAgICBmZXRjaFdlYnNpdGVEYXRhRm9yTmV4dFBsdWdpbigp
OwogICAgICAgICAgICAgfQogCkBAIC01OTMsMTQgKzU2NCwxNCBAQCB2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgTwogICAgICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAg
ICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuaG9zdE5hbWVzV2l0aFBsdWdpbkRhdGEgPSBX
VEZNb3ZlKG1faG9zdE5hbWVzKTsKIAotICAgICAgICAgICAgICAgICAgICBtX2NhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFdlYnNpdGVEYXRhKFdU
Rk1vdmUod2Vic2l0ZURhdGEpKTsKIAogICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGF1dG8gcGx1Z2luID0gbV9wbHVnaW5zLnRha2VMYXN0KCk7Ci0gICAgICAgICAg
ICAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmZldGNoV2Vic2l0ZURhdGEo
cGx1Z2luLCBtX2NhbGxiYWNrQWdncmVnYXRvci0+ZmV0Y2hPcHRpb25zLCBbdGhpc10oVmVjdG9y
PFN0cmluZz4gaG9zdE5hbWVzKSB7CisgICAgICAgICAgICAgICAgUGx1Z2luUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLmZldGNoV2Vic2l0ZURhdGEocGx1Z2luLCBtX2NhbGxiYWNrQWdncmVn
YXRvci0+ZmV0Y2hPcHRpb25zKCksIFt0aGlzXShWZWN0b3I8U3RyaW5nPiBob3N0TmFtZXMpIHsK
ICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBob3N0TmFtZSA6IGhvc3ROYW1lcykKICAg
ICAgICAgICAgICAgICAgICAgICAgIG1faG9zdE5hbWVzLmFkZChXVEZNb3ZlKGhvc3ROYW1lKSk7
CiAgICAgICAgICAgICAgICAgICAgIGZldGNoV2Vic2l0ZURhdGFGb3JOZXh0UGx1Z2luKCk7CkBA
IC02MTIsMTEgKzU4Myw5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhQW5kQXBw
bHkoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPCiAgICAgICAgICAgICBI
YXNoU2V0PFN0cmluZz4gbV9ob3N0TmFtZXM7CiAgICAgICAgIH07CiAKLSAgICAgICAgU3RhdGU6
OmZldGNoRGF0YSgqY2FsbGJhY2tBZ2dyZWdhdG9yLCBwbHVnaW5zKCkpOworICAgICAgICBTdGF0
ZTo6ZmV0Y2hEYXRhKGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCksIHBsdWdpbnMoKSk7CiAg
ICAgfQogI2VuZGlmCi0KLSAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwog
fQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY3NCwxMSArNjQz
LDkgQEAgc3RhdGljIFByb2Nlc3NBY2Nlc3NUeXBlIGNvbXB1dGVXZWJQcm9jZXNzQWNjZXNzVHlw
ZUZvckRhdGFSZW1vdmFsKE9wdGlvblNldDxXZWIKIAogY2xhc3MgUmVtb3ZhbENhbGxiYWNrQWdn
cmVnYXRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdmFsQ2FsbGJhY2tBZ2dy
ZWdhdG9yLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluUnVuTG9vcD4gewogcHVibGljOgot
ICAgIFJlbW92YWxDYWxsYmFja0FnZ3JlZ2F0b3IoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAg
IDogbV9wcm90ZWN0ZWREYXRhU3RvcmUoZGF0YVN0b3JlKQotICAgICAgICAsIG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgc3RhdGljIFJlZjxSZW1v
dmFsQ2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewot
ICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdmFsQ2FsbGJhY2tBZ2dyZWdhdG9yKGRhdGFTdG9yZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+UmVtb3ZhbENhbGxiYWNrQWdncmVnYXRv
cigpCkBAIC02ODgsMTMgKzY1NSwyMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgorICAg
IFJlbW92YWxDYWxsYmFja0FnZ3JlZ2F0b3IoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDog
bV9wcm90ZWN0ZWREYXRhU3RvcmUoZGF0YVN0b3JlKQorICAgICAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgeworICAgICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIH0KKwogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBt
X3Byb3RlY3RlZERhdGFTdG9yZTsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiB9OwogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBj
YWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgUmVtb3ZhbENhbGxiYWNrQWdncmVnYXRv
cigqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IFJlbW92YWxDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChk
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CkBAIC04MjMs
NyArNzk3LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgV2FsbFRpbWUKICAgICAgICAgICAgIFdhbGxUaW1l
IG1fbW9kaWZpZWRTaW5jZTsKICAgICAgICAgfTsKIAotICAgICAgICBTdGF0ZTo6ZGVsZXRlRGF0
YSgqY2FsbGJhY2tBZ2dyZWdhdG9yLCBwbHVnaW5zKCksIG1vZGlmaWVkU2luY2UpOworICAgICAg
ICBTdGF0ZTo6ZGVsZXRlRGF0YShjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpLCBwbHVnaW5z
KCksIG1vZGlmaWVkU2luY2UpOwogICAgIH0KICNlbmRpZgogCkBAIC04NDYsNyArODIwLDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKG9yaWdp
bik7CiAgICAgfQogCi0gICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcg
UmVtb3ZhbENhbGxiYWNrQWdncmVnYXRvcigqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IFJlbW92YWxDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIAog
ICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7
CiAgICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOwpA
QCAtMTAxMSw3ICs5ODUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0
aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgICAgICB9Owog
CiAgICAgICAgIGlmICghaG9zdE5hbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIFN0YXRlOjpk
ZWxldGVEYXRhKCpjYWxsYmFja0FnZ3JlZ2F0b3IsIHBsdWdpbnMoKSwgV1RGTW92ZShob3N0TmFt
ZXMpKTsKKyAgICAgICAgICAgIFN0YXRlOjpkZWxldGVEYXRhKGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCksIHBsdWdpbnMoKSwgV1RGTW92ZShob3N0TmFtZXMpKTsKICAgICB9CiAjZW5kaWYK
IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>