<?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>171999</bug_id>
          
          <creation_ts>2017-05-11 16:38:44 -0700</creation_ts>
          <short_desc>Simplify RealtimeMediaSource data production and state</short_desc>
          <delta_ts>2017-05-16 14:21:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307580</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-11 16:38:44 -0700</bug_when>
    <thetext>RealtimeMediaSource production of data is complex.
We should try to simplify it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307620</commentid>
    <comment_count>1</comment_count>
      <attachid>309829</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-11 17:15:21 -0700</bug_when>
    <thetext>Created attachment 309829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307630</commentid>
    <comment_count>2</comment_count>
      <attachid>309832</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-11 17:30:38 -0700</bug_when>
    <thetext>Created attachment 309832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307940</commentid>
    <comment_count>3</comment_count>
      <attachid>309915</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-12 10:51:21 -0700</bug_when>
    <thetext>Created attachment 309915
Trying to fix GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307988</commentid>
    <comment_count>4</comment_count>
      <attachid>309925</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-12 12:17:34 -0700</bug_when>
    <thetext>Created attachment 309925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308019</commentid>
    <comment_count>5</comment_count>
      <attachid>309933</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-12 13:11:58 -0700</bug_when>
    <thetext>Created attachment 309933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308687</commentid>
    <comment_count>6</comment_count>
      <attachid>309933</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-05-15 09:54:41 -0700</bug_when>
    <thetext>Comment on attachment 309933
Patch

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

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:89
&gt;      m_muted = muted;
&gt;  
&gt; -    if (muted) {
&gt; -        // FIXME: We need to figure out how to guarantee that at least one black video frame is
&gt; -        // emitted after being muted.
&gt; -        stopProducingData();
&gt; -    } else
&gt; -        startProducingData();
&gt; +    if (muted)
&gt; +        stop();
&gt; +    else
&gt; +        start();
&gt; +
&gt; +    notifyMutedObservers();

It is slightly confusing that we modify m_muted and call notifyMutedObservers() here and in notifyMutedChange. Is there a reason to not call notifyMutedChange from here and have it do both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308689</commentid>
    <comment_count>7</comment_count>
      <attachid>309933</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-15 09:59:16 -0700</bug_when>
    <thetext>Comment on attachment 309933
Patch

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

&gt;&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:89
&gt;&gt; +    notifyMutedObservers();
&gt; 
&gt; It is slightly confusing that we modify m_muted and call notifyMutedObservers() here and in notifyMutedChange. Is there a reason to not call notifyMutedChange from here and have it do both?

Yes. The only reason is that we preserve setting m_muted before calling start/stop.
But maybe it is better to call start/stop unconditionally and then call notifyMutedChange to do the reset of the work.
I&apos;ll try this and see whether that breaks anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308784</commentid>
    <comment_count>8</comment_count>
      <attachid>310161</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-15 13:58:36 -0700</bug_when>
    <thetext>Created attachment 310161
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308785</commentid>
    <comment_count>9</comment_count>
      <attachid>310161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-15 14:00:09 -0700</bug_when>
    <thetext>Comment on attachment 310161
Patch for landing

Rejecting attachment 310161 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 310161, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Tools/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3745960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308855</commentid>
    <comment_count>10</comment_count>
      <attachid>310181</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-15 16:35:08 -0700</bug_when>
    <thetext>Created attachment 310181
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308944</commentid>
    <comment_count>11</comment_count>
      <attachid>310181</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-15 19:45:32 -0700</bug_when>
    <thetext>Comment on attachment 310181
Patch for landing

Clearing flags on attachment: 310181

Committed r216898: &lt;http://trac.webkit.org/changeset/216898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308945</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-15 19:45:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309291</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-16 14:21:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/32231650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309829</attachid>
            <date>2017-05-11 17:15:21 -0700</date>
            <delta_ts>2017-05-11 17:30:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171999-20170511171520.patch</filename>
            <type>text/plain</type>
            <size>50141</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFiNzEwNjUxYmIyMWU1
YTIzNDgwYzQ4YzU5NzZmOWZkOGI0YzdjMS4uMWE2N2QzZGZjYjljMGZmMmIwNGY4MmFkM2EzMzk0
N2Q5NjUxODZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlIHRha2Vz
IDMgYm9vbGVhbnM6CisgICAgICAgIC0gbV9pc1Byb2R1Y2luZ0RhdGEgdGVsbHMgd2hldGhlciBk
YXRhIGlzIHByb2R1Y2VkIG9yIG5vdC4gSW4gdGhlIGNhc2Ugb2YgY2FwdHVyaW5nLCBpdCB0ZWxs
cyB3aGV0aGVyIGNhcHR1cmUKKyAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAtIG1fbXV0ZWQv
bV9lbmFibGVkIGFsbG93cyBKUyBvciBXZWJLaXQgbGV2ZWwgdG8gc3RhcnQvc3RvcCB0aGUgc291
cmNlLgorCisgICAgICAgIENoYW5nZWQgTWVkaWFTdHJlYW0gY2FwdHVyZSBzdGF0ZSBjb21wdXRh
dGlvbiBzbyB0aGF0IGNhcHR1cmUgaXMgcmVwb3J0ZWQgYXMgZm9sbG93czoKKyAgICAgICAgLSBt
X2lzUHJvZHVjaW5nIGlzIHRydWUsIGNhcHR1cmUgaXMgaGFwcGVubmluZyBhbmQgaXMgYWN0aXZl
CisgICAgICAgIC0gbV9tdXRlZCBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbmluZyBidXQgaXMg
aW5hY3RpdmUuCisKKyAgICAgICAgRXhjZXB0IGluIHRoZSBjYXNlIG9mIFdlYlJUQyBpbmNvbWlu
ZyBzb3VyY2VzLCBmb3Igd2hpY2ggc291cmNlcyBtYXkgYmUgY3JlYXRlZCBhcyBtdXRlZCBhcyBw
ZXIgdGhlIHNwZWMsCisgICAgICAgIGFsbCBzb3VyY2VzIGFyZSB1bm11dGVkLCBlbmFibGVkIGFu
ZCBub3QgcHJvZHVjaW5nIGRhdGEgd2hlbiBjcmVhdGVkLgorCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UgaXMgbm93IGFjdGl2YWJsZSBlaXRoZXIgYnkgY2FsbGluZyBzdGFydC9zdG9wIG9y
IGJ5IGNhbGxpbmcgc2V0TXV0ZWQvc2V0RW5hYmxlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJucyB3
aWxsIHNldCB0aGUgYm9vbGVhbiB2YWx1ZXMgYWNjb3JkaW5nbHkgYW5kIHdpbGwgY2FsbCB0aGUg
dW5kZXJseWluZworICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEvc3RvcFByb2R1Y2luZ0RhdGEg
bWV0aG9kcyBkb2luZyB0aGUgYWN0dWFsIHN0dWZmLgorCisgICAgICAgIFJlbW92aW5nIGZyb20g
YWxsIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc3ViY2xhc3NlcyB0aGUgaGFuZGxpbmcgb2YgcHJvZHVj
aW5nIGRhdGEuCisgICAgICAgIE1ha2luZyBtb3JlIG1ldGhvZHMgbm9uLXZpcnR1YWwvbWVtYmVy
IGZpZWxkcyBwcml2YXRlIHRvIHNpbXBsaWZ5IHRoZSBtb2RlbC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Om1l
ZGlhU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlNdXRlZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVu
ZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTA1LTEwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY3ODQ1KTogQVNTRVJUKCFtX3JlbmRlclZpZXcu
bmVlZHNMYXlvdXQoKSkgaW4gc3ZnL2N1c3RvbS9idWc3OTc5OC5odG1sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NTBlYjJlZjhmMzg0ZjQzMzRiZTM2NWM1OTYzYzdkZjYxNzhjMTNmMS4uZThlMjk1YWRjOGJiZmRl
ZDVmOGIyMGExYzY0NDZkZjE1NzAwOWNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA1LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBSZWFsdGltZU1lZGlhU291cmNlIGRhdGEgcHJvZHVjdGlvbiBhbmQgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzdG9wUHJvZHVjaW5n
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdl
ci5jcHA6CisKIDIwMTctMDUtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IE5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggM2Y3YjJjMTg4YjU5OTgwYTJkNWNmYmE4
NzZlOTRiOTE4NzIwYThkZS4uNWUwNWMzZTU4ZGNkNTM2N2M5ZTE4ZTE0NjAwZjczODJhM2NhMDA0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OkNhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnQKIFJlZjxDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjazo6U291cmNlPiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpj
cmVhdGUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYg
ZnJhbWVSZXF1ZXN0UmF0ZSkKIHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgU291
cmNlKGNhbnZhcywgV1RGTW92ZShmcmFtZVJlcXVlc3RSYXRlKSkpOwotICAgIHNvdXJjZS0+c3Rh
cnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFydCgpOwogCiAgICAgY2FsbE9uTWFp
blRocmVhZChbc291cmNlID0gc291cmNlLmNvcHlSZWYoKV0gewogICAgICAgICBpZiAoIXNvdXJj
ZS0+bV9jYW52YXMpCkBAIC03NiwxMCArNzYsNiBAQCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpTb3VyY2UoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgc3RkOjpvcAog
CiB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47
Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOwotCiAgICAgaWYgKCFtX2NhbnZhcykKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fY2FudmFzLT5hZGRPYnNlcnZlcigqdGhpcyk7CkBAIC05Mywx
MCArODksNiBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0Rh
dGEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotCiAg
ICAgbV9yZXF1ZXN0RnJhbWVUaW1lci5zdG9wKCk7CiAKICAgICBpZiAoIW1fY2FudmFzKQpAQCAt
MTEzLDcgKzEwNSw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJj
ZTo6Y2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNFbGVtZW50JiBjCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwogCi0gICAgc3RvcFByb2R1Y2luZ0Rh
dGEoKTsKKyAgICBzdG9wKCk7CiAgICAgbV9jYW52YXMgPSBudWxscHRyOwogfQogCkBAIC0xNTAs
NyArMTQyLDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpj
YXB0dXJlQ2FudmFzKCkKIHsKICAgICBBU1NFUlQobV9jYW52YXMpOwogCi0gICAgaWYgKCFtX2lz
UHJvZHVjaW5nRGF0YSkKKyAgICBpZiAoIWlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9mcmFtZVJlcXVlc3RSYXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRp
YVN0cmVhbVRyYWNrLmgKaW5kZXggYWQyNWFkZWE3MGE4ZGI2ODcxZDZiYjBhMDhhZWZkNjRmNzUx
MGQ2OC4uY2UwNzdjZDYxNWIwY2Y4NzQ1OWY0YzBjOTlmOWI2OTA5M2UyYjE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaApAQCAtNjIsNyArNjIsNiBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQogICAgICAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgIGZp
bmFsOwotICAgICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
cm9kdWNpbmdEYXRhOyB9CiAgICAgICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVzKCk7IH0KICAgICAgICAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2V0dGluZ3M7IH0KICAgICAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTcwLDcgKzY5LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBjYXB0dXJlQ2FudmFzKCk7CiAgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lVGltZXJG
aXJlZCgpOwogCi0gICAgICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogICAg
ICAgICBib29sIG1fc2hvdWxkRW1pdEZyYW1lIHsgdHJ1ZSB9OwogICAgICAgICBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gbV9mcmFtZVJlcXVlc3RSYXRlOwogICAgICAgICBUaW1lciBtX3JlcXVlc3RG
cmFtZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcAppbmRleCAyNmY1NGUwODBhZmNiOTk5MDRmOGQyMmQ2ZGM5OTg3ODdjZDUy
ZjQ0Li4zMWFkN2NmYmU1ODhhMzYwNzA4Y2ViM2NjODEzZTBhYThiZjE3ZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAt
MzQ2LDcgKzM0Niw3IEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBNZWRpYVN0cmVh
bTo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAgICAgICAgIGlmIChtX3ByaXZhdGUtPmhhc0NhcHR1cmVB
dWRpb1NvdXJjZSgpKSB7CiAgICAgICAgICAgICBpZiAobV9wcml2YXRlLT5tdXRlZCgpKQogICAg
ICAgICAgICAgICAgIHN0YXRlIHw9IEhhc011dGVkQXVkaW9DYXB0dXJlRGV2aWNlOwotICAgICAg
ICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgICAgICBlbHNlIGlmICht
X2lzUHJvZHVjaW5nRGF0YSAmJiBtX3ByaXZhdGUtPmlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAg
ICAgICAgICAgIHN0YXRlIHw9IEhhc0FjdGl2ZUF1ZGlvQ2FwdHVyZURldmljZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTM1Niw3ICszNTYsNyBAQCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgTWVkaWFTdHJlYW06Om1lZGlhU3RhdGUoKSBjb25zdAogICAgICAgICBpZiAobV9wcml2YXRl
LT5oYXNDYXB0dXJlVmlkZW9Tb3VyY2UoKSkgewogICAgICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+
bXV0ZWQoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNNdXRlZFZpZGVvQ2FwdHVyZURl
dmljZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQorICAgICAgICAg
ICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9wcml2YXRlLT5pc1Byb2R1Y2luZ0Rh
dGEoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNBY3RpdmVWaWRlb0NhcHR1cmVEZXZp
Y2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCA1ZTIw
NDZhZDVhNGNlZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZjODIxLi5hZWQzNzkxNThkMWI3ZjA1Y2Nj
OGFmY2JjOTI4NTc2MGEyM2U5YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTYy
LDggKzYyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNFbmRlZDsgfQogCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5z
dGFydFByb2R1Y2luZ0RhdGEoKTsgfQotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IG1f
c291cmNlLT5zdG9wUHJvZHVjaW5nRGF0YSgpOyB9CisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSB7IG1fc291cmNlLT5zdGFydCgpOyB9CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
IHsgbV9zb3VyY2UtPnN0b3AoKTsgfQogICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgeyByZXR1
cm4gbV9zb3VyY2UtPmlzUHJvZHVjaW5nRGF0YSgpOyB9CiAKICAgICBib29sIGlzSXNvbGF0ZWQo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS0+aXNJc29sYXRlZCgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDRiNGU0NjQ3MmFmZmE5NDdlYTgyOGVhNDVkNmQwYmIwM2UwNDY1MDMuLjI0
ZWZmNzI4MDhkMmI5MGMxOGZjZGU5ZGJmMWUxMDI3ZTI1ZWRlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuY3BwCkBAIC01OSwyMSArNTksMTUgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmkKICAgICBt
X3N1cHByZXNzTm90aWZpY2F0aW9ucyA9IGZhbHNlOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnJlc2V0KCkKLXsKLSAgICBtX3N0b3BwZWQgPSBmYWxzZTsKLSAgICBtX211dGVkID0g
ZmFsc2U7Ci19Ci0KIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fb2JzZXJ2ZXJzLmFw
cGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7CiB9CiAK
IHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZUZpcnN0
TWF0Y2hpbmcoWyZvYnNlcnZlcl0oYXV0byogYW5PYnNlcnZlcikgewotICAgICAgICByZXR1cm4g
YW5PYnNlcnZlciA9PSAmb2JzZXJ2ZXI7CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRj
aGluZyhbJm9ic2VydmVyXShhdXRvIGFuT2JzZXJ2ZXIpIHsKKyAgICAgICAgcmV0dXJuICZhbk9i
c2VydmVyLmdldCgpID09ICZvYnNlcnZlcjsKICAgICB9KTsKIAogICAgIGlmICghbV9vYnNlcnZl
cnMuc2l6ZSgpKQpAQCAtODIsMzkgKzc2LDQ0IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
cmVtb3ZlT2JzZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIG9ic2VydmVyCiAK
IHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsKLSAgICBp
ZiAobV9zdG9wcGVkIHx8IG1fbXV0ZWQgPT0gbXV0ZWQpCisgICAgaWYgKG1fbXV0ZWQgPT0gbXV0
ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKIAotICAgIGlmICht
dXRlZCkgewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBn
dWFyYW50ZWUgdGhhdCBhdCBsZWFzdCBvbmUgYmxhY2sgdmlkZW8gZnJhbWUgaXMKLSAgICAgICAg
Ly8gZW1pdHRlZCBhZnRlciBiZWluZyBtdXRlZC4KLSAgICAgICAgc3RvcFByb2R1Y2luZ0RhdGEo
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgaWYgKG11
dGVkKQorICAgICAgICBzdG9wKCk7CisgICAgZWxzZQorICAgICAgICBzdGFydCgpOworCisgICAg
bm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKK30KKwordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpu
b3RpZnlNdXRlZENoYW5nZShib29sIG11dGVkKQoreworICAgIGlmIChtX211dGVkID09IG11dGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX211dGVkID0gbXV0ZWQ7CiAKICAgICBub3RpZnlN
dXRlZE9ic2VydmVycygpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6Om5vdGlmeU11
dGVkT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICBmb3Ig
KE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5zb3Vy
Y2VNdXRlZENoYW5nZWQoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAobV9zdG9wcGVkIHx8IG1fZW5hYmxlZCA9PSBl
bmFibGVkKQorICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAg
ICAgb2JzZXJ2ZXItPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgZm9yIChPYnNlcnZlciYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIuc291cmNlRW5hYmxlZENo
YW5nZWQoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5n
ZSgpCkBAIC0xMjgsNDkgKzEyNyw1NyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldHRp
bmdzRGlkQ2hhbmdlKCkKIAogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNrKFt0aGlzXSB7CiAgICAg
ICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uID0gZmFsc2U7Ci0gICAg
ICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgICAgIG9ic2Vy
dmVyLT5zb3VyY2VTZXR0aW5nc0NoYW5nZWQoKTsKKyAgICAgICAgZm9yIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgICAgIG9ic2VydmVyLnNvdXJjZVNldHRpbmdz
Q2hhbmdlZCgpOwogICAgIH0pOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVv
U2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2Vy
dmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxl
KTsKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBv
YnNlcnZlci52aWRlb1NhbXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYg
dGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlvRGF0YSwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2Vy
dmVyLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZl
cnMpCisgICAgICAgIG9ic2VydmVyLmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0Rh
dGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQordm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzdGFydCgpCiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkKKyAgICBpZiAobV9pc1By
b2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc3RvcHBlZCA9IHRydWU7Cisg
ICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOworICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwor
fQogCi0gICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7Ci0gICAg
ICAgIGlmIChvYnNlcnZlciAhPSBjYWxsaW5nT2JzZXJ2ZXIpCi0gICAgICAgICAgICBvYnNlcnZl
ci0+c291cmNlU3RvcHBlZCgpOwotICAgIH0KK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3Rv
cCgpCit7CisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICAgICAgcmV0dXJuOwogCisg
ICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOwog
fQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxs
aW5nT2JzZXJ2ZXIpCiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkKKyAgICBpZiAoIW1faXNQcm9kdWNp
bmdEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVy
IDogbV9vYnNlcnZlcnMpIHsKLSAgICAgICAgaWYgKG9ic2VydmVyLT5wcmV2ZW50U291cmNlRnJv
bVN0b3BwaW5nKCkpCisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykg
eworICAgICAgICBpZiAob2JzZXJ2ZXIucHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzdG9wKGNhbGxpbmdPYnNlcnZlcik7CisKKyAg
ICBzdG9wKCk7CisKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7
CisgICAgICAgIGlmICgmb2JzZXJ2ZXIgIT0gY2FsbGluZ09ic2VydmVyKQorICAgICAgICAgICAg
b2JzZXJ2ZXIuc291cmNlU3RvcHBlZCgpOworICAgIH0KIH0KIAogYm9vbCBSZWFsdGltZU1lZGlh
U291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6
Om9wdGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApp
bmRleCAxNWE4ZDhhOTFhNjg4OTM0NWFhNjc3ZWFmYjU1NjM1NTU3Yjg4ZWJjLi4yNjVhNGIxYTFi
NmMyYWIyYzdjNjQ2YzE3YjdhZGZkZDA3MjEwOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0x
MDgsNjAgKzEwOCwzMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElEKCkgY29uc3Qg
eyByZXR1cm4gbV9wZXJzaXN0ZW50SUQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVu
dElEKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElEKSB7IG1fcGVyc2lzdGVudElEID0gcGVyc2lz
dGVudElEOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBlcnNpc3RlbnRJRChTdHJpbmcmJiBwZXJz
aXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQgPSBXVEZNb3ZlKHBlcnNpc3RlbnRJRCk7IH0KIAog
ICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEF1ZGlvLCBWaWRlbyB9OwogICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotICAgIAotICAgIHZpcnR1
YWwgdW5zaWduZWQgZml0bmVzc1Njb3JlKCkgY29uc3QgeyByZXR1cm4gbV9maXRuZXNzU2NvcmU7
IH0KLQotICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYg
Y2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0gMDsKLQotICAgIHVzaW5nIFN1Y2Nl
c3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIEZhaWx1cmVIYW5k
bGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29u
c3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OwotICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFp
bnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdWNjZXNzSGFuZGxlciYmLCBGYWlsdXJlSGFu
ZGxlciYmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFw
cGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwotCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYp
OwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJh
aW50JikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKyAg
ICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRh
OyB9CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3RvcCgpOworICAgIHZvaWQgcmVxdWVz
dFN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51bGxwdHIpOwogCi0gICAgdmlydHVh
bCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIAotICAgIHZv
aWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIGF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYs
IGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworICAgIGJvb2wgbXV0ZWQo
KSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CisgICAgdm9pZCBzZXRNdXRlZChib29sKTsKICAg
ICAKLSAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KLQotICAg
IHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVkOyB9CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogCi0gICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0NhcHR1cmVTb3Vy
Y2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIG1vbml0b3JP
cmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgeyB9CisgICAgY29uc3QgU3RyaW5nJiBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0
cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgCisgICAgdW5zaWduZWQgZml0bmVz
c1Njb3JlKCkgY29uc3QgeyByZXR1cm4gbV9maXRuZXNzU2NvcmU7IH0KKwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQ
cm9kdWNpbmdEYXRhKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkg
eyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0KLSAgICB2b2lkIHN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51bGxw
dHIpOwotICAgIHZvaWQgcmVxdWVzdFN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51
bGxwdHIpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7Ci0KLSAgICB2aXJ0dWFsIEF1ZGlv
U291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0KICAgICB2b2lkIHNldFdpZHRoKGludCk7CiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsKICAg
ICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC0xOTUs
NiArMTY1LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVjaG9DYW5jZWxsYXRpb24oYm9vbCk7
CiAgICAgdmlydHVhbCBib29sIGFwcGx5RWNob0NhbmNlbGxhdGlvbihib29sKSB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOworCisgICAgdXNpbmcg
U3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47CisgICAgdXNpbmcgRmFpbHVy
ZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBiYWRDb25zdHJhaW50
LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47CisgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29u
c3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1
cmVIYW5kbGVyJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7CisKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludChjb25zdCBNZWRpYUNv
bnN0cmFpbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5nc0RpZENoYW5nZSgp
OworCisgICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9u
Tm90aWZpZXImKSB7IH0KKworICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9T
b3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KKwogcHJvdGVjdGVkOgogICAgIFJl
YWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIApAQCAtMjExLDI2ICsyMDIsMzEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENvbnN0cmFpbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6b3B0aW9uYWw8aW50PiB3aWR0aCwg
c3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRpb25hbDxkb3VibGU+KTsKIAotICAg
IGNvbnN0IFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVycygpIGNvbnN0IHsgcmV0dXJuIG1fb2Jz
ZXJ2ZXJzOyB9Ci0KICAgICB2b2lkIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAg
dm9pZCBub3RpZnlNdXRlZENoYW5nZShib29sIG11dGVkKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVZvbHVtZShkb3VibGUgdm9sdW1lKSB7IG1fdm9sdW1lID0gdm9sdW1lOyB9CiAgICAgdm9pZCBp
bml0aWFsaXplU2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkgeyBtX3NhbXBsZVJhdGUgPSBzYW1w
bGVSYXRlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlvbihib29sIGVjaG9D
YW5jZWxsYXRpb24pIHsgbV9lY2hvQ2FuY2VsbGF0aW9uID0gZWNob0NhbmNlbGxhdGlvbjsgfQog
Ci0gICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZW5hYmxlZCB7IHRydWUg
fTsKLQorICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKTsKKyAgICB2
b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpOworICAg
IAogcHJpdmF0ZToKICAgICBXZWFrUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVdlYWtQ
dHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
dG9wUHJvZHVjaW5nRGF0YSgpIHsgfQorCisgICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKKwogICAgIFdlYWtQdHJGYWN0b3J5PFJlYWx0aW1l
TWVkaWFTb3VyY2U+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAgU3RyaW5nIG1faWQ7CiAgICAgU3Ry
aW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisgICAgVmVjdG9yPHN0ZDo6cmVm
ZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiBtX29ic2VydmVyczsKICAgICBJbnRTaXplIG1fc2l6
ZTsKICAgICBkb3VibGUgbV9mcmFtZVJhdGUgeyAzMCB9OwogICAgIGRvdWJsZSBtX2FzcGVjdFJh
dGlvIHsgMCB9OwpAQCAtMjQxLDkgKzIzNyw5IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbV9mYWNpbmdNb2RlIHsgUmVhbHRpbWVN
ZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyfTsKIAogICAgIGJvb2wgbV9lY2hvQ2FuY2VsbGF0aW9u
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Bl
bmRpbmdTZXR0aW5nc0RpZENoYW5nZU5vdGlmaWNhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3N1cHByZXNzTm90aWZpY2F0aW9ucyB7IHRydWUgfTsKKyAgICBib29sIG1faXNQcm9kdWNpbmdE
YXRhIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBDYXB0dXJlU291cmNlT3JFcnJvciB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNh
cHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGY4NDkwMTBmNzM5MzVlNmNjMDRiNWY1MWZhMGEy
N2NjZGQ1OTdhYWYuLjcxNTAxYzBkN2JkZmY4YjA0YTMzNjM2M2IzNTFiOTI0MmViZGU5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC02OCw3ICs2OCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVj
aW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWw7
CiAKIHByb3RlY3RlZDoKICAgICBBVk1lZGlhQ2FwdHVyZVNvdXJjZShBVkNhcHR1cmVEZXZpY2Uq
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKTsKQEAgLTkx
LDcgKzkwLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBTZXNzaW9u
KCk7Ci0gICAgdm9pZCByZXNldCgpIGZpbmFsOwogCiAgICAgdm9pZCBiZWdpbkNvbmZpZ3VyYXRp
b24oKSBmaW5hbDsKICAgICB2b2lkIGNvbW1pdENvbmZpZ3VyYXRpb24oKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2Fw
dHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
Vk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxMjJiZGI4ZjQ5NDAxOGMyYzA0NWFiZjg0NzVk
OTFhNmFlNWJkNzJhLi41NjViZDk4NzVlNTJjMzQ4NTE2NWU2NDBlNDI3NDFmNTMyZDlmYjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRp
YUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBAIC0xNDgsOCArMTQ4LDcgQEAgQVZNZWRp
YUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNlKEFWQ2FwdHVyZURldmljZVR5cGVk
ZWYqIGRldmljZSwgY29uc3QKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludD4oSW50
ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlKSA9PSBBVkNhcHR1cmVTZXNzaW9uSW50ZXJydXB0
aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCwgIkludGVycnVwdGlvblJl
YXNvbjo6QXVkaW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNv
bkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMgZXhwZWN0ZWQiKTsKICNlbmRpZgog
ICAgIAotICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5pcXVlSUQpOwotICAgIHNldE11dGVk
KHRydWUpOworICAgIHNldFBlcnNpc3RlbnRJRChTdHJpbmcoZGV2aWNlLnVuaXF1ZUlEKSk7CiB9
CiAKIEFWTWVkaWFDYXB0dXJlU291cmNlOjp+QVZNZWRpYUNhcHR1cmVTb3VyY2UoKQpAQCAtMjYy
LDE3ICsyNjEsNiBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oKQog
ICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07CiB9CiAKLXZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OnJlc2V0KCkKLXsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgp
OwotICAgIG1faXNSdW5uaW5nID0gZmFsc2U7Ci0gICAgZm9yIChOU1N0cmluZyAqa2V5TmFtZSBp
biBzZXNzaW9uS1ZPUHJvcGVydGllcygpKQotICAgICAgICBbbV9zZXNzaW9uIHJlbW92ZU9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6a2V5TmFtZV07Ci0KLSAgICBzaHV0
ZG93bkNhcHR1cmVTZXNzaW9uKCk7Ci0gICAgbV9zZXNzaW9uID0gbnVsbHB0cjsKLX0KLQogdm9p
ZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2Uo
Ym9vbCBzdGF0ZSkKIHsKICAgICBzY2hlZHVsZURlZmVycmVkVGFzayhbdGhpcywgc3RhdGVdIHsK
QEAgLTI4MCwxOSArMjY4LDEwIEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVT
ZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9pc1J1bm5pbmcgPSBzdGF0ZTsKLSAgICAgICAgaWYgKG1fbXV0ZWQgPT0g
IW1faXNSdW5uaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbXV0ZWQgPSAh
bV9pc1J1bm5pbmc7Ci0gICAgICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7CisgICAgICAgIG5v
dGlmeU11dGVkQ2hhbmdlKCFtX2lzUnVubmluZyk7CiAgICAgfSk7CiB9CiAKLWJvb2wgQVZNZWRp
YUNhcHR1cmVTb3VyY2U6OmlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aXNSdW5uaW5nOwotfQotCiAjaWYgUExBVEZPUk0oSU9TKQogdm9pZCBBVk1lZGlhQ2FwdHVyZVNv
dXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0YWluUHRyPE5TRXJyb3I+IGVycm9y
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDFmNjVlNjk0OWZj
YTQyZmRhMDdlMDNlOTFjMTMwZDk2MGM0ZjM4ZjAuLmVkZGFlZjgxMjUzZjQ2ZWJmNjU0MzI3NzJi
OWNmY2UxZTcxNTEyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAg
LTY1Niw4ICs2NTYsNiBAQCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJl
U291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0IFN0cgogICAgIDogUmVhbHRpbWVN
ZWRpYVNvdXJjZShkZXZpY2VJRCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIGxh
YmVsKQogICAgICwgbV9jYXB0dXJlRGV2aWNlSUQocGVyc2lzdGVudElEKQogewotICAgIG1fbXV0
ZWQgPSB0cnVlOwotCiAgICAgYXV0byYgdW5pdCA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmds
ZXRvbigpOwogCiAgICAgaW5pdGlhbGl6ZUVjaG9DYW5jZWxsYXRpb24odW5pdC5lbmFibGVFY2hv
Q2FuY2VsbGF0aW9uKCkpOwpAQCAtNjg0LDIwICs2ODIsMTEgQEAgdm9pZCBDb3JlQXVkaW9DYXB0
dXJlU291cmNlOjpyZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZSYKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEo
KQogewotICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGNvcmVBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0
aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogCiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2lu
Z2xldG9uKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5pc1Byb2R1Y2luZ0RhdGEoKTsKLQotICAg
IGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fbXV0ZWQg
PSBmYWxzZTsKIAogICAgIGlmIChtX2F1ZGlvU291cmNlUHJvdmlkZXIpCiAgICAgICAgIG1fYXVk
aW9Tb3VyY2VQcm92aWRlci0+cHJlcGFyZSgmQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9u
KCkubWljcm9waG9uZUZvcm1hdCgpLnN0cmVhbURlc2NyaXB0aW9uKCkpOwpAQCAtNzA1LDEyICs2
OTQsNyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewot
ICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdG9wUHJvZHVjaW5nRGF0YSgpOwotICAg
IG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgbV9tdXRlZCA9IGZhbHNlOwogCiAgICAg
aWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVy
LT51bnByZXBhcmUoKTsKQEAgLTc2MCw3ICs3NDQsNyBAQCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBD
b3JlQXVkaW9DYXB0dXJlU291cmNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICBpZiAo
IW1fYXVkaW9Tb3VyY2VQcm92aWRlcikgewogICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIg
PSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlzKTsKLSAgICAgICAg
aWYgKG1faXNQcm9kdWNpbmdEYXRhKQorICAgICAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAg
ICAgICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNvcmVBdWRpb1NoYXJl
ZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1EZXNjcmlwdGlvbigp
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmluZGV4IDgxZGZkNzZj
MWFhZWNhMjNlZGYyZDg5OWY1OWMyY2Q3N2E3YTU1NjMuLjI2M2FkYmQ3YzA3YWYwYmI3NmNlYjVh
Zjk1MDY3YzYxZjEzZmFmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaApAQCAt
ODAsNyArODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmlu
YWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgaXNQcm9k
dWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KIAog
ICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKQEAgLTkzLDcgKzkyLDYgQEAgcHJpdmF0
ZToKIAogICAgIHVpbnQzMl90IG1fY2FwdHVyZURldmljZUlEIHsgMCB9OwogCi0gICAgYm9vbCBt
X2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKIAogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1lZGlhU291cmNlQ2Fw
YWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYy5tbQppbmRleCBiMGYyODNiMWRjNzQyZGQwOWFmNjUxZDc3MjVmY2FhNjcxYzhhYzk1
Li5lYzJmNDA4MTQ1ZGM5ZTRlZTM1YTYxNjA4MDE3Y2NjZTY1YWY3YTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMDcsMTMgKzEwNyw2IEBAIE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjOjp+TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMoKQogICAg
IH0KIH0KIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGF1dG8gc291
cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKLSAgICBz
b3VyY2UtPm1fbXV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KIHZvaWQgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1l
Q291bnQpCiB7CiAgICAgQVNTRVJUKG1fZm9ybWF0RGVzY3JpcHRpb24pOwpAQCAtMTU4LDcgKzE1
MSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcihkb3VibGUgZGVs
dGEpCiAgICAgICAgIHVpbnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4oZnJhbWVDb3VudCwg
YmlwQm9wUmVtYWluKTsKICAgICAgICAgZm9yIChhdXRvJiBhdWRpb0J1ZmZlciA6IG1fYXVkaW9C
dWZmZXJMaXN0LT5idWZmZXJzKCkpIHsKICAgICAgICAgICAgIGF1ZGlvQnVmZmVyLm1EYXRhQnl0
ZVNpemUgPSBmcmFtZUNvdW50ICogbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWU7Ci0gICAg
ICAgICAgICBpZiAoIW1fbXV0ZWQgJiYgbV9lbmFibGVkKSB7CisgICAgICAgICAgICBpZiAoIW11
dGVkKCkgJiYgZW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgbWVtY3B5KGF1ZGlvQnVmZmVy
Lm1EYXRhLCAmbV9iaXBCb3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2YoRmxvYXQzMikgKiBi
aXBCb3BDb3VudCk7CiAgICAgICAgICAgICAgICAgYWRkSHVtKEh1bVZvbHVtZSwgSHVtRnJlcXVl
bmN5LCBzYW1wbGVSYXRlKCksIG1fc2FtcGxlc1JlbmRlcmVkLCBzdGF0aWNfY2FzdDxmbG9hdCo+
KGF1ZGlvQnVmZmVyLm1EYXRhKSwgYmlwQm9wQ291bnQpOwogICAgICAgICAgICAgfSBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggYWQ0NTY1NjE1OGE4
NzcwZjI4MDY2MjIzOGFmMzRlN2M4MmJkNjU5Zi4uMDBiM2E3ZTA5MjExZTZmZmIyOWQwNjdjOGE2
Mzg1M2ZmY2UwY2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQpAQCAtNjUsMTMgKzY1LDYgQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKIH0KIAotUmVmUHRyPE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0
cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OkNNU2FtcGxlQnVmZmVyRnJvbVBpeGVsQnVm
ZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggYTRm
OWIzOGFlMmEyOGI3ZDcwNzllYzczYWRjODRhZmQ4NWQzNDgyYS4uYWM4MmM2NjdmZDUwNGE1N2I3
NzhkOGMxOTdkOWU1MzRiZDE4YjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVm
PFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4m
JiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCiB7CiAgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShXVEZNb3ZlKGF1ZGlv
VHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVj
aW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKICAgICByZXR1cm4gc291cmNlOwogfQog
CkBAIC01NSw2ICs1NSw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJyCiAgICAgOiBSZWFsdGlt
ZU1lZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6QXVkaW8sIFN0cmluZygpKQogICAgICwgbV9hdWRpb1RyYWNrKFdURk1vdmUoYXVkaW9U
cmFjaykpCiB7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7CiB9CiAKIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgp
CkBAIC02Myw3ICs2NCw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZSgpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+dW5w
cmVwYXJlKCk7CiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG51bGxwdHI7CiAgICAg
fQotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogfQogCiAKQEAgLTExMiwy
MCArMTEzLDEyIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpPbkRhdGEoY29u
c3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsCiAKIHZvaWQgUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmIChtX2lzUHJv
ZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0
cnVlOwogICAgIGlmIChtX2F1ZGlvVHJhY2spCiAgICAgICAgIG1fYXVkaW9UcmFjay0+QWRkU2lu
ayh0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0b3BQcm9k
dWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlmIChtX2F1ZGlvVHJh
Y2spCiAgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsKIH0KQEAgLTEzNiw3
ICsxMjksOCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJh
Y2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaQogICAgIEFTU0VSVCh0cmFjayk7CiAK
ICAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBpZiAobV9pc1Byb2R1Y2lu
Z0RhdGEpCisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7CisgICAgaWYgKGlz
UHJvZHVjaW5nRGF0YSgpKQogICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNpbmsodGhpcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCA4NTJjZTk3
ZjIyOTNlYzkzMDFiNzQxODBlZTdhYzU5MWIyMzVjZDNkLi42MjVlM2Q5ODhiNzI0MGI3NDU4YzQ4
YmM5YWZiY2NkMjBhYTMwNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC02NywxNCArNjcsMTEgQEAgcHJpdmF0ZToKICAgICBNZWRpYUNvbnN0cmFpbnRz
JiBjb25zdHJhaW50cygpIHsgcmV0dXJuICptX2NvbnN0cmFpbnRzLmdldCgpOyB9CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0ZWRDb25zdHJhaW50
cygpOwogCi0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzUHJvZHVjaW5nRGF0YTsgfQotCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3Vy
Y2VQcm92aWRlcigpIGZpbmFsOwogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1f
Y3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJh
aW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9Owog
ICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+IG1fYXVk
aW9UcmFjazsKIAogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9h
dWRpb1NvdXJjZVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291
cmNlLmNwcAppbmRleCBmNTA5NmZiMGYwYTA2MWQ0NTljMTFhZDJmMTEwNmRmMTM1M2JhMTVhLi4x
NGY4ZTE4OGFiMDAwN2RjNzUwNDEyM2M2ODFiYmM0NGFmZTk2MzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBSZWY8UmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OmNy
ZWF0ZShydGM6OnNjb3BlZAogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgY29uZm9ybWVyKGNv
bmZvcm1lck9wdGlvbnMuZ2V0KCkpOwogCiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvVHJhY2spLCBXVEZNb3Zl
KHRyYWNrSWQpLCBjb25mb3JtZXJPcHRpb25zLmdldCgpKSk7Ci0gICAgc291cmNlLT5zdGFydFBy
b2R1Y2luZ0RhdGEoKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CiAgICAgcmV0dXJuIHNvdXJjZTsK
IH0KIApAQCAtNjcsMTcgKzY3LDEzIEBAIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJyCiAgICAgLCBt
X3ZpZGVvVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSkKICAgICAsIG1fY29uZm9ybWVyKGNvbmZv
cm1lck9wdGlvbnMpCiB7Ci0gICAgbV9tdXRlZCA9ICFtX3ZpZGVvVHJhY2s7CiAgICAgbV9jdXJy
ZW50U2V0dGluZ3Muc2V0V2lkdGgoNjQwKTsKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRIZWln
aHQoNDgwKTsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNrKTsKIH0KIAogdm9p
ZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0g
ICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJv
ZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fdmlkZW9UcmFjaykKICAgICAgICAgbV92aWRl
b1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtXYW50cygpKTsKIH0K
QEAgLTg3LDE4ICs4MywxNCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0
U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZQogICAgIEFTU0VSVCgh
bV92aWRlb1RyYWNrKTsKICAgICBBU1NFUlQodHJhY2spOwogCi0gICAgbV9tdXRlZCA9IGZhbHNl
OwotICAgIG1fdmlkZW9UcmFjayA9IHRyYWNrOwotICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkK
KyAgICBtX3ZpZGVvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3RpZnlNdXRlZENoYW5n
ZSghbV92aWRlb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIG1f
dmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMsIHJ0Yzo6VmlkZW9TaW5rV2FudHMoKSk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0
YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBpZiAobV92aWRlb1RyYWNrKQogICAg
ICAgICBtX3ZpZGVvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7CiB9CkBAIC0xMzMsNyArMTI1LDcg
QEAgQ1ZQaXhlbEJ1ZmZlclJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnBpeGVsQnVm
ZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2UKIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2U6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFtZSkKIHsKLSAgICBp
ZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAgIGlmICghaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1ZmZlckZyb21WaWRl
b0ZyYW1lKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaApp
bmRleCA0MmY5MjZmNDFjYWMwYzE4ZDg0ZmNmNGYyZDZiOTQwNWZlOWUwYjAwLi5kNGEzZjQzZjgw
MmJjOTA0NDg3N2I3OWE5YTcyMjY4OTBhM2IyMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCkBAIC02Niw3ICs2Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHByb2Nlc3NOZXdTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYsIHVuc2lnbmVkLCB1bnNpZ25lZCwg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwogCi0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YSAmJiBtX2J1ZmZlcjsgfQog
ICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQpAQCAtNzgsNyArNzcsNiBAQCBwcml2
YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsK
LSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiBtX3ZpZGVvVHJhY2s7CiAgICAgUmV0
YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWIG1fY29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLm1tCmluZGV4IGJiYTU2YWZmNDQwNWNmOWI2YmNjMWVkOWNmMTAyZTdlODNiOTg4OGIu
LjRjMzRiYzczOGU3YzQwMTZmNWRiY2FiNTEzYmZmOTk4NjZiN2Y5NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTEwNSw3ICsxMDUsNyBAQCB2
b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQoQXVkaW9Tb3VyY2VQ
cm92aWRlckNsaWVudCogY2xpZW50KQogICAgIGlmIChtX2NsaWVudCAmJiAhbV9jb25uZWN0ZWQp
IHsKICAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICBtX2NhcHR1cmVTb3VyY2Ut
PmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5zdGFydFByb2R1
Y2luZ0RhdGEoKTsKKyAgICAgICAgbV9jYXB0dXJlU291cmNlLT5zdGFydCgpOwogICAgIH0gZWxz
ZSBpZiAoIW1fY2xpZW50ICYmIG1fY29ubmVjdGVkKSB7CiAgICAgICAgIG1fY2FwdHVyZVNvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBtX2Nvbm5lY3RlZCA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2lu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNw
cAppbmRleCBjNDdlNzViNzRiNDU0MTM2MThjNDI1ODNlYzg3OGU4YjA5NmNjODVhLi4zNzVjZTdk
ZmRiY2Y2MWJlMDgyMzk1NDI4MDYzZjYwN2Q4NDMxMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMjA4LDcgKzIwOCw3
IEBAIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBNb2NrTWVkaWFFbmRwb2ludDo6Y3JlYXRlTXV0
ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgbV9tdXRlZFJlbW90ZVNv
dXJjZXMuc2V0KG1pZCwgc291cmNlKTsKLSAgICByZXR1cm4gKnNvdXJjZTsKKyAgICByZXR1cm4g
c291cmNlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OnJl
cGxhY2VTZW5kU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UmIG5ld1NvdXJjZSwgY29uc3QgU3Ry
aW5nJiBtaWQpCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5t
dXRlUmVtb3RlU291cmNlc0J5TWlkKCkKIAogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5tdXRl
VGltZXJGaXJlZCgpCiB7Ci0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSA9
IG1fbXV0ZWRSZW1vdGVTb3VyY2VzLmdldChtX21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFz
dCgpKTsKKyAgICBhdXRvKiBzb3VyY2UgPSBtX211dGVkUmVtb3RlU291cmNlcy5nZXQobV9taWRz
T2ZTb3VyY2VzVG9Vbm11dGUudGFrZUxhc3QoKSk7CiAgICAgaWYgKHNvdXJjZSkKICAgICAgICAg
c291cmNlLT5zZXRNdXRlZChmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggZTAxNDg1MjNl
ZGJmZTQ3MWQ0MzY2NDdkNjc5MmUyYTk1YWE1OTU4NS4uMzJkNDMxZWE4ZGE4MjNkOWEzNjFkMDM5
N2M4MjQ4NGM5ZjM1YjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTYxLDE0ICs2MSwxNCBAQCBD
YXB0dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgTQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9y
KFdURk1vdmUoc291cmNlKSk7CiB9CisjZW5kaWYKIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5n
JiBuYW1lKQorUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gc291cmNl
ID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKLSAgICBzb3Vy
Y2UtPm1fbXV0ZWQgPSB0cnVlOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5ub3RpZnlNdXRlZENoYW5n
ZSh0cnVlKTsKICAgICByZXR1cm4gc291cmNlOwogfQotI2VuZGlmCiAKIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvQ2FwdHVyZUZhY3RvcnkmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpmYWN0
b3J5KCkKIHsKQEAgLTEwOCwxNSArMTA4LDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCiAgICAgICAg
IHNldFNhbXBsZVJhdGUoIWRldmljZUluZGV4KCkgPyA0NDEwMCA6IDQ4MDAwKTsKIAotICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKLQogICAgIG1fc3Rh
cnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgbV90aW1lci5zdGFy
dFJlcGVhdGluZyhyZW5kZXJJbnRlcnZhbCgpKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIE1vY2tSZWFsdGltZU1lZGlhU291
cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwogICAgIG1fZWxh
cHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsK
ICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCAzNjQ1MjJiMTNmNzA0ZTkw
ODliYWY4NjVmOWI2Yjk4NmRiMjMxMzA1Li41NmU2MmVlNjBjZTgxZTUyN2RkZjM1ZmVkMGI0NDcy
YTVjMTBlZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgc3Rh
dGljIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5n
JiBuYW1lKTsKIAogICAgIHN0YXRpYyBBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVk
aWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggNzY3MjNhZWFjNmJhODRjNzcwNTQ1YzE3M2JhZGUzODAwNDE5
ZDEyZS4uNDQwYmI5OGQ2ZDI4NjA3ZDRiNmY5MDJkOTNmYWJkMGQzNzRjOTMwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAKQEAgLTgwLDExICs4MCwxMSBAQCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9j
a1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVNZWRpYQogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVk
aW86CiAgICAgICAgIG1fZGV2aWNlSW5kZXggPSBuYW1lID09IGF1ZGlvRGV2aWNlcygpWzBdLmxh
YmVsKCkgPyAwIDogMTsKLSAgICAgICAgc2V0UGVyc2lzdGVudElEKGF1ZGlvRGV2aWNlcygpW21f
ZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKTsKKyAgICAgICAgc2V0UGVyc2lzdGVudElEKFN0
cmluZyhhdWRpb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoK
ICAgICAgICAgbV9kZXZpY2VJbmRleCA9IG5hbWUgPT0gdmlkZW9EZXZpY2VzKClbMF0ubGFiZWwo
KSA/IDAgOiAxOwotICAgICAgICBzZXRQZXJzaXN0ZW50SUQodmlkZW9EZXZpY2VzKClbbV9kZXZp
Y2VJbmRleF0ucGVyc2lzdGVudElkKCkpOworICAgICAgICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5n
KHZpZGVvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTMyLDE4ICsxMzIsNiBAQCBSZWFsdGltZU1l
ZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dXBwb3J0ZWRDb25zdAogICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCi12
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQotewotICAg
IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKLSAgICBzZXRNdXRlZChmYWxzZSk7Ci19Ci0KLXZv
aWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBt
X2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotICAgIHNldE11dGVkKHRydWUpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZS5oCmluZGV4IDlhNWFkMWQyMDQ4MjA0ZTAwNTJiYjVkNjU3ZTI2Mjg1NmMxYmNhYWQuLjUw
NmU0ODJhMmNmYWM2ZmMzODVhMGVlMDUxZWU1MjA3ZGM3OTRhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKQEAg
LTY1LDkgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3Vw
cG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRz
JikgPSAwOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRl
OwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKLQogICAgIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBj
b25zdCBvdmVycmlkZTsKIApAQCAtODQsMTQgKzgxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bml0aWFsaXplU2V0dGluZ3MoKTsKICNlbmRpZgogCi0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQotCiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2Nh
cGFiaWxpdGllczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25zdHJhaW50czsK
ICAgICB1bnNpZ25lZCBtX2RldmljZUluZGV4IHsgMCB9OwotICAgIGJvb2wgbV9pc1Byb2R1Y2lu
Z0RhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcAppbmRleCBiZDI4NzQ2MDY1MDkxOTI0ZjUyZmFjNWU2MDcxNTUzYjAxN2NlNjc5Li41M2E2
MTlmYjYxZGM5YTlhZTFjZWM1YzkyNmFhMGFiYTc0MzFjZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApA
QCAtNjgsMTQgKzY4LDE0IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4g
Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQ
dHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVh
dGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKKyAgICBzb3Vy
Y2UtPm5vdGlmeU11dGVkQ2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5k
aWYKIAogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW9DYXB0dXJlRmFjdG9yeSYgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmZhY3RvcnkoKQogewpAQCAtOTYsNyArOTYsNiBAQCBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBuYW1l
KQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQog
ewotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKICAg
ICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBzZXRXaWR0aCg2NDApOwogICAgICAg
ICBzZXRIZWlnaHQoNDgwKTsKQEAgLTEwOCw3ICsxMDcsNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAgbV90aW1lci5zdG9wKCk7CiAgICAgbV9lbGFw
c2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOwog
ICAgIG1fc3RhcnRUaW1lID0gTkFOOwpAQCAtMzU0LDcgKzM1Miw3IEBAIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUoKQogICAgIEZsb2F0UmVjdCBmcmFtZVJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIHNpemUpLCAhZGV2aWNlSW5kZXgoKSA/IENvbG9yOjpibGFjayA6IENvbG9yOjpk
YXJrR3JheSk7CiAKLSAgICBpZiAoIW1fbXV0ZWQgJiYgbV9lbmFibGVkKSB7CisgICAgaWYgKCFt
dXRlZCgpICYmIGVuYWJsZWQoKSkgewogICAgICAgICBkcmF3VGV4dChjb250ZXh0KTsKICAgICAg
ICAgZHJhd0FuaW1hdGlvbihjb250ZXh0KTsKICAgICAgICAgZHJhd0JveGVzKGNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5oCmluZGV4IGFhNjBlYzdlNWYzODMxY2YwYzI3ZmQ4ZjEwNzExM2IwMDJkMjk2MDku
LmMxY2JiMGI1YmRjMmMyZjU3MzJkYWRhZmQ1NGFiNTUxNjEyNjg1NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UgOiBwdWJsaWMg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogCiAgICAgc3RhdGljIENhcHR1cmVT
b3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRz
Kik7Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlTXV0
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tSZWFsdGltZVZpZGVv
U291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIFZp
ZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDZjZGJhMWY3NTkzYjBlNGUyYTU3OTE1ODMwMDU1Zjc3MDFkOTNhNjkuLmVlODEy
ZDllZjUyNzczM2I0ODMwMjc3OGEyMjk2MWVjOTM4ZDUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5jcHAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eTo6c3RhcnRQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8g
aXRlciA9IG1fcHJveGllcy5maW5kKGlkKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5k
KCkpCi0gICAgICAgIGl0ZXItPnZhbHVlLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsK
KyAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RvcFByb2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiB7
CiAgICAgYXV0byBpdGVyID0gbV9wcm94aWVzLmZpbmQoaWQpOwogICAgIGlmIChpdGVyICE9IG1f
cHJveGllcy5lbmQoKSkKLSAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnN0b3BQcm9kdWNp
bmdEYXRhKCk7CisgICAgICAgIGl0ZXItPnZhbHVlLT5zb3VyY2UoKS5zdG9wKCk7CiB9CiAKIHZv
aWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6Y2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlk
LCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IGE5MzczN2U5MGY5ZjVjMmM4Y2M1ZDlkYWQ5N2Ni
NDJlZmM1ZjAwNWIuLmIzZWUzY2QxMjhhOTczM2Y0ODY4MmI0ZDZiZjQ3ZThlYThlYjM2YjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xMTAsOCArMTEwLDcgQEAgcHVibGljOgogICAgICAg
ICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9EYXRhKG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJh
bWVzKTsKICAgICAgICAgbV9yaW5nQnVmZmVyLmZldGNoKGF1ZGlvRGF0YS5saXN0KCksIG51bWJl
ck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsKIAotICAgICAgICBmb3IgKGF1dG8qIG9ic2Vy
dmVyIDogb2JzZXJ2ZXJzKCkpCi0gICAgICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwor
ICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwg
YXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgfQogCiAgICAg
dm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCkBAIC0xMjcsMjQgKzEyNiw2IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FsbGJhY2tzLmZhaWx1cmVIYW5kbGVyKGZhaWxlZENvbnN0cmFpbnQsIGVycm9y
TWVzc2FnZSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSBmaW5hbAot
ICAgIHsKLSAgICAgICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgbV9tdXRlZCA9IG11dGVkOwotICAgICAgICBtX21hbmFnZXIuc2V0TXV0ZWQo
bV9pZCwgbV9tdXRlZCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgICAgICBt
X21hbmFnZXIuc2V0RW5hYmxlZChtX2lkLCBtX2VuYWJsZWQpOwotICAgIH0KLQogcHJpdmF0ZToK
ICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0YXJ0UHJv
ZHVjaW5nRGF0YShtX2lkKTsgfQogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7
IG1fbWFuYWdlci5zdG9wUHJvZHVjaW5nRGF0YShtX2lkKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309832</attachid>
            <date>2017-05-11 17:30:38 -0700</date>
            <delta_ts>2017-05-12 10:51:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171999-20170511173037.patch</filename>
            <type>text/plain</type>
            <size>50104</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NlZGFmMmVmZDhlYmNm
NDkyMjBhNjllNzQwNTg5NGMxOWY1ZGJmOC4uY2Q5MGZmZGY3ZDAwNThmOTlhYmRkYzQ4MWFhNzMy
ZTJiMjU5YjQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlIHRha2Vz
IDMgYm9vbGVhbnM6CisgICAgICAgIC0gbV9pc1Byb2R1Y2luZ0RhdGEgdGVsbHMgd2hldGhlciBk
YXRhIGlzIHByb2R1Y2VkIG9yIG5vdC4gSW4gdGhlIGNhc2Ugb2YgY2FwdHVyaW5nLCBpdCB0ZWxs
cyB3aGV0aGVyIGNhcHR1cmUKKyAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAtIG1fbXV0ZWQv
bV9lbmFibGVkIGFsbG93cyBKUyBvciBXZWJLaXQgbGV2ZWwgdG8gc3RhcnQvc3RvcCB0aGUgc291
cmNlLgorCisgICAgICAgIENoYW5nZWQgTWVkaWFTdHJlYW0gY2FwdHVyZSBzdGF0ZSBjb21wdXRh
dGlvbiBzbyB0aGF0IGNhcHR1cmUgaXMgcmVwb3J0ZWQgYXMgZm9sbG93czoKKyAgICAgICAgLSBt
X2lzUHJvZHVjaW5nIGlzIHRydWUsIGNhcHR1cmUgaXMgaGFwcGVubmluZyBhbmQgaXMgYWN0aXZl
CisgICAgICAgIC0gbV9tdXRlZCBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbmluZyBidXQgaXMg
aW5hY3RpdmUuCisKKyAgICAgICAgRXhjZXB0IGluIHRoZSBjYXNlIG9mIFdlYlJUQyBpbmNvbWlu
ZyBzb3VyY2VzLCBmb3Igd2hpY2ggc291cmNlcyBtYXkgYmUgY3JlYXRlZCBhcyBtdXRlZCBhcyBw
ZXIgdGhlIHNwZWMsCisgICAgICAgIGFsbCBzb3VyY2VzIGFyZSB1bm11dGVkLCBlbmFibGVkIGFu
ZCBub3QgcHJvZHVjaW5nIGRhdGEgd2hlbiBjcmVhdGVkLgorCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UgaXMgbm93IGFjdGl2YWJsZSBlaXRoZXIgYnkgY2FsbGluZyBzdGFydC9zdG9wIG9y
IGJ5IGNhbGxpbmcgc2V0TXV0ZWQvc2V0RW5hYmxlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJucyB3
aWxsIHNldCB0aGUgYm9vbGVhbiB2YWx1ZXMgYWNjb3JkaW5nbHkgYW5kIHdpbGwgY2FsbCB0aGUg
dW5kZXJseWluZworICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEvc3RvcFByb2R1Y2luZ0RhdGEg
bWV0aG9kcyBkb2luZyB0aGUgYWN0dWFsIHN0dWZmLgorCisgICAgICAgIFJlbW92aW5nIGZyb20g
YWxsIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc3ViY2xhc3NlcyB0aGUgaGFuZGxpbmcgb2YgcHJvZHVj
aW5nIGRhdGEuCisgICAgICAgIE1ha2luZyBtb3JlIG1ldGhvZHMgbm9uLXZpcnR1YWwvbWVtYmVy
IGZpZWxkcyBwcml2YXRlIHRvIHNpbXBsaWZ5IHRoZSBtb2RlbC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Om1l
ZGlhU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlNdXRlZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVu
ZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTA1LTExICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYSBzcGVsbGluZyBtaXN0YWtlIGluIEFwcGxlUGF5RXJyb3JDb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMDEzZmU4Mzc3MmNiMTY4M2MyOGMwN2JiYTEwMWE0MDhhZWRlMzIxMy4u
MDZkNTU3YTVkMmI5Yjk4NDdkMGI5Mzg4ODA1MWMzMjZjNWI0NDI4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTA1LTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBTaW1wbGlmeSBSZWFsdGltZU1lZGlhU291cmNlIGRhdGEgcHJvZHVjdGlv
biBhbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MTk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzdGFydFByb2R1
Y2luZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5
OjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlci5jcHA6CisKIDIwMTctMDUtMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIHNwZWxsaW5nIG1pc3Rha2UgaW4gQXBwbGVQYXlF
cnJvckNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggM2Y3
YjJjMTg4YjU5OTgwYTJkNWNmYmE4NzZlOTRiOTE4NzIwYThkZS4uNWUwNWMzZTU4ZGNkNTM2N2M5
ZTE4ZTE0NjAwZjczODJhM2NhMDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnQKIFJlZjxD
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlPiBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjazo6U291cmNlOjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgZnJhbWVSZXF1ZXN0UmF0ZSkKIHsKICAgICBhdXRvIHNvdXJj
ZSA9IGFkb3B0UmVmKCpuZXcgU291cmNlKGNhbnZhcywgV1RGTW92ZShmcmFtZVJlcXVlc3RSYXRl
KSkpOwotICAgIHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFy
dCgpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbc291cmNlID0gc291cmNlLmNvcHlSZWYoKV0g
ewogICAgICAgICBpZiAoIXNvdXJjZS0+bV9jYW52YXMpCkBAIC03NiwxMCArNzYsNiBAQCBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpTb3VyY2UoSFRNTENhbnZhc0VsZW1l
bnQmIGNhbnZhcywgc3RkOjpvcAogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNr
OjpTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdE
YXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOwotCiAg
ICAgaWYgKCFtX2NhbnZhcykKICAgICAgICAgcmV0dXJuOwogICAgIG1fY2FudmFzLT5hZGRPYnNl
cnZlcigqdGhpcyk7CkBAIC05MywxMCArODksNiBAQCB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrOjpTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2lzUHJvZHVj
aW5nRGF0YSA9IGZhbHNlOwotCiAgICAgbV9yZXF1ZXN0RnJhbWVUaW1lci5zdG9wKCk7CiAKICAg
ICBpZiAoIW1fY2FudmFzKQpAQCAtMTEzLDcgKzEwNSw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNFbGVtZW50
JiBjCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjYW52YXMsIG1fY2FudmFzID09ICZjYW52YXMpOwog
Ci0gICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzdG9wKCk7CiAgICAgbV9jYW52YXMgPSBu
dWxscHRyOwogfQogCkBAIC0xNTAsNyArMTQyLDcgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjazo6U291cmNlOjpjYXB0dXJlQ2FudmFzKCkKIHsKICAgICBBU1NFUlQobV9jYW52
YXMpOwogCi0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICBpZiAoIWlzUHJvZHVjaW5n
RGF0YSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9mcmFtZVJlcXVlc3RSYXRlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYWQyNWFkZWE3MGE4ZGI2
ODcxZDZiYjBhMDhhZWZkNjRmNzUxMGQ2OC4uY2UwNzdjZDYxNWIwY2Y4NzQ1OWY0YzBjOTlmOWI2
OTA5M2UyYjE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaApAQCAtNjIs
NyArNjIsNiBAQCBwcml2YXRlOgogICAgICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNlIEFQSQog
ICAgICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgICAgICB2b2lkIHN0
b3BQcm9kdWNpbmdEYXRhKCkgIGZpbmFsOwotICAgICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9CiAgICAgICAgIGNvbnN0IFJlYWx0
aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM6OmVtcHR5Q2FwYWJpbGl0aWVz
KCk7IH0KICAgICAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2V0dGluZ3M7IH0KICAgICAgICAgYm9vbCBhcHBs
eVNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KQEAgLTcwLDcgKzY5
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjYXB0dXJlQ2FudmFzKCk7CiAgICAgICAgIHZv
aWQgcmVxdWVzdEZyYW1lVGltZXJGaXJlZCgpOwogCi0gICAgICAgIGJvb2wgbV9pc1Byb2R1Y2lu
Z0RhdGEgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1fc2hvdWxkRW1pdEZyYW1lIHsgdHJ1ZSB9
OwogICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9mcmFtZVJlcXVlc3RSYXRlOwogICAg
ICAgICBUaW1lciBtX3JlcXVlc3RGcmFtZVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCAyNmY1NGUwODBhZmNiOTk5
MDRmOGQyMmQ2ZGM5OTg3ODdjZDUyZjQ0Li4zMWFkN2NmYmU1ODhhMzYwNzA4Y2ViM2NjODEzZTBh
YThiZjE3ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIE1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBNZWRpYVN0cmVhbTo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAgICAgICAgIGlmICht
X3ByaXZhdGUtPmhhc0NhcHR1cmVBdWRpb1NvdXJjZSgpKSB7CiAgICAgICAgICAgICBpZiAobV9w
cml2YXRlLT5tdXRlZCgpKQogICAgICAgICAgICAgICAgIHN0YXRlIHw9IEhhc011dGVkQXVkaW9D
YXB0dXJlRGV2aWNlOwotICAgICAgICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisg
ICAgICAgICAgICBlbHNlIGlmIChtX2lzUHJvZHVjaW5nRGF0YSAmJiBtX3ByaXZhdGUtPmlzUHJv
ZHVjaW5nRGF0YSgpKQogICAgICAgICAgICAgICAgIHN0YXRlIHw9IEhhc0FjdGl2ZUF1ZGlvQ2Fw
dHVyZURldmljZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM1Niw3ICszNTYsNyBAQCBNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgTWVkaWFTdHJlYW06Om1lZGlhU3RhdGUoKSBjb25zdAog
ICAgICAgICBpZiAobV9wcml2YXRlLT5oYXNDYXB0dXJlVmlkZW9Tb3VyY2UoKSkgewogICAgICAg
ICAgICAgaWYgKG1fcHJpdmF0ZS0+bXV0ZWQoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBI
YXNNdXRlZFZpZGVvQ2FwdHVyZURldmljZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9k
dWNpbmdEYXRhKQorICAgICAgICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9w
cml2YXRlLT5pc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNB
Y3RpdmVWaWRlb0NhcHR1cmVEZXZpY2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUuaAppbmRleCA1ZTIwNDZhZDVhNGNlZWE4OGRmNWQzZGFiMjQ5ZmUzYTJkNjZjODIx
Li5hZWQzNzkxNThkMWI3ZjA1Y2NjOGFmY2JjOTI4NTc2MGEyM2U5YWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgKQEAgLTYyLDggKzYyLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmRlZDsgfQogCi0gICAgdm9pZCBzdGFydFByb2R1Y2lu
Z0RhdGEoKSB7IG1fc291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsgfQotICAgIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5zdG9wUHJvZHVjaW5nRGF0YSgpOyB9CisgICAg
dm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5zdGFydCgpOyB9CisgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0b3AoKTsgfQogICAgIGJvb2wgaXNQ
cm9kdWNpbmdEYXRhKCkgeyByZXR1cm4gbV9zb3VyY2UtPmlzUHJvZHVjaW5nRGF0YSgpOyB9CiAK
ICAgICBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZS0+aXNJc29sYXRl
ZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDRiNGU0NjQ3MmFmZmE5NDdlYTgyOGVh
NDVkNmQwYmIwM2UwNDY1MDMuLjI0ZWZmNzI4MDhkMmI5MGMxOGZjZGU5ZGJmMWUxMDI3ZTI1ZWRl
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC01OSwyMSArNTksMTUgQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5
cGUsIGNvbnN0IFN0cmkKICAgICBtX3N1cHByZXNzTm90aWZpY2F0aW9ucyA9IGZhbHNlOwogfQog
Ci12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0KCkKLXsKLSAgICBtX3N0b3BwZWQgPSBm
YWxzZTsKLSAgICBtX211dGVkID0gZmFsc2U7Ci19Ci0KIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YWRkT2JzZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIG9ic2VydmVyKQog
ewotICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIG1fb2JzZXJ2ZXJzLmFw
cGVuZChvYnNlcnZlcik7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2Jz
ZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXImIG9ic2VydmVyKQogewotICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZvYnNlcnZlcl0oYXV0byogYW5PYnNlcnZl
cikgewotICAgICAgICByZXR1cm4gYW5PYnNlcnZlciA9PSAmb2JzZXJ2ZXI7CisgICAgbV9vYnNl
cnZlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJm9ic2VydmVyXShhdXRvIGFuT2JzZXJ2ZXIpIHsK
KyAgICAgICAgcmV0dXJuICZhbk9ic2VydmVyLmdldCgpID09ICZvYnNlcnZlcjsKICAgICB9KTsK
IAogICAgIGlmICghbV9vYnNlcnZlcnMuc2l6ZSgpKQpAQCAtODIsMzkgKzc2LDQ0IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIoUmVhbHRpbWVNZWRpYVNvdXJjZTo6
T2JzZXJ2ZXImIG9ic2VydmVyCiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQo
Ym9vbCBtdXRlZCkKIHsKLSAgICBpZiAobV9zdG9wcGVkIHx8IG1fbXV0ZWQgPT0gbXV0ZWQpCisg
ICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbXV0ZWQg
PSBtdXRlZDsKIAotICAgIGlmIChtdXRlZCkgewotICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBmaWd1cmUgb3V0IGhvdyB0byBndWFyYW50ZWUgdGhhdCBhdCBsZWFzdCBvbmUgYmxhY2sgdmlk
ZW8gZnJhbWUgaXMKLSAgICAgICAgLy8gZW1pdHRlZCBhZnRlciBiZWluZyBtdXRlZC4KLSAgICAg
ICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RhcnRQcm9kdWNp
bmdEYXRhKCk7CisgICAgaWYgKG11dGVkKQorICAgICAgICBzdG9wKCk7CisgICAgZWxzZQorICAg
ICAgICBzdGFydCgpOworCisgICAgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKK30KKwordm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpub3RpZnlNdXRlZENoYW5nZShib29sIG11dGVkKQoreworICAg
IGlmIChtX211dGVkID09IG11dGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX211dGVkID0g
bXV0ZWQ7CiAKICAgICBub3RpZnlNdXRlZE9ic2VydmVycygpOwogfQogCiB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Om5vdGlmeU11dGVkT2JzZXJ2ZXJzKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1
dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VNdXRl
ZENoYW5nZWQoKTsKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQor
ICAgICAgICBvYnNlcnZlci5zb3VyY2VNdXRlZENoYW5nZWQoKTsKIH0KIAogdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAobV9zdG9w
cGVkIHx8IG1fZW5hYmxlZCA9PSBlbmFibGVkKQorICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKIAotICAgIGlm
IChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7
CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2Jz
ZXJ2ZXIuc291cmNlRW5hYmxlZENoYW5nZWQoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCkBAIC0xMjgsNDkgKzEyNyw1NyBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKCkKIAogICAgIHNjaGVkdWxlRGVmZXJy
ZWRUYXNrKFt0aGlzXSB7CiAgICAgICAgIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKLSAgICAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VTZXR0aW5nc0NoYW5nZWQoKTsKKyAgICAg
ICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgICAgIG9i
c2VydmVyLnNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpOwogICAgIH0pOwogfQogCiB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJiBtZWRpYVNh
bXBsZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGZvciAoY29uc3QgYXV0
byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxl
QXZhaWxhYmxlKG1lZGlhU2FtcGxlKTsKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci52aWRlb1NhbXBsZUF2YWlsYWJsZShtZWRpYVNh
bXBsZSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGF1ZGlv
RGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBu
dW1iZXJPZkZyYW1lcykKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVk
aW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgIGZvciAoT2JzZXJ2ZXIm
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiB9
CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcChPYnNlcnZlciogY2FsbGluZ09ic2Vy
dmVyKQordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydCgpCiB7Ci0gICAgaWYgKHN0b3Bw
ZWQoKSkKKyAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOworICAgIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpOworfQogCi0gICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6
IG1fb2JzZXJ2ZXJzKSB7Ci0gICAgICAgIGlmIChvYnNlcnZlciAhPSBjYWxsaW5nT2JzZXJ2ZXIp
Ci0gICAgICAgICAgICBvYnNlcnZlci0+c291cmNlU3RvcHBlZCgpOwotICAgIH0KK3ZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3RvcCgpCit7CisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkK
KyAgICAgICAgcmV0dXJuOwogCisgICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBz
dG9wUHJvZHVjaW5nRGF0YSgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVl
c3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIpCiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkK
KyAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKLSAgICAgICAgaWYgKG9ic2Vy
dmVyLT5wcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkpCisgICAgZm9yIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAob2JzZXJ2ZXIucHJldmVudFNvdXJj
ZUZyb21TdG9wcGluZygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzdG9wKGNh
bGxpbmdPYnNlcnZlcik7CisKKyAgICBzdG9wKCk7CisKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNl
cnZlciA6IG1fb2JzZXJ2ZXJzKSB7CisgICAgICAgIGlmICgmb2JzZXJ2ZXIgIT0gY2FsbGluZ09i
c2VydmVyKQorICAgICAgICAgICAgb2JzZXJ2ZXIuc291cmNlU3RvcHBlZCgpOworICAgIH0KIH0K
IAogYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0c1NpemVBbmRGcmFtZVJhdGUoc3Rk
OjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCAxNWE4ZDhhOTFhNjg4OTM0NWFhNjc3ZWFmYjU1NjM1
NTU3Yjg4ZWJjLi4yNjVhNGIxYTFiNmMyYWIyYzdjNjQ2YzE3YjdhZGZkZDA3MjEwOTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCkBAIC0xMDgsNjAgKzEwOCwzMCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAogICAgIGNvbnN0IFN0cmluZyYg
cGVyc2lzdGVudElEKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50SUQ7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UGVyc2lzdGVudElEKGNvbnN0IFN0cmluZyYgcGVyc2lzdGVudElEKSB7IG1f
cGVyc2lzdGVudElEID0gcGVyc2lzdGVudElEOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFBlcnNp
c3RlbnRJRChTdHJpbmcmJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJzaXN0ZW50SUQgPSBXVEZNb3Zl
KHBlcnNpc3RlbnRJRCk7IH0KIAogICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIEF1ZGlvLCBW
aWRlbyB9OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFt
ZTsgfQotICAgIAotICAgIHZpcnR1YWwgdW5zaWduZWQgZml0bmVzc1Njb3JlKCkgY29uc3QgeyBy
ZXR1cm4gbV9maXRuZXNzU2NvcmU7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0ID0g
MDsKLQotICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKCk+Owot
ICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+OwotICAgIHZpcnR1
YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmLCBTdWNjZXNz
SGFuZGxlciYmLCBGYWlsdXJlSGFuZGxlciYmKTsKLSAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50
cyYpOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYsIFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFp
bnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
dGluZ3NEaWRDaGFuZ2UoKTsKKyAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3Rv
cCgpOworICAgIHZvaWQgcmVxdWVzdFN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51
bGxwdHIpOwogCi0gICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIAotICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUm
KTsKLSAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXpl
X3QpOworICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9CisgICAgdm9p
ZCBzZXRNdXRlZChib29sKTsKICAgICAKLSAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVy
biBtX3N0b3BwZWQ7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbXV0ZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CisgICAgYm9vbCBl
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wpOwogCi0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLQotICAgIHZpcnR1
YWwgYm9vbCBpc0NhcHR1cmVTb3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
dmlydHVhbCB2b2lkIG1vbml0b3JPcmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgeyB9
CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAg
dm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAg
CisgICAgdW5zaWduZWQgZml0bmVzc1Njb3JlKCkgY29uc3QgeyByZXR1cm4gbV9maXRuZXNzU2Nv
cmU7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHN0b3BQcm9kdWNpbmdEYXRhKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzUHJvZHVjaW5nRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIHN0b3AoT2JzZXJ2ZXIqIGNh
bGxpbmdPYnNlcnZlciA9IG51bGxwdHIpOwotICAgIHZvaWQgcmVxdWVzdFN0b3AoT2JzZXJ2ZXIq
IGNhbGxpbmdPYnNlcnZlciA9IG51bGxwdHIpOwotCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7
Ci0KLSAgICB2aXJ0dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIo
KSB7IHJldHVybiBudWxscHRyOyB9Ci0KICAgICB2b2lkIHNldFdpZHRoKGludCk7CiAgICAgdm9p
ZCBzZXRIZWlnaHQoaW50KTsKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CkBAIC0xOTUsNiArMTY1LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVj
aG9DYW5jZWxsYXRpb24oYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGFwcGx5RWNob0NhbmNlbGxh
dGlvbihib29sKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29u
c3QgPSAwOworCisgICAgdXNpbmcgU3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT47CisgICAgdXNpbmcgRmFpbHVyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiBiYWRDb25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47CisgICAg
dmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1
Y2Nlc3NIYW5kbGVyJiYsIEZhaWx1cmVIYW5kbGVyJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJik7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBN
ZWRpYUNvbnN0cmFpbnRzJiwgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29u
c3RyYWludChjb25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXR0aW5nc0RpZENoYW5nZSgpOworCisgICAgdmlydHVhbCBib29sIGlzSXNvbGF0ZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyZVNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9uaXRvck9y
aWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKSB7IH0KKworICAgIHZpcnR1YWwgQXVkaW9T
b3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0K
KwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwg
VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIApAQCAtMjExLDI2ICsyMDIsMzEgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IEZsYXR0ZW5lZENv
bnN0cmFpbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTaXplQW5kRnJhbWVSYXRlKHN0ZDo6
b3B0aW9uYWw8aW50PiB3aWR0aCwgc3RkOjpvcHRpb25hbDxpbnQ+IGhlaWdodCwgc3RkOjpvcHRp
b25hbDxkb3VibGU+KTsKIAotICAgIGNvbnN0IFZlY3RvcjxPYnNlcnZlcio+IG9ic2VydmVycygp
IGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2ZXJzOyB9Ci0KICAgICB2b2lkIG5vdGlmeU11dGVkT2Jz
ZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBub3RpZnlNdXRlZENoYW5nZShib29sIG11dGVkKTsK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZVZvbHVtZShkb3VibGUgdm9sdW1lKSB7IG1fdm9sdW1lID0g
dm9sdW1lOyB9CiAgICAgdm9pZCBpbml0aWFsaXplU2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkg
eyBtX3NhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplRWNob0Nh
bmNlbGxhdGlvbihib29sIGVjaG9DYW5jZWxsYXRpb24pIHsgbV9lY2hvQ2FuY2VsbGF0aW9uID0g
ZWNob0NhbmNlbGxhdGlvbjsgfQogCi0gICAgYm9vbCBtX211dGVkIHsgZmFsc2UgfTsKLSAgICBi
b29sIG1fZW5hYmxlZCB7IHRydWUgfTsKLQorICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUo
TWVkaWFTYW1wbGUmKTsKKyAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRp
YVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBzaXplX3QpOworICAgIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IGNyZWF0ZVdlYWtQdHIoKSB7IHJldHVybiBtX3dlYWtQdHJGYWN0b3J5LmNyZWF0
ZVdlYWtQdHIoKTsgfQogCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgfQorCisgICAgYm9vbCBt
X211dGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZW5hYmxlZCB7IHRydWUgfTsKKwogICAgIFdl
YWtQdHJGYWN0b3J5PFJlYWx0aW1lTWVkaWFTb3VyY2U+IG1fd2Vha1B0ckZhY3Rvcnk7CiAgICAg
U3RyaW5nIG1faWQ7CiAgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBl
OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7
CisgICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8T2JzZXJ2ZXI+PiBtX29ic2VydmVy
czsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBkb3VibGUgbV9mcmFtZVJhdGUgeyAzMCB9Owog
ICAgIGRvdWJsZSBtX2FzcGVjdFJhdGlvIHsgMCB9OwpAQCAtMjQxLDkgKzIzNyw5IEBAIHByaXZh
dGU6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGUgbV9m
YWNpbmdNb2RlIHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpVc2VyfTsKIAogICAgIGJv
b2wgbV9lY2hvQ2FuY2VsbGF0aW9uIHsgZmFsc2UgfTsKLSAgICBib29sIG1fc3RvcHBlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5vdGlmaWNhdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3N1cHByZXNzTm90aWZpY2F0aW9ucyB7IHRydWUgfTsKKyAg
ICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07CiAKIHN0cnVjdCBDYXB0dXJl
U291cmNlT3JFcnJvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCmluZGV4IGY4NDkwMTBm
NzM5MzVlNmNjMDRiNWY1MWZhMGEyN2NjZGQ1OTdhYWYuLjcxNTAxYzBkN2JkZmY4YjA0YTMzNjM2
M2IzNTFiOTI0MmViZGU5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oCkBAIC02OCw3
ICs2OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7
CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJvb2wgaXNQcm9kdWNp
bmdEYXRhKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBBVk1lZGlhQ2FwdHVyZVNv
dXJjZShBVkNhcHR1cmVEZXZpY2UqLCBjb25zdCBBdG9taWNTdHJpbmcmLCBSZWFsdGltZU1lZGlh
U291cmNlOjpUeXBlKTsKQEAgLTkxLDcgKzkwLDYgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgc2V0dXBTZXNzaW9uKCk7Ci0gICAgdm9pZCByZXNldCgpIGZpbmFsOwogCiAgICAg
dm9pZCBiZWdpbkNvbmZpZ3VyYXRpb24oKSBmaW5hbDsKICAgICB2b2lkIGNvbW1pdENvbmZpZ3Vy
YXRpb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQppbmRleCAxMjJiZGI4
ZjQ5NDAxOGMyYzA0NWFiZjg0NzVkOTFhNmFlNWJkNzJhLi41NjViZDk4NzVlNTJjMzQ4NTE2NWU2
NDBlNDI3NDFmNTMyZDlmYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCkBAIC0x
NDgsOCArMTQ4LDcgQEAgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJlU291cmNl
KEFWQ2FwdHVyZURldmljZVR5cGVkZWYqIGRldmljZSwgY29uc3QKICAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PGludD4oSW50ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlKSA9PSBBVkNh
cHR1cmVTZXNzaW9uSW50ZXJydXB0aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNs
aWVudCwgIkludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSBpcyBub3QgQVZDYXB0dXJlU2Vz
c2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3RoZXJDbGllbnQgYXMg
ZXhwZWN0ZWQiKTsKICNlbmRpZgogICAgIAotICAgIHNldFBlcnNpc3RlbnRJRChkZXZpY2UudW5p
cXVlSUQpOwotICAgIHNldE11dGVkKHRydWUpOworICAgIHNldFBlcnNpc3RlbnRJRChTdHJpbmco
ZGV2aWNlLnVuaXF1ZUlEKSk7CiB9CiAKIEFWTWVkaWFDYXB0dXJlU291cmNlOjp+QVZNZWRpYUNh
cHR1cmVTb3VyY2UoKQpAQCAtMjYyLDE3ICsyNjEsNiBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291
cmNlOjpzZXR1cFNlc3Npb24oKQogICAgIFttX3Nlc3Npb24gY29tbWl0Q29uZmlndXJhdGlvbl07
CiB9CiAKLXZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OnJlc2V0KCkKLXsKLSAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpyZXNldCgpOwotICAgIG1faXNSdW5uaW5nID0gZmFsc2U7Ci0gICAgZm9y
IChOU1N0cmluZyAqa2V5TmFtZSBpbiBzZXNzaW9uS1ZPUHJvcGVydGllcygpKQotICAgICAgICBb
bV9zZXNzaW9uIHJlbW92ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6
a2V5TmFtZV07Ci0KLSAgICBzaHV0ZG93bkNhcHR1cmVTZXNzaW9uKCk7Ci0gICAgbV9zZXNzaW9u
ID0gbnVsbHB0cjsKLX0KLQogdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Np
b25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKIHsKICAgICBzY2hlZHVsZURlZmVycmVk
VGFzayhbdGhpcywgc3RhdGVdIHsKQEAgLTI4MCwxOSArMjY4LDEwIEBAIHZvaWQgQVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9pc1J1bm5pbmcgPSBzdGF0ZTsKLSAg
ICAgICAgaWYgKG1fbXV0ZWQgPT0gIW1faXNSdW5uaW5nKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1fbXV0ZWQgPSAhbV9pc1J1bm5pbmc7Ci0gICAgICAgIG5vdGlmeU11dGVkT2Jz
ZXJ2ZXJzKCk7CisgICAgICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX2lzUnVubmluZyk7CiAgICAg
fSk7CiB9CiAKLWJvb2wgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1faXNSdW5uaW5nOwotfQotCiAjaWYgUExBVEZPUk0oSU9TKQog
dm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25SdW50aW1lRXJyb3IoUmV0
YWluUHRyPE5TRXJyb3I+IGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
Y3BwCmluZGV4IDIyMmQzNjM2ZWE5MTVhOGEyOWIwZmM1MjkxZmY5NTU1NWE1YTU0NzUuLmVkZGFl
ZjgxMjUzZjQ2ZWJmNjU0MzI3NzJiOWNmY2UxZTcxNTEyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5jcHAKQEAgLTY1Niw4ICs2NTYsNiBAQCBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQsIGNvbnN0
IFN0cgogICAgIDogUmVhbHRpbWVNZWRpYVNvdXJjZShkZXZpY2VJRCwgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6QXVkaW8sIGxhYmVsKQogICAgICwgbV9jYXB0dXJlRGV2aWNlSUQocGVyc2lz
dGVudElEKQogewotICAgIG1fbXV0ZWQgPSB0cnVlOwotCiAgICAgYXV0byYgdW5pdCA9IENvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpOwogCiAgICAgaW5pdGlhbGl6ZUVjaG9DYW5jZWxs
YXRpb24odW5pdC5lbmFibGVFY2hvQ2FuY2VsbGF0aW9uKCkpOwpAQCAtNjg0LDIwICs2ODIsMTEg
QEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpyZW1vdmVFY2hvQ2FuY2VsbGF0aW9uU291
cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAg
ICAgICAgcmV0dXJuOwotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGNvcmVBdWRpb0NhcHR1cmVT
b3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogCiAgICAgQ29y
ZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAg
bV9pc1Byb2R1Y2luZ0RhdGEgPSBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5pc1By
b2R1Y2luZ0RhdGEoKTsKLQotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fbXV0ZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX2F1ZGlvU291cmNlUHJv
dmlkZXIpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJlcGFyZSgmQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2luZ2xldG9uKCkubWljcm9waG9uZUZvcm1hdCgpLnN0cmVhbURlc2NyaXB0
aW9uKCkpOwpAQCAtNzA1LDEyICs2OTQsNyBAQCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3Rv
cFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAg
IHJldHVybjsKLSAgICAKICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgbV9t
dXRlZCA9IHRydWU7CiAKICAgICBpZiAobV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBt
X2F1ZGlvU291cmNlUHJvdmlkZXItPnVucHJlcGFyZSgpOwpAQCAtNzYwLDcgKzc0NCw3IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CiAgICAgICAgIG1f
YXVkaW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVh
dGUoKnRoaXMpOwotICAgICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJl
cGFyZSgmQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkubWljcm9waG9uZUZvcm1hdCgp
LnN0cmVhbURlc2NyaXB0aW9uKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmgKaW5kZXggODFkZmQ3NmMxYWFlY2EyM2VkZjJkODk5ZjU5YzJjZDc3YTdhNTU2My4uMjYz
YWRiZDdjMDdhZjBiYjc2Y2ViNWFmOTUwNjdjNjFmMTNmYWZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC04MCw3ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsgfQogCiAgICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwpAQCAt
OTMsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgdWludDMyX3QgbV9jYXB0dXJlRGV2aWNlSUQg
eyAwIH07CiAKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGIwZjI4M2IxZGM3NDJkZDA5YWY2
NTFkNzcyNWZjYWE2NzFjOGFjOTUuLmVjMmY0MDgxNDVkYzllNGVlMzVhNjE2MDgwMTdjY2NlNjVh
ZjdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEw
NywxMyArMTA3LDYgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6On5Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYygpCiAgICAgfQogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNv
dXJjZTsKLX0KLQogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1
ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKIHsKICAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlw
dGlvbik7CkBAIC0xNTgsNyArMTUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yzo6cmVuZGVyKGRvdWJsZSBkZWx0YSkKICAgICAgICAgdWludDMyX3QgYmlwQm9wQ291bnQgPSBz
dGQ6Om1pbihmcmFtZUNvdW50LCBiaXBCb3BSZW1haW4pOwogICAgICAgICBmb3IgKGF1dG8mIGF1
ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkgewogICAgICAgICAgICAg
YXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBtX3N0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZTsKLSAgICAgICAgICAgIGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsK
KyAgICAgICAgICAgIGlmICghbXV0ZWQoKSAmJiBlbmFibGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBtZW1jcHkoYXVkaW9CdWZmZXIubURhdGEsICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BTdGFydF0s
IHNpemVvZihGbG9hdDMyKSAqIGJpcEJvcENvdW50KTsKICAgICAgICAgICAgICAgICBhZGRIdW0o
SHVtVm9sdW1lLCBIdW1GcmVxdWVuY3ksIHNhbXBsZVJhdGUoKSwgbV9zYW1wbGVzUmVuZGVyZWQs
IHN0YXRpY19jYXN0PGZsb2F0Kj4oYXVkaW9CdWZmZXIubURhdGEpLCBiaXBCb3BDb3VudCk7CiAg
ICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQppbmRleCBhZDQ1NjU2MTU4YTg3NzBmMjgwNjYyMjM4YWYzNGU3YzgyYmQ2NTlmLi4wMGIzYTdl
MDkyMTFlNmZmYjI5ZDA2N2M4YTYzODUzZmZjZTBjZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC02NSwxMyArNjUsNiBAQCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJiBuYW1l
KQogewogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNvdXJjZTsKLX0KLQogUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6Q01TYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcAppbmRleCBhNGY5YjM4YWUyYTI4YjdkNzA3OWVjNzNhZGM4NGFmZDg1ZDM0ODJh
Li5hYzgyYzY2N2ZkNTA0YTU3Yjc3OGQ4YzE5N2Q5ZTUzNGJkMThiMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
IHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAg
IHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFydCgpOwogICAg
IHJldHVybiBzb3VyY2U7CiB9CiAKQEAgLTU1LDYgKzU1LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCiAgICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKIHsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKIH0KIAogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKQEAgLTYzLDcgKzY0LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKICAgICAgICAgbV9hdWRp
b1NvdXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gbnVsbHB0cjsKICAgICB9Ci0gICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzdG9w
KCk7CiB9CiAKIApAQCAtMTEyLDIwICsxMTMsMTIgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGwK
IAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2lu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwogfQpAQCAtMTM2LDcgKzEyOSw4IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpCiAg
ICAgQVNTRVJUKHRyYWNrKTsKIAogICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwot
ICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRp
b1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIG1fYXVkaW9UcmFj
ay0+QWRkU2luayh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IDg1MmNlOTdmMjI5M2VjOTMwMWI3NDE4MGVlN2FjNTkxYjIzNWNkM2QuLjYy
NWUzZDk4OGI3MjQwYjc0NThjNDhiYzlhZmJjY2QyMGFhMzA1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTY3LDE0ICs2NywxMSBAQCBwcml2YXRlOgog
ICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWlu
dHMuZ2V0KCk7IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9Ci0KICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgYm9vbCBtX2lzUHJvZHVj
aW5nRGF0YSB7IGZhbHNlIH07CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY1MDk2ZmIwZjBhMDYxZDQ1OWMxMWFk
MmYxMTA2ZGYxMzUzYmExNWEuLjE0ZjhlMTg4YWIwMDA3ZGM3NTA0MTIzYzY4MWJiYzQ0YWZlOTYz
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkCiAgICAgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDViBjb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSk7CiAKICAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKFdURk1vdmUo
dmlkZW9UcmFjayksIFdURk1vdmUodHJhY2tJZCksIGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpKTsK
LSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsK
ICAgICByZXR1cm4gc291cmNlOwogfQogCkBAIC02NywxNyArNjcsMTMgQEAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnIKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQogICAg
ICwgbV9jb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucykKIHsKLSAgICBtX211dGVkID0gIW1fdmlk
ZW9UcmFjazsKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCg2NDApOwogICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldEhlaWdodCg0ODApOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3Zp
ZGVvVHJhY2spOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBpZiAobV92aWRlb1Ry
YWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZp
ZGVvU2lua1dhbnRzKCkpOwogfQpAQCAtODcsMTggKzgzLDE0IEBAIHZvaWQgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlCiAgICAgQVNTRVJUKCFtX3ZpZGVvVHJhY2spOwogICAgIEFTU0VSVCh0cmFjayk7CiAK
LSAgICBtX211dGVkID0gZmFsc2U7Ci0gICAgbV92aWRlb1RyYWNrID0gdHJhY2s7Ci0gICAgaWYg
KG1faXNQcm9kdWNpbmdEYXRhKQorICAgIG1fdmlkZW9UcmFjayA9IFdURk1vdmUodHJhY2spOwor
ICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3ZpZGVvVHJhY2spOworICAgIGlmIChpc1Byb2R1Y2lu
Z0RhdGEoKSkKICAgICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRj
OjpWaWRlb1NpbmtXYW50cygpKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX3ZpZGVvVHJhY2spCiAgICAgICAgIG1fdmlkZW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzMyw3ICsxMjUsNyBAQCBDVlBpeGVsQnVmZmVyUmVmIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZQogCiB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1By
b2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDQyZjkyNmY0MWNhYzBjMThkODRmY2Y0ZjJkNmI5NDA1
ZmU5ZTBiMDAuLmQ0YTNmNDNmODAyYmM5MDQ0ODc3Yjc5YTlhNzIyNjg5MGEzYjIxYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTY2LDcgKzY2LDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CiAKLSAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdE
YXRhICYmIG1fYnVmZmVyOyB9CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCkBA
IC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9
OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1f
dmlkZW9UcmFjazsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgbV9jb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggOTRlYzI1ZTViODliYTRiNDU4OWI4
ZTliNWI3NzgxYmQ1OGIyOTY3ZS4uZDNhYTk2ODgzODhiMjMwMWE3NDAxNjcwMTBkZmZhZjVjYWZm
MWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNl
dENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgaWYgKG1fY2xp
ZW50ICYmICFtX2Nvbm5lY3RlZCkgewogICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CiAgICAg
ICAgIG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgICAgICBtX2NhcHR1cmVTb3VyY2Ut
PnN0YXJ0KCk7CiAgICAgfSBlbHNlIGlmICghbV9jbGllbnQgJiYgbV9jb25uZWN0ZWQpIHsKICAg
ICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1f
Y29ubmVjdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGM0N2U3NWI3NGI0NTQxMzYxOGM0MjU4M2VjODc4
ZThiMDk2Y2M4NWEuLjM3NWNlN2RmZGJjZjYxYmUwODIzOTU0MjgwNjNmNjA3ZDg0MzEwOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQu
Y3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tNZWRp
YUVuZHBvaW50OjpjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcKICAgICB9CiAK
ICAgICBtX211dGVkUmVtb3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwotICAgIHJldHVybiAq
c291cmNlOworICAgIHJldHVybiBzb3VyY2UucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBN
b2NrTWVkaWFFbmRwb2ludDo6cmVwbGFjZVNlbmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYg
bmV3U291cmNlLCBjb25zdCBTdHJpbmcmIG1pZCkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIE1v
Y2tNZWRpYUVuZHBvaW50Ojp1bm11dGVSZW1vdGVTb3VyY2VzQnlNaWQoKQogCiB2b2lkIE1vY2tN
ZWRpYUVuZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4gc291cmNlID0gbV9tdXRlZFJlbW90ZVNvdXJjZXMuZ2V0KG1fbWlkc09mU291
cmNlc1RvVW5tdXRlLnRha2VMYXN0KCkpOworICAgIGF1dG8qIHNvdXJjZSA9IG1fbXV0ZWRSZW1v
dGVTb3VyY2VzLmdldChtX21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgpKTsKICAgICBp
ZiAoc291cmNlKQogICAgICAgICBzb3VyY2UtPnNldE11dGVkKGZhbHNlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNl
LmNwcAppbmRleCBlMDE0ODUyM2VkYmZlNDcxZDQzNjY0N2Q2NzkyZTJhOTVhYTU5NTg1Li4zMmQ0
MzFlYThkYTgyM2Q5YTM2MWQwMzk3YzgyNDg0YzlmMzViMmE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApA
QCAtNjEsMTQgKzYxLDE0IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4g
Q2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQ
dHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVh
dGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKKyAgICBzb3Vy
Y2UtPm5vdGlmeU11dGVkQ2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5k
aWYKIAogUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9DYXB0dXJlRmFjdG9yeSYgTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OmZhY3RvcnkoKQogewpAQCAtMTA4LDE1ICsxMDgsMTIgQEAgdm9pZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKICAgICBpZiAoIXNh
bXBsZVJhdGUoKSkKICAgICAgICAgc2V0U2FtcGxlUmF0ZSghZGV2aWNlSW5kZXgoKSA/IDQ0MTAw
IDogNDgwMDApOwogCi0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpOwotCiAgICAgbV9zdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRlckludGVydmFsKCkpOwogfQogCiB2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAgbV90aW1l
ci5zdG9wKCk7CiAgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKSAtIG1fc3RhcnRUaW1lOwogICAgIG1fc3RhcnRUaW1lID0gTkFOOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCmlu
ZGV4IDM2NDUyMmIxM2Y3MDRlOTA4OWJhZjg2NWY5YjZiOTg2ZGIyMzEzMDUuLjU2ZTYyZWU2MGNl
ODFlNTI3ZGRmMzVmZWQwYjQ0NzJhNWMxMGVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2UgewogcHVibGljOgogCiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9y
IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBjcmVh
dGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgc3RhdGljIEF1ZGlvQ2FwdHVyZUZh
Y3RvcnkmIGZhY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCA3NjcyM2FlYWM2YmE4NGM3
NzA1NDVjMTczYmFkZTM4MDA0MTlkMTJlLi40NDBiYjk4ZDZkMjg2MDdkNGI2ZjkwMmQ5M2ZhYmQw
ZDM3NGM5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtODAsMTEgKzgwLDExIEBAIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlk
LCBSZWFsdGltZU1lZGlhCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbzoKICAgICAgICAgbV9kZXZpY2VJbmRleCA9IG5hbWUgPT0g
YXVkaW9EZXZpY2VzKClbMF0ubGFiZWwoKSA/IDAgOiAxOwotICAgICAgICBzZXRQZXJzaXN0ZW50
SUQoYXVkaW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVyc2lzdGVudElkKCkpOworICAgICAg
ICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5nKGF1ZGlvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBl
cnNpc3RlbnRJZCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OlR5cGU6OlZpZGVvOgogICAgICAgICBtX2RldmljZUluZGV4ID0gbmFtZSA9PSB2aWRl
b0RldmljZXMoKVswXS5sYWJlbCgpID8gMCA6IDE7Ci0gICAgICAgIHNldFBlcnNpc3RlbnRJRCh2
aWRlb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQoKSk7CisgICAgICAgIHNl
dFBlcnNpc3RlbnRJRChTdHJpbmcodmlkZW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVyc2lz
dGVudElkKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzIsMTgg
KzEzMiw2IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRlZENvbnN0CiAgICAgcmV0dXJuIG1fc3VwcG9ydGVk
Q29uc3RyYWludHM7CiB9CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJv
ZHVjaW5nRGF0YSgpCi17Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOwotICAgIHNldE11
dGVkKGZhbHNlKTsKLX0KLQotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1
Y2luZ0RhdGEoKQotewotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgc2V0TXV0
ZWQodHJ1ZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggOWE1YWQxZDIwNDgyMDRlMDA1MmJiNWQ2
NTdlMjYyODU2YzFiY2FhZC4uNTA2ZTQ4MmEyY2ZhYzZmYzM4NWEwZWUwNTFlZTUyMDdkYzc5NGE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UuaApAQCAtNjUsOSArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNl
U3VwcG9ydGVkQ29uc3RyYWludHMmKSA9IDA7CiAjZW5kaWYKIAotICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJy
aWRlOwotCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJp
bGl0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJiBzZXR0aW5ncygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC04NCwxNCArODEsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVTZXR0aW5ncygpOwogI2VuZGlmCiAKLSAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNp
bmdEYXRhOyB9Ci0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0
dGluZ3M7CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3Vw
cG9ydGVkQ29uc3RyYWludHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBtX2NvbnN0cmFpbnRzOwogICAgIHVuc2lnbmVkIG1fZGV2aWNlSW5kZXggeyAwIH07Ci0g
ICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGJkMjg3NDYwNjUwOTE5MjRmNTJmYWM1ZTYw
NzE1NTNiMDE3Y2U2NzkuLjUzYTYxOWZiNjFkYzlhOWFlMWNlYzVjOTI2YWEwYWJhNzQzMWNlMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC02OCwxNCArNjgsMTQgQEAgQ2FwdHVyZVNvdXJjZU9yRXJy
b3IgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IE0KIAogICAgIHJldHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkp
OwogfQorI2VuZGlmCiAKLVJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK1JlZjxNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZShuYW1lKSk7Ci0gICAgc291cmNlLT5tX211dGVkID0gdHJ1
ZTsKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UobmFtZSkpOworICAgIHNvdXJjZS0+bm90aWZ5TXV0ZWRDaGFuZ2UodHJ1ZSk7CiAgICAgcmV0
dXJuIHNvdXJjZTsKIH0KLSNlbmRpZgogCiBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlb0NhcHR1
cmVGYWN0b3J5JiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6ZmFjdG9yeSgpCiB7CkBAIC05Niw3
ICs5Niw2IEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0
UHJvZHVjaW5nRGF0YSgpOwogICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNl
dFdpZHRoKDY0MCk7CiAgICAgICAgIHNldEhlaWdodCg0ODApOwpAQCAtMTA4LDcgKzEwNyw2IEBA
IHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZv
aWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKTsKICAgICBtX3RpbWVy
LnN0b3AoKTsKICAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpIC0gbV9zdGFydFRpbWU7CiAgICAgbV9zdGFydFRpbWUgPSBOQU47CkBAIC0zNTQsNyArMzUy
LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSgpCiAgICAg
RmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNpemUpOwogICAgIGNvbnRleHQuZmls
bFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSksICFkZXZpY2VJbmRleCgpID8gQ29s
b3I6OmJsYWNrIDogQ29sb3I6OmRhcmtHcmF5KTsKIAotICAgIGlmICghbV9tdXRlZCAmJiBtX2Vu
YWJsZWQpIHsKKyAgICBpZiAoIW11dGVkKCkgJiYgZW5hYmxlZCgpKSB7CiAgICAgICAgIGRyYXdU
ZXh0KGNvbnRleHQpOwogICAgICAgICBkcmF3QW5pbWF0aW9uKGNvbnRleHQpOwogICAgICAgICBk
cmF3Qm94ZXMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXggYWE2MGVjN2U1ZjM4MzFjZjBjMjdm
ZDhmMTA3MTEzYjAwMmQyOTYwOS4uYzFjYmIwYjViZGMyYzJmNTczMmRhZGFmZDU0YWI1NTE2MTI2
ODU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBNb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyBS
ZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKICAgICBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlh
Q2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggNmNkYmExZjc1OTNiMGU0ZTJhNTc5MTU4MzAw
NTVmNzcwMWQ5M2E2OS4uZWU4MTJkOWVmNTI3NzMzYjQ4MzAyNzc4YTIyOTYxZWM5MzhkNTJiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9V
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcApAQCAtMTU0LDE0ICsxNTQsMTQgQEAgdm9p
ZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzdGFydFByb2R1Y2luZ0RhdGEodWludDY0
X3QgaWQpCiB7CiAgICAgYXV0byBpdGVyID0gbV9wcm94aWVzLmZpbmQoaWQpOwogICAgIGlmIChp
dGVyICE9IG1fcHJveGllcy5lbmQoKSkKLSAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnN0
YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgICAgICBpdGVyLT52YWx1ZS0+c291cmNlKCkuc3RhcnQo
KTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpzdG9wUHJvZHVjaW5n
RGF0YSh1aW50NjRfdCBpZCkKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7
CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICBpdGVyLT52YWx1ZS0+
c291cmNlKCkuc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJj
ZSgpLnN0b3AoKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5OjpjYXBh
YmlsaXRpZXModWludDY0X3QgaWQsIFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmls
aXRpZXMmIGNhcGFiaWxpdGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXggYTkzNzM3ZTkw
ZjlmNWMyYzhjYzVkOWRhZDk3Y2I0MmVmYzVmMDA1Yi4uYjNlZTNjZDEyOGE5NzMzZjQ4NjgyYjRk
NmJmNDdlOGVhOGViMzZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTExMCw4ICsxMTAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFdlYkF1ZGlvQnVmZmVyTGlzdCBhdWRpb0RhdGEobV9kZXNj
cmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwogICAgICAgICBtX3JpbmdCdWZmZXIuZmV0Y2goYXVk
aW9EYXRhLmxpc3QoKSwgbnVtYmVyT2ZGcmFtZXMsIHRpbWUudGltZVZhbHVlKCkpOwogCi0gICAg
ICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMoKSkKLSAgICAgICAgICAgIG9ic2Vy
dmVyLT5hdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9u
LCBudW1iZXJPZkZyYW1lcyk7CisgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJh
bWVzKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHNTdWNjZWVkZWQoY29uc3Qg
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncykKQEAgLTEyNywy
NCArMTI2LDYgQEAgcHVibGljOgogICAgICAgICBjYWxsYmFja3MuZmFpbHVyZUhhbmRsZXIoZmFp
bGVkQ29uc3RyYWludCwgZXJyb3JNZXNzYWdlKTsKICAgICB9CiAKLSAgICB2b2lkIHNldE11dGVk
KGJvb2wgbXV0ZWQpIGZpbmFsCi0gICAgewotICAgICAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX211dGVkID0gbXV0ZWQ7Ci0gICAgICAg
IG1fbWFuYWdlci5zZXRNdXRlZChtX2lkLCBtX211dGVkKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dEVuYWJsZWQoYm9vbCBlbmFibGVkKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1fZW5hYmxl
ZCA9PSBlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZW5hYmxlZCA9
IGVuYWJsZWQ7Ci0gICAgICAgIG1fbWFuYWdlci5zZXRFbmFibGVkKG1faWQsIG1fZW5hYmxlZCk7
Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWwg
eyBtX21hbmFnZXIuc3RhcnRQcm9kdWNpbmdEYXRhKG1faWQpOyB9CiAgICAgdm9pZCBzdG9wUHJv
ZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0b3BQcm9kdWNpbmdEYXRhKG1faWQpOyB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309915</attachid>
            <date>2017-05-12 10:51:21 -0700</date>
            <delta_ts>2017-05-12 12:17:32 -0700</delta_ts>
            <desc>Trying to fix GTK</desc>
            <filename>bug-171999-20170512105120.patch</filename>
            <type>text/plain</type>
            <size>52224</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UyNThmZjczNDk1MWEw
MjQ1NzY2NmFiMjdkYWFjM2UzNDIzYThlNi4uN2FhNzhmY2VlN2JlZTFmNTQ4NmZjNGQxYmRhMDYy
MDA5MzMzMzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlIHRha2Vz
IDMgYm9vbGVhbnM6CisgICAgICAgIC0gbV9pc1Byb2R1Y2luZ0RhdGEgdGVsbHMgd2hldGhlciBk
YXRhIGlzIHByb2R1Y2VkIG9yIG5vdC4gSW4gdGhlIGNhc2Ugb2YgY2FwdHVyaW5nLCBpdCB0ZWxs
cyB3aGV0aGVyIGNhcHR1cmUKKyAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAtIG1fbXV0ZWQv
bV9lbmFibGVkIGFsbG93cyBKUyBvciBXZWJLaXQgbGV2ZWwgdG8gc3RhcnQvc3RvcCB0aGUgc291
cmNlLgorCisgICAgICAgIENoYW5nZWQgTWVkaWFTdHJlYW0gY2FwdHVyZSBzdGF0ZSBjb21wdXRh
dGlvbiBzbyB0aGF0IGNhcHR1cmUgaXMgcmVwb3J0ZWQgYXMgZm9sbG93czoKKyAgICAgICAgLSBt
X2lzUHJvZHVjaW5nIGlzIHRydWUsIGNhcHR1cmUgaXMgaGFwcGVubmluZyBhbmQgaXMgYWN0aXZl
CisgICAgICAgIC0gbV9tdXRlZCBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbmluZyBidXQgaXMg
aW5hY3RpdmUuCisKKyAgICAgICAgRXhjZXB0IGluIHRoZSBjYXNlIG9mIFdlYlJUQyBpbmNvbWlu
ZyBzb3VyY2VzLCBmb3Igd2hpY2ggc291cmNlcyBtYXkgYmUgY3JlYXRlZCBhcyBtdXRlZCBhcyBw
ZXIgdGhlIHNwZWMsCisgICAgICAgIGFsbCBzb3VyY2VzIGFyZSB1bm11dGVkLCBlbmFibGVkIGFu
ZCBub3QgcHJvZHVjaW5nIGRhdGEgd2hlbiBjcmVhdGVkLgorCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UgaXMgbm93IGFjdGl2YWJsZSBlaXRoZXIgYnkgY2FsbGluZyBzdGFydC9zdG9wIG9y
IGJ5IGNhbGxpbmcgc2V0TXV0ZWQvc2V0RW5hYmxlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJucyB3
aWxsIHNldCB0aGUgYm9vbGVhbiB2YWx1ZXMgYWNjb3JkaW5nbHkgYW5kIHdpbGwgY2FsbCB0aGUg
dW5kZXJseWluZworICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEvc3RvcFByb2R1Y2luZ0RhdGEg
bWV0aG9kcyBkb2luZyB0aGUgYWN0dWFsIHN0dWZmLgorCisgICAgICAgIFJlbW92aW5nIGZyb20g
YWxsIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc3ViY2xhc3NlcyB0aGUgaGFuZGxpbmcgb2YgcHJvZHVj
aW5nIGRhdGEuCisgICAgICAgIE1ha2luZyBtb3JlIG1ldGhvZHMgbm9uLXZpcnR1YWwvbWVtYmVy
IGZpZWxkcyBwcml2YXRlIHRvIHNpbXBsaWZ5IHRoZSBtb2RlbC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Om1l
ZGlhU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlNdXRlZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVu
ZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTA1LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gU3RyZWFtcyB3aGlsZSBwbGF5IHdoaWxlIHBh
Z2UgaXMgaW4gYmFja2dyb3VuZCBjYW4gZ2V0ICJzdHVjayIgd2hlbiBwYWdlIGlzIGZvcmdyb3Vu
ZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDNkM2JhODg3MmFiNGIzYjliZDFiNTRmOTY1YmJhNTExMDEzODYz
YjUuLjg5ZjFmMTY4ZWMzNzYwZjljODVlY2JhZWIwOWEyMWRkZTlhMWJiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1
Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorCiAyMDE3LTA1LTEyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdl
YktpdDIvU2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4
IDNmN2IyYzE4OGI1OTk4MGEyZDVjZmJhODc2ZTk0YjkxODcyMGE4ZGUuLjVlMDVjM2U1OGRjZDUz
NjdjOWUxOGUxNDYwMGY3MzgyYTNjYTAwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250CiBS
ZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZT4gQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpCiB7CiAgICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZigqbmV3IFNvdXJjZShjYW52YXMsIFdURk1vdmUoZnJhbWVSZXF1ZXN0
UmF0ZSkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+
c3RhcnQoKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NvdXJjZSA9IHNvdXJjZS5jb3B5UmVm
KCldIHsKICAgICAgICAgaWYgKCFzb3VyY2UtPm1fY2FudmFzKQpAQCAtNzYsMTAgKzc2LDYgQEAg
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKEhUTUxDYW52YXNF
bGVtZW50JiBjYW52YXMsIHN0ZDo6b3AKIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmIChtX2lzUHJvZHVj
aW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsK
LQogICAgIGlmICghbV9jYW52YXMpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NhbnZhcy0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwpAQCAtOTMsMTAgKzg5LDYgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
LSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pc1By
b2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQogICAgIG1fcmVxdWVzdEZyYW1lVGltZXIuc3RvcCgpOwog
CiAgICAgaWYgKCFtX2NhbnZhcykKQEAgLTExMyw3ICsxMDUsNyBAQCB2b2lkIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0Rlc3Ryb3llZChIVE1MQ2FudmFzRWxl
bWVudCYgYwogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFz
KTsKIAotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogICAgIG1fY2FudmFz
ID0gbnVsbHB0cjsKIH0KIApAQCAtMTUwLDcgKzE0Miw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcygpCiB7CiAgICAgQVNTRVJUKG1f
Y2FudmFzKTsKIAotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1Byb2R1
Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZnJhbWVSZXF1ZXN0UmF0
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGFkMjVhZGVhNzBh
OGRiNjg3MWQ2YmIwYTA4YWVmZDY0Zjc1MTBkNjguLmNlMDc3Y2Q2MTViMGNmODc0NTlmNGMwYzk5
ZjliNjkwOTNlMmIxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAg
LTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZSBB
UEkKICAgICAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLSAgICAgICAgYm9vbCBpc1Byb2R1Y2luZ0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQogICAgICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOyB9CiAgICAgICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgICAgIGJvb2wg
YXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC03MCw3
ICs2OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZhcygpOwogICAgICAg
ICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKIAotICAgICAgICBib29sIG1faXNQcm9k
dWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFtZSB7IHRy
dWUgfTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZnJhbWVSZXF1ZXN0UmF0ZTsK
ICAgICAgICAgVGltZXIgbV9yZXF1ZXN0RnJhbWVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggMjZmNTRlMDgwYWZj
Yjk5OTA0ZjhkMjJkNmRjOTk4Nzg3Y2Q1MmY0NC4uMzFhZDdjZmJlNTg4YTM2MDcwOGNlYjNjYzgx
M2UwYWE4YmYxN2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgTWVkaWFTdHJlYW06Om1lZGlhU3RhdGUoKSBjb25zdAogICAgICAgICBp
ZiAobV9wcml2YXRlLT5oYXNDYXB0dXJlQXVkaW9Tb3VyY2UoKSkgewogICAgICAgICAgICAgaWYg
KG1fcHJpdmF0ZS0+bXV0ZWQoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNNdXRlZEF1
ZGlvQ2FwdHVyZURldmljZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRh
KQorICAgICAgICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9wcml2YXRlLT5p
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNBY3RpdmVBdWRp
b0NhcHR1cmVEZXZpY2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTYsNyArMzU2LDcgQEAgTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIE1lZGlhU3RyZWFtOjptZWRpYVN0YXRlKCkgY29u
c3QKICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+aGFzQ2FwdHVyZVZpZGVvU291cmNlKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX3ByaXZhdGUtPm11dGVkKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUg
fD0gSGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2lz
UHJvZHVjaW5nRGF0YSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhICYm
IG1fcHJpdmF0ZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0g
SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgKaW5kZXggNWUyMDQ2YWQ1YTRjZWVhODhkZjVkM2RhYjI0OWZlM2EyZDY2
YzgyMS4uYWVkMzc5MTU4ZDFiN2YwNWNjYzhhZmNiYzkyODU3NjBhMjNlOWFjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAotICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7IH0KLSAgICB2b2lk
IHN0b3BQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsgfQor
ICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnQoKTsgfQorICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5zdG9wKCk7IH0KICAgICBib29s
IGlzUHJvZHVjaW5nRGF0YSgpIHsgcmV0dXJuIG1fc291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKTsg
fQogCiAgICAgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPmlzSXNv
bGF0ZWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCA0YjRlNDY0NzJhZmZhOTQ3ZWE4
MjhlYTQ1ZDZkMGJiMDNlMDQ2NTAzLi4yNGVmZjcyODA4ZDJiOTBjMThmY2RlOWRiZjFlMTAyN2Uy
NWVkZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtNTksMjEgKzU5LDE1IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpCiAgICAgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgPSBmYWxzZTsK
IH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgpCi17Ci0gICAgbV9zdG9wcGVk
ID0gZmFsc2U7Ci0gICAgbV9tdXRlZCA9IGZhbHNlOwotfQotCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFkZE9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZl
cikKIHsKLSAgICBtX29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX29ic2VydmVy
cy5hcHBlbmQob2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAg
ICBtX29ic2VydmVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8qIGFuT2Jz
ZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIGFuT2JzZXJ2ZXIgPT0gJm9ic2VydmVyOworICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZvYnNlcnZlcl0oYXV0byBhbk9ic2VydmVy
KSB7CisgICAgICAgIHJldHVybiAmYW5PYnNlcnZlci5nZXQoKSA9PSAmb2JzZXJ2ZXI7CiAgICAg
fSk7CiAKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLnNpemUoKSkKQEAgLTgyLDM5ICs3Niw0NCBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyJiBvYnNlcnZlcgogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCB8fCBtX211dGVkID09IG11dGVk
KQorICAgIGlmIChtX211dGVkID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX211
dGVkID0gbXV0ZWQ7CiAKLSAgICBpZiAobXV0ZWQpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gZmlndXJlIG91dCBob3cgdG8gZ3VhcmFudGVlIHRoYXQgYXQgbGVhc3Qgb25lIGJsYWNr
IHZpZGVvIGZyYW1lIGlzCi0gICAgICAgIC8vIGVtaXR0ZWQgYWZ0ZXIgYmVpbmcgbXV0ZWQuCi0g
ICAgICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpOworICAgIGlmIChtdXRlZCkKKyAgICAgICAgc3RvcCgpOworICAgIGVsc2UK
KyAgICAgICAgc3RhcnQoKTsKKworICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7Cit9CisKK3Zv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKK3sK
KyAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tdXRl
ZCA9IG11dGVkOwogCiAgICAgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpub3RpZnlNdXRlZE9ic2VydmVycygpIGNvbnN0CiB7Ci0gICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+c291cmNl
TXV0ZWRDaGFuZ2VkKCk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKKyAgICAgICAgb2JzZXJ2ZXIuc291cmNlTXV0ZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1f
c3RvcHBlZCB8fCBtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkID09IGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAg
ICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VFbmFibGVkQ2hhbmdl
ZCgpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAg
IG9ic2VydmVyLnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQpAQCAtMTI4LDQ5ICsxMjcsNTcgQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5v
dGlmaWNhdGlvbiA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+c291cmNlU2V0dGluZ3NDaGFuZ2VkKCk7Cisg
ICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgICAg
ICBvYnNlcnZlci5zb3VyY2VTZXR0aW5nc0NoYW5nZWQoKTsKICAgICB9KTsKIH0KIAogdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1Nh
bXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIudmlkZW9TYW1wbGVBdmFpbGFibGUobWVk
aWFTYW1wbGUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBh
dWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUs
IGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICBmb3IgKE9ic2Vy
dmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5hdWRpb1NhbXBs
ZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMp
OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdP
YnNlcnZlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnQoKQogewotICAgIGlmIChz
dG9wcGVkKCkpCisgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKKyAg
ICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKK30KIAotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewotICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGluZ09ic2Vy
dmVyKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKLSAgICB9Cit2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoKQoreworICAgIGlmICghbV9pc1Byb2R1Y2luZ0Rh
dGEpCisgICAgICAgIHJldHVybjsKIAorICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAg
ICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpy
ZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQogewotICAgIGlmIChzdG9wcGVk
KCkpCisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7Ci0gICAgICAgIGlmIChv
YnNlcnZlci0+cHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpKQorICAgIGZvciAoT2JzZXJ2ZXIm
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKG9ic2VydmVyLnByZXZlbnRT
b3VyY2VGcm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3Rv
cChjYWxsaW5nT2JzZXJ2ZXIpOworCisgICAgc3RvcCgpOworCisgICAgZm9yIChPYnNlcnZlciYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAoJm9ic2VydmVyICE9IGNhbGxp
bmdPYnNlcnZlcikKKyAgICAgICAgICAgIG9ic2VydmVyLnNvdXJjZVN0b3BwZWQoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDM2NzczOTJhOGJiMGI4ZTgyYzMxY2MxMmY3
ZGZjYjNhZTkyOTkyNC4uNmM0NTFkN2ZjNTc2NWRlNjQyZDFjMmRlMWRjNzhkZjMxYTg4OGY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTI3LDYwICsxMjcsMzAgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKICAgICBjb25zdCBTdHJp
bmcmIHBlcnNpc3RlbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudElEOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCkg
eyBtX3BlcnNpc3RlbnRJRCA9IHBlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQ
ZXJzaXN0ZW50SUQoU3RyaW5nJiYgcGVyc2lzdGVudElEKSB7IG1fcGVyc2lzdGVudElEID0gV1RG
TW92ZShwZXJzaXN0ZW50SUQpOyB9CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBdWRp
bywgVmlkZW8gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9
IG5hbWU7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZml0bmVzc1Njb3JlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCA9IDA7Ci0KLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3Vj
Y2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7Ci0gICAgc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIg
PSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJik7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KTsKKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAg
IHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAgICAgCi0gICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9wcGVkOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX211dGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5h
YmxlZChib29sKTsKIAotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYp
IHsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQog
ICAgIAorICAgIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml0bmVz
c1Njb3JlOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVy
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2R1Y2lu
Z0RhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBzdG9wKE9ic2VydmVy
KiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2Vy
dmVyKiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwotCi0gICAgdmlydHVhbCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3Zp
ZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwogICAg
IHZvaWQgc2V0SGVpZ2h0KGludCk7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQpAQCAtMjE0LDYgKzE4NCwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseUVjaG9DYW5j
ZWxsYXRpb24oYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0ID0gMDsKKworICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2
b2lkKCk+OworICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+Owor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBTdWNjZXNzSGFuZGxlciYmLCBGYWlsdXJlSGFuZGxlciYmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYpOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0NhcHR1cmVT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vbml0
b3JPcmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgeyB9CisKKyAgICB2aXJ0dWFsIEF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBudWxscHRy
OyB9CisKIHByb3RlY3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYg
aWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTIzMCwyNiArMjIxLDMxIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAKLSAgICBjb25zdCBWZWN0b3I8T2JzZXJ2ZXIqPiBvYnNlcnZl
cnMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVyczsgfQotCiAgICAgdm9pZCBub3RpZnlNdXRl
ZE9ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRl
ZCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVWb2x1bWUoZG91YmxlIHZvbHVtZSkgeyBtX3ZvbHVt
ZSA9IHZvbHVtZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbXBsZVJhdGUoaW50IHNhbXBsZVJh
dGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZUVj
aG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNob0NhbmNlbGxhdGlv
biA9IGVjaG9DYW5jZWxsYXRpb247IH0KIAotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07Ci0KKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KKworICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisKICAg
ICBXZWFrUHRyRmFjdG9yeTxSZWFsdGltZU1lZGlhU291cmNlPiBtX3dlYWtQdHJGYWN0b3J5Owog
ICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBtX3BlcnNpc3RlbnRJRDsKICAgICBUeXBlIG1f
dHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4gbV9vYnNl
cnZlcnM7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgZG91YmxlIG1fZnJhbWVSYXRlIHsgMzAg
fTsKICAgICBkb3VibGUgbV9hc3BlY3RSYXRpbyB7IDAgfTsKQEAgLTI2MCw5ICsyNTYsOSBAQCBw
cml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2Rl
IG1fZmFjaW5nTW9kZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcn07CiAKICAg
ICBib29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3N0b3BwZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgeyB0cnVlIH07
CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAppbmRleCBmODQ5
MDEwZjczOTM1ZTZjYzA0YjVmNTFmYTBhMjdjY2RkNTk3YWFmLi43MTUwMWMwZDdiZGZmOGIwNGEz
MzYzNjNiMzUxYjkyNDJlYmRlOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApAQCAt
NjgsNyArNjgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIGlzUHJv
ZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgQVZNZWRpYUNhcHR1
cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSk7CkBAIC05MSw3ICs5MCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwotICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKIAog
ICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggMTIy
YmRiOGY0OTQwMThjMmMwNDVhYmY4NDc1ZDkxYTZhZTViZDcyYS4uNTY1YmQ5ODc1ZTUyYzM0ODUx
NjVlNjQwZTQyNzQxZjUzMmQ5ZmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpA
QCAtMTQ4LDggKzE0OCw3IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNv
dXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0CiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSkgPT0g
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3Ro
ZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UgaXMgbm90IEFWQ2FwdHVy
ZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50
IGFzIGV4cGVjdGVkIik7CiAjZW5kaWYKICAgICAKLSAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNl
LnVuaXF1ZUlEKTsKLSAgICBzZXRNdXRlZCh0cnVlKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoU3Ry
aW5nKGRldmljZS51bmlxdWVJRCkpOwogfQogCiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6fkFWTWVk
aWFDYXB0dXJlU291cmNlKCkKQEAgLTI2MiwxNyArMjYxLDYgQEAgdm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRp
b25dOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpyZXNldCgpCi17Ci0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKTsKLSAgICBtX2lzUnVubmluZyA9IGZhbHNlOwotICAg
IGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKLSAgICAg
ICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOmtleU5hbWVdOwotCi0gICAgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwotICAgIG1fc2Vz
c2lvbiA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVT
ZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCiB7CiAgICAgc2NoZWR1bGVEZWZl
cnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7CkBAIC0yODAsMTkgKzI2OCwxMCBAQCB2b2lkIEFWTWVk
aWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0
YXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faXNSdW5uaW5nID0gc3RhdGU7
Ci0gICAgICAgIGlmIChtX211dGVkID09ICFtX2lzUnVubmluZykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBtX211dGVkID0gIW1faXNSdW5uaW5nOwotICAgICAgICBub3RpZnlNdXRl
ZE9ic2VydmVycygpOworICAgICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9pc1J1bm5pbmcpOwog
ICAgIH0pOwogfQogCi1ib29sIEFWTWVkaWFDYXB0dXJlU291cmNlOjppc1Byb2R1Y2luZ0RhdGEo
KSBjb25zdAotewotICAgIHJldHVybiBtX2lzUnVubmluZzsKLX0KLQogI2lmIFBMQVRGT1JNKElP
UykKIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9y
KFJldGFpblB0cjxOU0Vycm9yPiBlcnJvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA4YWY4MWZiMjNkZTY1YmY5ODc5MmQwMmQ0OTQ3ZTQzMDY4MTg2N2IyLi42
NzI4Y2IxNDJkMjM4MWY0YTU3MDg0NDAyZTU4ZTI5ZWU0NTA3NjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC02NDgsOCArNjQ4LDYgQEAgQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBj
b25zdCBTdHIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBsYWJlbCkKICAgICAsIG1fY2FwdHVyZURldmljZUlEKHBl
cnNpc3RlbnRJRCkKIHsKLSAgICBtX211dGVkID0gdHJ1ZTsKLQogICAgIGF1dG8mIHVuaXQgPSBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKTsKIAogICAgIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKHVuaXQuZW5hYmxlRWNob0NhbmNlbGxhdGlvbigpKTsKQEAgLTY4MCwyMCArNjc4
LDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlRWNob0NhbmNlbGxhdGlv
blNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEp
Ci0gICAgICAgIHJldHVybjsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb3JlQXVkaW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAg
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCku
aXNQcm9kdWNpbmdEYXRhKCk7Ci0KLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX211dGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9hdWRpb1NvdXJj
ZVByb3ZpZGVyKQogICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1EZXNj
cmlwdGlvbigpKTsKQEAgLTcwMSwxMiArNjkwLDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgbV9t
dXRlZCA9IHRydWU7CiAKICAgICBpZiAobV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBt
X2F1ZGlvU291cmNlUHJvdmlkZXItPnVucHJlcGFyZSgpOwpAQCAtNzU2LDcgKzc0MCw3IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CiAgICAgICAgIG1f
YXVkaW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVh
dGUoKnRoaXMpOwotICAgICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJl
cGFyZSgmQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkubWljcm9waG9uZUZvcm1hdCgp
LnN0cmVhbURlc2NyaXB0aW9uKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmgKaW5kZXggODFkZmQ3NmMxYWFlY2EyM2VkZjJkODk5ZjU5YzJjZDc3YTdhNTU2My4uMjYz
YWRiZDdjMDdhZjBiYjc2Y2ViNWFmOTUwNjdjNjFmMTNmYWZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC04MCw3ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsgfQogCiAgICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwpAQCAt
OTMsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgdWludDMyX3QgbV9jYXB0dXJlRGV2aWNlSUQg
eyAwIH07CiAKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGIwZjI4M2IxZGM3NDJkZDA5YWY2
NTFkNzcyNWZjYWE2NzFjOGFjOTUuLmVjMmY0MDgxNDVkYzllNGVlMzVhNjE2MDgwMTdjY2NlNjVh
ZjdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEw
NywxMyArMTA3LDYgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6On5Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYygpCiAgICAgfQogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNv
dXJjZTsKLX0KLQogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1
ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKIHsKICAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlw
dGlvbik7CkBAIC0xNTgsNyArMTUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yzo6cmVuZGVyKGRvdWJsZSBkZWx0YSkKICAgICAgICAgdWludDMyX3QgYmlwQm9wQ291bnQgPSBz
dGQ6Om1pbihmcmFtZUNvdW50LCBiaXBCb3BSZW1haW4pOwogICAgICAgICBmb3IgKGF1dG8mIGF1
ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkgewogICAgICAgICAgICAg
YXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBtX3N0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZTsKLSAgICAgICAgICAgIGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsK
KyAgICAgICAgICAgIGlmICghbXV0ZWQoKSAmJiBlbmFibGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBtZW1jcHkoYXVkaW9CdWZmZXIubURhdGEsICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BTdGFydF0s
IHNpemVvZihGbG9hdDMyKSAqIGJpcEJvcENvdW50KTsKICAgICAgICAgICAgICAgICBhZGRIdW0o
SHVtVm9sdW1lLCBIdW1GcmVxdWVuY3ksIHNhbXBsZVJhdGUoKSwgbV9zYW1wbGVzUmVuZGVyZWQs
IHN0YXRpY19jYXN0PGZsb2F0Kj4oYXVkaW9CdWZmZXIubURhdGEpLCBiaXBCb3BDb3VudCk7CiAg
ICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQppbmRleCBhZDQ1NjU2MTU4YTg3NzBmMjgwNjYyMjM4YWYzNGU3YzgyYmQ2NTlmLi4wMGIzYTdl
MDkyMTFlNmZmYjI5ZDA2N2M4YTYzODUzZmZjZTBjZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC02NSwxMyArNjUsNiBAQCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJiBuYW1l
KQogewogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNvdXJjZTsKLX0KLQogUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6Q01TYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcAppbmRleCBhNGY5YjM4YWUyYTI4YjdkNzA3OWVjNzNhZGM4NGFmZDg1ZDM0ODJh
Li5hYzgyYzY2N2ZkNTA0YTU3Yjc3OGQ4YzE5N2Q5ZTUzNGJkMThiMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
IHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAg
IHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFydCgpOwogICAg
IHJldHVybiBzb3VyY2U7CiB9CiAKQEAgLTU1LDYgKzU1LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCiAgICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKIHsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKIH0KIAogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKQEAgLTYzLDcgKzY0LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKICAgICAgICAgbV9hdWRp
b1NvdXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gbnVsbHB0cjsKICAgICB9Ci0gICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzdG9w
KCk7CiB9CiAKIApAQCAtMTEyLDIwICsxMTMsMTIgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGwK
IAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2lu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwogfQpAQCAtMTM2LDcgKzEyOSw4IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpCiAg
ICAgQVNTRVJUKHRyYWNrKTsKIAogICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwot
ICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRp
b1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIG1fYXVkaW9UcmFj
ay0+QWRkU2luayh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IDg1MmNlOTdmMjI5M2VjOTMwMWI3NDE4MGVlN2FjNTkxYjIzNWNkM2QuLjYy
NWUzZDk4OGI3MjQwYjc0NThjNDhiYzlhZmJjY2QyMGFhMzA1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTY3LDE0ICs2NywxMSBAQCBwcml2YXRlOgog
ICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWlu
dHMuZ2V0KCk7IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9Ci0KICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgYm9vbCBtX2lzUHJvZHVj
aW5nRGF0YSB7IGZhbHNlIH07CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY1MDk2ZmIwZjBhMDYxZDQ1OWMxMWFk
MmYxMTA2ZGYxMzUzYmExNWEuLjE0ZjhlMTg4YWIwMDA3ZGM3NTA0MTIzYzY4MWJiYzQ0YWZlOTYz
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkCiAgICAgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDViBjb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSk7CiAKICAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKFdURk1vdmUo
dmlkZW9UcmFjayksIFdURk1vdmUodHJhY2tJZCksIGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpKTsK
LSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsK
ICAgICByZXR1cm4gc291cmNlOwogfQogCkBAIC02NywxNyArNjcsMTMgQEAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnIKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQogICAg
ICwgbV9jb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucykKIHsKLSAgICBtX211dGVkID0gIW1fdmlk
ZW9UcmFjazsKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCg2NDApOwogICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldEhlaWdodCg0ODApOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3Zp
ZGVvVHJhY2spOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBpZiAobV92aWRlb1Ry
YWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZp
ZGVvU2lua1dhbnRzKCkpOwogfQpAQCAtODcsMTggKzgzLDE0IEBAIHZvaWQgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlCiAgICAgQVNTRVJUKCFtX3ZpZGVvVHJhY2spOwogICAgIEFTU0VSVCh0cmFjayk7CiAK
LSAgICBtX211dGVkID0gZmFsc2U7Ci0gICAgbV92aWRlb1RyYWNrID0gdHJhY2s7Ci0gICAgaWYg
KG1faXNQcm9kdWNpbmdEYXRhKQorICAgIG1fdmlkZW9UcmFjayA9IFdURk1vdmUodHJhY2spOwor
ICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3ZpZGVvVHJhY2spOworICAgIGlmIChpc1Byb2R1Y2lu
Z0RhdGEoKSkKICAgICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRj
OjpWaWRlb1NpbmtXYW50cygpKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX3ZpZGVvVHJhY2spCiAgICAgICAgIG1fdmlkZW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzMyw3ICsxMjUsNyBAQCBDVlBpeGVsQnVmZmVyUmVmIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZQogCiB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1By
b2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDQyZjkyNmY0MWNhYzBjMThkODRmY2Y0ZjJkNmI5NDA1
ZmU5ZTBiMDAuLmQ0YTNmNDNmODAyYmM5MDQ0ODc3Yjc5YTlhNzIyNjg5MGEzYjIxYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTY2LDcgKzY2LDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CiAKLSAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdE
YXRhICYmIG1fYnVmZmVyOyB9CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCkBA
IC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9
OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1f
dmlkZW9UcmFjazsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgbV9jb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggOTRlYzI1ZTViODliYTRiNDU4OWI4
ZTliNWI3NzgxYmQ1OGIyOTY3ZS4uZDNhYTk2ODgzODhiMjMwMWE3NDAxNjcwMTBkZmZhZjVjYWZm
MWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNl
dENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgaWYgKG1fY2xp
ZW50ICYmICFtX2Nvbm5lY3RlZCkgewogICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CiAgICAg
ICAgIG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgICAgICBtX2NhcHR1cmVTb3VyY2Ut
PnN0YXJ0KCk7CiAgICAgfSBlbHNlIGlmICghbV9jbGllbnQgJiYgbV9jb25uZWN0ZWQpIHsKICAg
ICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1f
Y29ubmVjdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApp
bmRleCA2MTVlYzllMWQ4YjUwNzNlYmRmODkxNjcxOThkOTkyMjY0MDYzOTI2Li44YTU4NDg2NzI1
NDgzYzJkY2UwYTQyNDRiNGVkZTE1ZmJmYWJkMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRPd3I6
OnVubXV0ZVJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgT3dyTWVkaWFTb3VyY2UqIHJl
YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFyZW1vdGVTb3VyY2UtPnN0b3Bw
ZWQoKSkKKyAgICBpZiAocmVtb3RlU291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAg
cmVtb3RlU291cmNlLT5zd2FwT3V0U2hhbGxvd1NvdXJjZSgqcmVhbFNvdXJjZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKaW5kZXggM2FlMzc2Mjdh
ODgwNTRhNzkwYzE5NzA2NDdiNTRiY2ZkYzJhZDE1NS4uN2NmYmY3OGYyNThkOTA4YTU0NGI5OWIx
ZWM5ODI4NGI1MzNlNGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlT3dyLmgKQEAgLTU1LDcgKzU1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihPd3JNZWRp
YVNvdXJjZSogbWVkaWFTb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWUKICAgICAs
IG1fbWVkaWFTb3VyY2UobWVkaWFTb3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIW1lZGlhU291
cmNlKQotICAgICAgICAgICAgbV9tdXRlZCA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlNdXRl
ZENoYW5nZSh0cnVlKTsKICAgICB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoY29uc3QgU3Ry
aW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGM0N2U3NWI3NGI0NTQxMzYxOGM0MjU4M2VjODc4ZThiMDk2Y2M4NWEuLjM3
NWNlN2RmZGJjZjYxYmUwODIzOTU0MjgwNjNmNjA3ZDg0MzEwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yMDgsNyAr
MjA4LDcgQEAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tNZWRpYUVuZHBvaW50OjpjcmVh
dGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcKICAgICB9CiAKICAgICBtX211dGVkUmVt
b3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwotICAgIHJldHVybiAqc291cmNlOworICAgIHJl
dHVybiBzb3VyY2UucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBNb2NrTWVkaWFFbmRwb2lu
dDo6cmVwbGFjZVNlbmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgbmV3U291cmNlLCBjb25z
dCBTdHJpbmcmIG1pZCkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIE1vY2tNZWRpYUVuZHBvaW50
Ojp1bm11dGVSZW1vdGVTb3VyY2VzQnlNaWQoKQogCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50Ojp1
bm11dGVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlID0gbV9tdXRlZFJlbW90ZVNvdXJjZXMuZ2V0KG1fbWlkc09mU291cmNlc1RvVW5tdXRlLnRh
a2VMYXN0KCkpOworICAgIGF1dG8qIHNvdXJjZSA9IG1fbXV0ZWRSZW1vdGVTb3VyY2VzLmdldCht
X21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgpKTsKICAgICBpZiAoc291cmNlKQogICAg
ICAgICBzb3VyY2UtPnNldE11dGVkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCA1ODFi
ZTI5YzQ4N2I1NTMzODYzNTE0MGFmZmNkZmRmYWVkNzdhYWI0Li5jODVkOWNlYTUxNDFlNThiZjc0
MzRhOGE0NTQ0NjNiNDE0ZWY3N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9y
RXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQdHI8TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBT
dHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKKyAgICBzb3VyY2UtPm5vdGlmeU11dGVk
Q2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5kaWYKIAogc3RhdGljIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlRmFjdG9yeSYgbW9ja0F1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKQogewpAQCAtMTIxLDExICsxMjEsNiBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
Ojppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZQogCiB2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1vY2tBdWRpb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgpAQCAtMTMz
LDIwICsxMjgsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKCkKICAgICBpZiAoIXNhbXBsZVJhdGUoKSkKICAgICAgICAgc2V0U2FtcGxlUmF0ZSgh
ZGV2aWNlSW5kZXgoKSA/IDQ0MTAwIDogNDgwMDApOwogCi0gICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotCiAgICAgbV9zdGFydFRpbWUgPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRl
ckludGVydmFsKCkpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQotICAgIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwog
ICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0
YXJ0VGltZTsKICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCA2N2VlNTll
NmIwNWE0N2M4MWMxOGI1OTBkNDVmOTdhOTdmMDlkMDcxLi40NjA5MGFjMDIzNzBlYTY3NTQ1MDc4
MDE5ZmIwOGUxYzM5MWI2N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
IHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBSZWZQdHI8
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0
b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggNzY3MjNhZWFjNmJhODRjNzcwNTQ1YzE3M2Jh
ZGUzODAwNDE5ZDEyZS4uNDQwYmI5OGQ2ZDI4NjA3ZDRiNmY5MDJkOTNmYWJkMGQzNzRjOTMwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAKQEAgLTgwLDExICs4MCwxMSBAQCBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgUmVhbHRpbWVN
ZWRpYQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZTo6QXVkaW86CiAgICAgICAgIG1fZGV2aWNlSW5kZXggPSBuYW1lID09IGF1ZGlvRGV2aWNl
cygpWzBdLmxhYmVsKCkgPyAwIDogMTsKLSAgICAgICAgc2V0UGVyc2lzdGVudElEKGF1ZGlvRGV2
aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKTsKKyAgICAgICAgc2V0UGVyc2lz
dGVudElEKFN0cmluZyhhdWRpb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpWaWRlbzoKICAgICAgICAgbV9kZXZpY2VJbmRleCA9IG5hbWUgPT0gdmlkZW9EZXZpY2VzKClb
MF0ubGFiZWwoKSA/IDAgOiAxOwotICAgICAgICBzZXRQZXJzaXN0ZW50SUQodmlkZW9EZXZpY2Vz
KClbbV9kZXZpY2VJbmRleF0ucGVyc2lzdGVudElkKCkpOworICAgICAgICBzZXRQZXJzaXN0ZW50
SUQoU3RyaW5nKHZpZGVvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6Ok5v
bmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTMyLDE4ICsxMzIsNiBAQCBS
ZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMmIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlOjpzdXBwb3J0ZWRDb25zdAogICAgIHJldHVybiBtX3N1cHBvcnRlZENvbnN0cmFpbnRz
OwogfQogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEo
KQotewotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKLSAgICBzZXRNdXRlZChmYWxzZSk7
Ci19Ci0KLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotICAgIHNldE11dGVkKHRydWUpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCmluZGV4IDlhNWFkMWQyMDQ4MjA0ZTAwNTJiYjVkNjU3ZTI2Mjg1NmMx
YmNhYWQuLjUwNmU0ODJhMmNmYWM2ZmMzODVhMGVlMDUxZWU1MjA3ZGM3OTRhNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmgKQEAgLTY1LDkgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENv
bnN0cmFpbnRzJikgPSAwOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBvdmVycmlkZTsKLQogICAg
IGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtODQsMTQgKzgxLDExIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKTsKICNlbmRpZgogCi0gICAgYm9vbCBpc1Byb2R1
Y2luZ0RhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQot
CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwogICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0
cmFpbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBtX2NhcGFiaWxpdGllczsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9jb25z
dHJhaW50czsKICAgICB1bnNpZ25lZCBtX2RldmljZUluZGV4IHsgMCB9OwotICAgIGJvb2wgbV9p
c1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcAppbmRleCAwZjE3OTE5Nzk2ZjY4ZThkOTljZTJjOTBiODZlYmNmMTM4YjVl
YTM0Li4yYWQ3YWIzNTNkYTAwYmU1ZWFhNTNhM2NiMDE1NTAzNTk2MjgxMzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcApAQCAtNzIsMTQgKzcyLDE0IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAg
ICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRp
ZgogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJp
bmcmIG5hbWUpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0
byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsK
KyAgICBzb3VyY2UtPm5vdGlmeU11dGVkQ2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7
CiB9Ci0jZW5kaWYKIAogc3RhdGljIE1vY2tSZWFsdGltZVZpZGVvU291cmNlRmFjdG9yeSYgbW9j
a1ZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQogewpAQCAtMTEyLDE2ICsxMTIsMTAgQEAgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpCiAKIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYg
KG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwotICAgIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBtb2NrVmlkZW9D
YXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAot
ICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKICAgICBp
ZiAoc2l6ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBzZXRXaWR0aCg2NDApOwogICAgICAgICBz
ZXRIZWlnaHQoNDgwKTsKQEAgLTEzMywxMiArMTI3LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwot
ICAgIAotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwog
ICAgIG1fdGltZXIuc3RvcCgpOwogICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKQEAg
LTM4NCw3ICszNzIsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZUZy
YW1lKCkKICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSk7CiAgICAg
Y29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKSwgIWRldmljZUlu
ZGV4KCkgPyBDb2xvcjo6YmxhY2sgOiBDb2xvcjo6ZGFya0dyYXkpOwogCi0gICAgaWYgKCFtX211
dGVkICYmIG1fZW5hYmxlZCkgeworICAgIGlmICghbXV0ZWQoKSAmJiBlbmFibGVkKCkpIHsKICAg
ICAgICAgZHJhd1RleHQoY29udGV4dCk7CiAgICAgICAgIGRyYXdBbmltYXRpb24oY29udGV4dCk7
CiAgICAgICAgIGRyYXdCb3hlcyhjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBjNDM5YWRkMmVh
NmNlOTdiNTQxMjM3MDZjMGUzMzdlYTA2YWMyMjMzLi4yYzhjNjE1ZjE4NzNlYzM3ODE4MjlhYzE1
NGE5MzFiMmZiMWQ3NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsK
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7Cisg
ICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBWaWRlb0NhcHR1cmVGYWN0b3J5JiBmYWN0b3J5
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA2Y2RiYTFmNzU5M2IwZTRl
MmE1NzkxNTgzMDA1NWY3NzAxZDkzYTY5Li5lZTgxMmQ5ZWY1Mjc3MzNiNDgzMDI3NzhhMjI5NjFl
YzkzOGQ1MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNTQsMTQgKzE1
NCwxNCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0YXJ0UHJvZHVjaW5n
RGF0YSh1aW50NjRfdCBpZCkKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7
CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICBpdGVyLT52YWx1ZS0+
c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIGl0ZXItPnZhbHVlLT5zb3Vy
Y2UoKS5zdGFydCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0
b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8gaXRlciA9IG1fcHJveGll
cy5maW5kKGlkKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIGl0
ZXItPnZhbHVlLT5zb3VyY2UoKS5zdG9wUHJvZHVjaW5nRGF0YSgpOworICAgICAgICBpdGVyLT52
YWx1ZS0+c291cmNlKCkuc3RvcCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OmNhcGFiaWxpdGllcyh1aW50NjRfdCBpZCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCBhOTM3MzdlOTBmOWY1YzJjOGNjNWQ5ZGFkOTdjYjQyZWZjNWYwMDViLi5iM2VlM2NkMTI4YTk3
MzNmNDg2ODJiNGQ2YmY0N2U4ZWE4ZWIzNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
MTEwLDggKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlv
RGF0YShtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgICAgIG1fcmluZ0J1ZmZl
ci5mZXRjaChhdWRpb0RhdGEubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUo
KSk7CiAKLSAgICAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVycygpKQotICAgICAg
ICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1f
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2Nl
ZWRlZChjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KQpAQCAtMTI3LDI0ICsxMjYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrcy5mYWlsdXJl
SGFuZGxlcihmYWlsZWRDb25zdHJhaW50LCBlcnJvck1lc3NhZ2UpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX211dGVk
ID09IG11dGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbXV0ZWQgPSBtdXRl
ZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldE11dGVkKG1faWQsIG1fbXV0ZWQpOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIGZpbmFsCi0gICAgewotICAgICAgICBp
ZiAobV9lbmFibGVkID09IGVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9lbmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldEVuYWJsZWQobV9pZCwg
bV9lbmFibGVkKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFydFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3RvcFByb2R1Y2luZ0Rh
dGEobV9pZCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309925</attachid>
            <date>2017-05-12 12:17:34 -0700</date>
            <delta_ts>2017-05-12 13:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171999-20170512121733.patch</filename>
            <type>text/plain</type>
            <size>52505</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UyNThmZjczNDk1MWEw
MjQ1NzY2NmFiMjdkYWFjM2UzNDIzYThlNi4uN2FhNzhmY2VlN2JlZTFmNTQ4NmZjNGQxYmRhMDYy
MDA5MzMzMzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlIHRha2Vz
IDMgYm9vbGVhbnM6CisgICAgICAgIC0gbV9pc1Byb2R1Y2luZ0RhdGEgdGVsbHMgd2hldGhlciBk
YXRhIGlzIHByb2R1Y2VkIG9yIG5vdC4gSW4gdGhlIGNhc2Ugb2YgY2FwdHVyaW5nLCBpdCB0ZWxs
cyB3aGV0aGVyIGNhcHR1cmUKKyAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAtIG1fbXV0ZWQv
bV9lbmFibGVkIGFsbG93cyBKUyBvciBXZWJLaXQgbGV2ZWwgdG8gc3RhcnQvc3RvcCB0aGUgc291
cmNlLgorCisgICAgICAgIENoYW5nZWQgTWVkaWFTdHJlYW0gY2FwdHVyZSBzdGF0ZSBjb21wdXRh
dGlvbiBzbyB0aGF0IGNhcHR1cmUgaXMgcmVwb3J0ZWQgYXMgZm9sbG93czoKKyAgICAgICAgLSBt
X2lzUHJvZHVjaW5nIGlzIHRydWUsIGNhcHR1cmUgaXMgaGFwcGVubmluZyBhbmQgaXMgYWN0aXZl
CisgICAgICAgIC0gbV9tdXRlZCBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbmluZyBidXQgaXMg
aW5hY3RpdmUuCisKKyAgICAgICAgRXhjZXB0IGluIHRoZSBjYXNlIG9mIFdlYlJUQyBpbmNvbWlu
ZyBzb3VyY2VzLCBmb3Igd2hpY2ggc291cmNlcyBtYXkgYmUgY3JlYXRlZCBhcyBtdXRlZCBhcyBw
ZXIgdGhlIHNwZWMsCisgICAgICAgIGFsbCBzb3VyY2VzIGFyZSB1bm11dGVkLCBlbmFibGVkIGFu
ZCBub3QgcHJvZHVjaW5nIGRhdGEgd2hlbiBjcmVhdGVkLgorCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UgaXMgbm93IGFjdGl2YWJsZSBlaXRoZXIgYnkgY2FsbGluZyBzdGFydC9zdG9wIG9y
IGJ5IGNhbGxpbmcgc2V0TXV0ZWQvc2V0RW5hYmxlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJucyB3
aWxsIHNldCB0aGUgYm9vbGVhbiB2YWx1ZXMgYWNjb3JkaW5nbHkgYW5kIHdpbGwgY2FsbCB0aGUg
dW5kZXJseWluZworICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEvc3RvcFByb2R1Y2luZ0RhdGEg
bWV0aG9kcyBkb2luZyB0aGUgYWN0dWFsIHN0dWZmLgorCisgICAgICAgIFJlbW92aW5nIGZyb20g
YWxsIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc3ViY2xhc3NlcyB0aGUgaGFuZGxpbmcgb2YgcHJvZHVj
aW5nIGRhdGEuCisgICAgICAgIE1ha2luZyBtb3JlIG1ldGhvZHMgbm9uLXZpcnR1YWwvbWVtYmVy
IGZpZWxkcyBwcml2YXRlIHRvIHNpbXBsaWZ5IHRoZSBtb2RlbC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Om1l
ZGlhU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlNdXRlZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVu
ZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTA1LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gU3RyZWFtcyB3aGlsZSBwbGF5IHdoaWxlIHBh
Z2UgaXMgaW4gYmFja2dyb3VuZCBjYW4gZ2V0ICJzdHVjayIgd2hlbiBwYWdlIGlzIGZvcmdyb3Vu
ZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDNkM2JhODg3MmFiNGIzYjliZDFiNTRmOTY1YmJhNTExMDEzODYz
YjUuLjg5ZjFmMTY4ZWMzNzYwZjljODVlY2JhZWIwOWEyMWRkZTlhMWJiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1
Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorCiAyMDE3LTA1LTEyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdl
YktpdDIvU2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4
IDNmN2IyYzE4OGI1OTk4MGEyZDVjZmJhODc2ZTk0YjkxODcyMGE4ZGUuLjVlMDVjM2U1OGRjZDUz
NjdjOWUxOGUxNDYwMGY3MzgyYTNjYTAwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250CiBS
ZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZT4gQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpCiB7CiAgICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZigqbmV3IFNvdXJjZShjYW52YXMsIFdURk1vdmUoZnJhbWVSZXF1ZXN0
UmF0ZSkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+
c3RhcnQoKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NvdXJjZSA9IHNvdXJjZS5jb3B5UmVm
KCldIHsKICAgICAgICAgaWYgKCFzb3VyY2UtPm1fY2FudmFzKQpAQCAtNzYsMTAgKzc2LDYgQEAg
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKEhUTUxDYW52YXNF
bGVtZW50JiBjYW52YXMsIHN0ZDo6b3AKIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmIChtX2lzUHJvZHVj
aW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsK
LQogICAgIGlmICghbV9jYW52YXMpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NhbnZhcy0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwpAQCAtOTMsMTAgKzg5LDYgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
LSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pc1By
b2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQogICAgIG1fcmVxdWVzdEZyYW1lVGltZXIuc3RvcCgpOwog
CiAgICAgaWYgKCFtX2NhbnZhcykKQEAgLTExMyw3ICsxMDUsNyBAQCB2b2lkIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0Rlc3Ryb3llZChIVE1MQ2FudmFzRWxl
bWVudCYgYwogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFz
KTsKIAotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogICAgIG1fY2FudmFz
ID0gbnVsbHB0cjsKIH0KIApAQCAtMTUwLDcgKzE0Miw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcygpCiB7CiAgICAgQVNTRVJUKG1f
Y2FudmFzKTsKIAotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1Byb2R1
Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZnJhbWVSZXF1ZXN0UmF0
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGFkMjVhZGVhNzBh
OGRiNjg3MWQ2YmIwYTA4YWVmZDY0Zjc1MTBkNjguLmNlMDc3Y2Q2MTViMGNmODc0NTlmNGMwYzk5
ZjliNjkwOTNlMmIxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAg
LTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZSBB
UEkKICAgICAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLSAgICAgICAgYm9vbCBpc1Byb2R1Y2luZ0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQogICAgICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOyB9CiAgICAgICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgICAgIGJvb2wg
YXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC03MCw3
ICs2OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZhcygpOwogICAgICAg
ICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKIAotICAgICAgICBib29sIG1faXNQcm9k
dWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFtZSB7IHRy
dWUgfTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZnJhbWVSZXF1ZXN0UmF0ZTsK
ICAgICAgICAgVGltZXIgbV9yZXF1ZXN0RnJhbWVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggMjZmNTRlMDgwYWZj
Yjk5OTA0ZjhkMjJkNmRjOTk4Nzg3Y2Q1MmY0NC4uMzFhZDdjZmJlNTg4YTM2MDcwOGNlYjNjYzgx
M2UwYWE4YmYxN2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgTWVkaWFTdHJlYW06Om1lZGlhU3RhdGUoKSBjb25zdAogICAgICAgICBp
ZiAobV9wcml2YXRlLT5oYXNDYXB0dXJlQXVkaW9Tb3VyY2UoKSkgewogICAgICAgICAgICAgaWYg
KG1fcHJpdmF0ZS0+bXV0ZWQoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNNdXRlZEF1
ZGlvQ2FwdHVyZURldmljZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRh
KQorICAgICAgICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9wcml2YXRlLT5p
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNBY3RpdmVBdWRp
b0NhcHR1cmVEZXZpY2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTYsNyArMzU2LDcgQEAgTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIE1lZGlhU3RyZWFtOjptZWRpYVN0YXRlKCkgY29u
c3QKICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+aGFzQ2FwdHVyZVZpZGVvU291cmNlKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX3ByaXZhdGUtPm11dGVkKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUg
fD0gSGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2lz
UHJvZHVjaW5nRGF0YSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhICYm
IG1fcHJpdmF0ZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0g
SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgKaW5kZXggNWUyMDQ2YWQ1YTRjZWVhODhkZjVkM2RhYjI0OWZlM2EyZDY2
YzgyMS4uYWVkMzc5MTU4ZDFiN2YwNWNjYzhhZmNiYzkyODU3NjBhMjNlOWFjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAotICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7IH0KLSAgICB2b2lk
IHN0b3BQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsgfQor
ICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnQoKTsgfQorICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5zdG9wKCk7IH0KICAgICBib29s
IGlzUHJvZHVjaW5nRGF0YSgpIHsgcmV0dXJuIG1fc291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKTsg
fQogCiAgICAgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPmlzSXNv
bGF0ZWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCA0YjRlNDY0NzJhZmZhOTQ3ZWE4
MjhlYTQ1ZDZkMGJiMDNlMDQ2NTAzLi4yNGVmZjcyODA4ZDJiOTBjMThmY2RlOWRiZjFlMTAyN2Uy
NWVkZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtNTksMjEgKzU5LDE1IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpCiAgICAgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgPSBmYWxzZTsK
IH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgpCi17Ci0gICAgbV9zdG9wcGVk
ID0gZmFsc2U7Ci0gICAgbV9tdXRlZCA9IGZhbHNlOwotfQotCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFkZE9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZl
cikKIHsKLSAgICBtX29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX29ic2VydmVy
cy5hcHBlbmQob2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAg
ICBtX29ic2VydmVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8qIGFuT2Jz
ZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIGFuT2JzZXJ2ZXIgPT0gJm9ic2VydmVyOworICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZvYnNlcnZlcl0oYXV0byBhbk9ic2VydmVy
KSB7CisgICAgICAgIHJldHVybiAmYW5PYnNlcnZlci5nZXQoKSA9PSAmb2JzZXJ2ZXI7CiAgICAg
fSk7CiAKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLnNpemUoKSkKQEAgLTgyLDM5ICs3Niw0NCBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyJiBvYnNlcnZlcgogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCB8fCBtX211dGVkID09IG11dGVk
KQorICAgIGlmIChtX211dGVkID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX211
dGVkID0gbXV0ZWQ7CiAKLSAgICBpZiAobXV0ZWQpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gZmlndXJlIG91dCBob3cgdG8gZ3VhcmFudGVlIHRoYXQgYXQgbGVhc3Qgb25lIGJsYWNr
IHZpZGVvIGZyYW1lIGlzCi0gICAgICAgIC8vIGVtaXR0ZWQgYWZ0ZXIgYmVpbmcgbXV0ZWQuCi0g
ICAgICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpOworICAgIGlmIChtdXRlZCkKKyAgICAgICAgc3RvcCgpOworICAgIGVsc2UK
KyAgICAgICAgc3RhcnQoKTsKKworICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7Cit9CisKK3Zv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKK3sK
KyAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tdXRl
ZCA9IG11dGVkOwogCiAgICAgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpub3RpZnlNdXRlZE9ic2VydmVycygpIGNvbnN0CiB7Ci0gICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+c291cmNl
TXV0ZWRDaGFuZ2VkKCk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKKyAgICAgICAgb2JzZXJ2ZXIuc291cmNlTXV0ZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1f
c3RvcHBlZCB8fCBtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkID09IGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAg
ICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VFbmFibGVkQ2hhbmdl
ZCgpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAg
IG9ic2VydmVyLnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQpAQCAtMTI4LDQ5ICsxMjcsNTcgQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5v
dGlmaWNhdGlvbiA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+c291cmNlU2V0dGluZ3NDaGFuZ2VkKCk7Cisg
ICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgICAg
ICBvYnNlcnZlci5zb3VyY2VTZXR0aW5nc0NoYW5nZWQoKTsKICAgICB9KTsKIH0KIAogdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1Nh
bXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIudmlkZW9TYW1wbGVBdmFpbGFibGUobWVk
aWFTYW1wbGUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBh
dWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUs
IGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICBmb3IgKE9ic2Vy
dmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5hdWRpb1NhbXBs
ZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMp
OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdP
YnNlcnZlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnQoKQogewotICAgIGlmIChz
dG9wcGVkKCkpCisgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKKyAg
ICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKK30KIAotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewotICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGluZ09ic2Vy
dmVyKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKLSAgICB9Cit2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoKQoreworICAgIGlmICghbV9pc1Byb2R1Y2luZ0Rh
dGEpCisgICAgICAgIHJldHVybjsKIAorICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAg
ICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpy
ZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQogewotICAgIGlmIChzdG9wcGVk
KCkpCisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7Ci0gICAgICAgIGlmIChv
YnNlcnZlci0+cHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpKQorICAgIGZvciAoT2JzZXJ2ZXIm
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKG9ic2VydmVyLnByZXZlbnRT
b3VyY2VGcm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3Rv
cChjYWxsaW5nT2JzZXJ2ZXIpOworCisgICAgc3RvcCgpOworCisgICAgZm9yIChPYnNlcnZlciYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAoJm9ic2VydmVyICE9IGNhbGxp
bmdPYnNlcnZlcikKKyAgICAgICAgICAgIG9ic2VydmVyLnNvdXJjZVN0b3BwZWQoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDM2NzczOTJhOGJiMGI4ZTgyYzMxY2MxMmY3
ZGZjYjNhZTkyOTkyNC4uNmM0NTFkN2ZjNTc2NWRlNjQyZDFjMmRlMWRjNzhkZjMxYTg4OGY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTI3LDYwICsxMjcsMzAgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKICAgICBjb25zdCBTdHJp
bmcmIHBlcnNpc3RlbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudElEOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCkg
eyBtX3BlcnNpc3RlbnRJRCA9IHBlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQ
ZXJzaXN0ZW50SUQoU3RyaW5nJiYgcGVyc2lzdGVudElEKSB7IG1fcGVyc2lzdGVudElEID0gV1RG
TW92ZShwZXJzaXN0ZW50SUQpOyB9CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBdWRp
bywgVmlkZW8gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9
IG5hbWU7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZml0bmVzc1Njb3JlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCA9IDA7Ci0KLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3Vj
Y2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7Ci0gICAgc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIg
PSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJik7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KTsKKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAg
IHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAgICAgCi0gICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9wcGVkOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX211dGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5h
YmxlZChib29sKTsKIAotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYp
IHsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQog
ICAgIAorICAgIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml0bmVz
c1Njb3JlOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVy
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2R1Y2lu
Z0RhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBzdG9wKE9ic2VydmVy
KiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2Vy
dmVyKiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwotCi0gICAgdmlydHVhbCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3Zp
ZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwogICAg
IHZvaWQgc2V0SGVpZ2h0KGludCk7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQpAQCAtMjE0LDYgKzE4NCwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseUVjaG9DYW5j
ZWxsYXRpb24oYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0ID0gMDsKKworICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2
b2lkKCk+OworICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+Owor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBTdWNjZXNzSGFuZGxlciYmLCBGYWlsdXJlSGFuZGxlciYmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYpOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0NhcHR1cmVT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vbml0
b3JPcmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgeyB9CisKKyAgICB2aXJ0dWFsIEF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBudWxscHRy
OyB9CisKIHByb3RlY3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYg
aWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTIzMCwyNiArMjIxLDMxIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAKLSAgICBjb25zdCBWZWN0b3I8T2JzZXJ2ZXIqPiBvYnNlcnZl
cnMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVyczsgfQotCiAgICAgdm9pZCBub3RpZnlNdXRl
ZE9ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRl
ZCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVWb2x1bWUoZG91YmxlIHZvbHVtZSkgeyBtX3ZvbHVt
ZSA9IHZvbHVtZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbXBsZVJhdGUoaW50IHNhbXBsZVJh
dGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZUVj
aG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNob0NhbmNlbGxhdGlv
biA9IGVjaG9DYW5jZWxsYXRpb247IH0KIAotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07Ci0KKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KKworICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisKICAg
ICBXZWFrUHRyRmFjdG9yeTxSZWFsdGltZU1lZGlhU291cmNlPiBtX3dlYWtQdHJGYWN0b3J5Owog
ICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBtX3BlcnNpc3RlbnRJRDsKICAgICBUeXBlIG1f
dHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4gbV9vYnNl
cnZlcnM7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgZG91YmxlIG1fZnJhbWVSYXRlIHsgMzAg
fTsKICAgICBkb3VibGUgbV9hc3BlY3RSYXRpbyB7IDAgfTsKQEAgLTI2MCw5ICsyNTYsOSBAQCBw
cml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2Rl
IG1fZmFjaW5nTW9kZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcn07CiAKICAg
ICBib29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3N0b3BwZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgeyB0cnVlIH07
CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAppbmRleCBmODQ5
MDEwZjczOTM1ZTZjYzA0YjVmNTFmYTBhMjdjY2RkNTk3YWFmLi43MTUwMWMwZDdiZGZmOGIwNGEz
MzYzNjNiMzUxYjkyNDJlYmRlOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApAQCAt
NjgsNyArNjgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIGlzUHJv
ZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgQVZNZWRpYUNhcHR1
cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSk7CkBAIC05MSw3ICs5MCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwotICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKIAog
ICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggMTIy
YmRiOGY0OTQwMThjMmMwNDVhYmY4NDc1ZDkxYTZhZTViZDcyYS4uNTY1YmQ5ODc1ZTUyYzM0ODUx
NjVlNjQwZTQyNzQxZjUzMmQ5ZmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpA
QCAtMTQ4LDggKzE0OCw3IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNv
dXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0CiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSkgPT0g
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3Ro
ZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UgaXMgbm90IEFWQ2FwdHVy
ZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50
IGFzIGV4cGVjdGVkIik7CiAjZW5kaWYKICAgICAKLSAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNl
LnVuaXF1ZUlEKTsKLSAgICBzZXRNdXRlZCh0cnVlKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoU3Ry
aW5nKGRldmljZS51bmlxdWVJRCkpOwogfQogCiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6fkFWTWVk
aWFDYXB0dXJlU291cmNlKCkKQEAgLTI2MiwxNyArMjYxLDYgQEAgdm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRp
b25dOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpyZXNldCgpCi17Ci0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKTsKLSAgICBtX2lzUnVubmluZyA9IGZhbHNlOwotICAg
IGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKLSAgICAg
ICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOmtleU5hbWVdOwotCi0gICAgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwotICAgIG1fc2Vz
c2lvbiA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVT
ZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCiB7CiAgICAgc2NoZWR1bGVEZWZl
cnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7CkBAIC0yODAsMTkgKzI2OCwxMCBAQCB2b2lkIEFWTWVk
aWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0
YXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faXNSdW5uaW5nID0gc3RhdGU7
Ci0gICAgICAgIGlmIChtX211dGVkID09ICFtX2lzUnVubmluZykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBtX211dGVkID0gIW1faXNSdW5uaW5nOwotICAgICAgICBub3RpZnlNdXRl
ZE9ic2VydmVycygpOworICAgICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9pc1J1bm5pbmcpOwog
ICAgIH0pOwogfQogCi1ib29sIEFWTWVkaWFDYXB0dXJlU291cmNlOjppc1Byb2R1Y2luZ0RhdGEo
KSBjb25zdAotewotICAgIHJldHVybiBtX2lzUnVubmluZzsKLX0KLQogI2lmIFBMQVRGT1JNKElP
UykKIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9y
KFJldGFpblB0cjxOU0Vycm9yPiBlcnJvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA4YWY4MWZiMjNkZTY1YmY5ODc5MmQwMmQ0OTQ3ZTQzMDY4MTg2N2IyLi42
NzI4Y2IxNDJkMjM4MWY0YTU3MDg0NDAyZTU4ZTI5ZWU0NTA3NjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC02NDgsOCArNjQ4LDYgQEAgQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBj
b25zdCBTdHIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBsYWJlbCkKICAgICAsIG1fY2FwdHVyZURldmljZUlEKHBl
cnNpc3RlbnRJRCkKIHsKLSAgICBtX211dGVkID0gdHJ1ZTsKLQogICAgIGF1dG8mIHVuaXQgPSBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKTsKIAogICAgIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKHVuaXQuZW5hYmxlRWNob0NhbmNlbGxhdGlvbigpKTsKQEAgLTY4MCwyMCArNjc4
LDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlRWNob0NhbmNlbGxhdGlv
blNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEp
Ci0gICAgICAgIHJldHVybjsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb3JlQXVkaW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAg
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCku
aXNQcm9kdWNpbmdEYXRhKCk7Ci0KLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX211dGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9hdWRpb1NvdXJj
ZVByb3ZpZGVyKQogICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1EZXNj
cmlwdGlvbigpKTsKQEAgLTcwMSwxMiArNjkwLDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgbV9t
dXRlZCA9IHRydWU7CiAKICAgICBpZiAobV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBt
X2F1ZGlvU291cmNlUHJvdmlkZXItPnVucHJlcGFyZSgpOwpAQCAtNzU2LDcgKzc0MCw3IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CiAgICAgICAgIG1f
YXVkaW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVh
dGUoKnRoaXMpOwotICAgICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJl
cGFyZSgmQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkubWljcm9waG9uZUZvcm1hdCgp
LnN0cmVhbURlc2NyaXB0aW9uKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmgKaW5kZXggODFkZmQ3NmMxYWFlY2EyM2VkZjJkODk5ZjU5YzJjZDc3YTdhNTU2My4uMjYz
YWRiZDdjMDdhZjBiYjc2Y2ViNWFmOTUwNjdjNjFmMTNmYWZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC04MCw3ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsgfQogCiAgICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwpAQCAt
OTMsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgdWludDMyX3QgbV9jYXB0dXJlRGV2aWNlSUQg
eyAwIH07CiAKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGIwZjI4M2IxZGM3NDJkZDA5YWY2
NTFkNzcyNWZjYWE2NzFjOGFjOTUuLmVjMmY0MDgxNDVkYzllNGVlMzVhNjE2MDgwMTdjY2NlNjVh
ZjdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEw
NywxMyArMTA3LDYgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6On5Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYygpCiAgICAgfQogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNv
dXJjZTsKLX0KLQogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1
ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKIHsKICAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlw
dGlvbik7CkBAIC0xNTgsNyArMTUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yzo6cmVuZGVyKGRvdWJsZSBkZWx0YSkKICAgICAgICAgdWludDMyX3QgYmlwQm9wQ291bnQgPSBz
dGQ6Om1pbihmcmFtZUNvdW50LCBiaXBCb3BSZW1haW4pOwogICAgICAgICBmb3IgKGF1dG8mIGF1
ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkgewogICAgICAgICAgICAg
YXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBtX3N0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZTsKLSAgICAgICAgICAgIGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsK
KyAgICAgICAgICAgIGlmICghbXV0ZWQoKSAmJiBlbmFibGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBtZW1jcHkoYXVkaW9CdWZmZXIubURhdGEsICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BTdGFydF0s
IHNpemVvZihGbG9hdDMyKSAqIGJpcEJvcENvdW50KTsKICAgICAgICAgICAgICAgICBhZGRIdW0o
SHVtVm9sdW1lLCBIdW1GcmVxdWVuY3ksIHNhbXBsZVJhdGUoKSwgbV9zYW1wbGVzUmVuZGVyZWQs
IHN0YXRpY19jYXN0PGZsb2F0Kj4oYXVkaW9CdWZmZXIubURhdGEpLCBiaXBCb3BDb3VudCk7CiAg
ICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQppbmRleCBhZDQ1NjU2MTU4YTg3NzBmMjgwNjYyMjM4YWYzNGU3YzgyYmQ2NTlmLi4wMGIzYTdl
MDkyMTFlNmZmYjI5ZDA2N2M4YTYzODUzZmZjZTBjZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC02NSwxMyArNjUsNiBAQCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJiBuYW1l
KQogewogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNvdXJjZTsKLX0KLQogUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6Q01TYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcAppbmRleCBhNGY5YjM4YWUyYTI4YjdkNzA3OWVjNzNhZGM4NGFmZDg1ZDM0ODJh
Li5hYzgyYzY2N2ZkNTA0YTU3Yjc3OGQ4YzE5N2Q5ZTUzNGJkMThiMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
IHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAg
IHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFydCgpOwogICAg
IHJldHVybiBzb3VyY2U7CiB9CiAKQEAgLTU1LDYgKzU1LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCiAgICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKIHsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKIH0KIAogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKQEAgLTYzLDcgKzY0LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKICAgICAgICAgbV9hdWRp
b1NvdXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gbnVsbHB0cjsKICAgICB9Ci0gICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzdG9w
KCk7CiB9CiAKIApAQCAtMTEyLDIwICsxMTMsMTIgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGwK
IAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2lu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwogfQpAQCAtMTM2LDcgKzEyOSw4IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpCiAg
ICAgQVNTRVJUKHRyYWNrKTsKIAogICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwot
ICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRp
b1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIG1fYXVkaW9UcmFj
ay0+QWRkU2luayh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IDg1MmNlOTdmMjI5M2VjOTMwMWI3NDE4MGVlN2FjNTkxYjIzNWNkM2QuLjYy
NWUzZDk4OGI3MjQwYjc0NThjNDhiYzlhZmJjY2QyMGFhMzA1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTY3LDE0ICs2NywxMSBAQCBwcml2YXRlOgog
ICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWlu
dHMuZ2V0KCk7IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9Ci0KICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgYm9vbCBtX2lzUHJvZHVj
aW5nRGF0YSB7IGZhbHNlIH07CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY1MDk2ZmIwZjBhMDYxZDQ1OWMxMWFk
MmYxMTA2ZGYxMzUzYmExNWEuLjE0ZjhlMTg4YWIwMDA3ZGM3NTA0MTIzYzY4MWJiYzQ0YWZlOTYz
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkCiAgICAgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDViBjb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSk7CiAKICAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKFdURk1vdmUo
dmlkZW9UcmFjayksIFdURk1vdmUodHJhY2tJZCksIGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpKTsK
LSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsK
ICAgICByZXR1cm4gc291cmNlOwogfQogCkBAIC02NywxNyArNjcsMTMgQEAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnIKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQogICAg
ICwgbV9jb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucykKIHsKLSAgICBtX211dGVkID0gIW1fdmlk
ZW9UcmFjazsKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCg2NDApOwogICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldEhlaWdodCg0ODApOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3Zp
ZGVvVHJhY2spOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBpZiAobV92aWRlb1Ry
YWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZp
ZGVvU2lua1dhbnRzKCkpOwogfQpAQCAtODcsMTggKzgzLDE0IEBAIHZvaWQgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlCiAgICAgQVNTRVJUKCFtX3ZpZGVvVHJhY2spOwogICAgIEFTU0VSVCh0cmFjayk7CiAK
LSAgICBtX211dGVkID0gZmFsc2U7Ci0gICAgbV92aWRlb1RyYWNrID0gdHJhY2s7Ci0gICAgaWYg
KG1faXNQcm9kdWNpbmdEYXRhKQorICAgIG1fdmlkZW9UcmFjayA9IFdURk1vdmUodHJhY2spOwor
ICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3ZpZGVvVHJhY2spOworICAgIGlmIChpc1Byb2R1Y2lu
Z0RhdGEoKSkKICAgICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRj
OjpWaWRlb1NpbmtXYW50cygpKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX3ZpZGVvVHJhY2spCiAgICAgICAgIG1fdmlkZW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzMyw3ICsxMjUsNyBAQCBDVlBpeGVsQnVmZmVyUmVmIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZQogCiB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1By
b2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDQyZjkyNmY0MWNhYzBjMThkODRmY2Y0ZjJkNmI5NDA1
ZmU5ZTBiMDAuLmQ0YTNmNDNmODAyYmM5MDQ0ODc3Yjc5YTlhNzIyNjg5MGEzYjIxYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTY2LDcgKzY2LDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CiAKLSAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdE
YXRhICYmIG1fYnVmZmVyOyB9CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCkBA
IC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9
OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1f
dmlkZW9UcmFjazsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgbV9jb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggOTRlYzI1ZTViODliYTRiNDU4OWI4
ZTliNWI3NzgxYmQ1OGIyOTY3ZS4uZDNhYTk2ODgzODhiMjMwMWE3NDAxNjcwMTBkZmZhZjVjYWZm
MWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNl
dENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgaWYgKG1fY2xp
ZW50ICYmICFtX2Nvbm5lY3RlZCkgewogICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CiAgICAg
ICAgIG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgICAgICBtX2NhcHR1cmVTb3VyY2Ut
PnN0YXJ0KCk7CiAgICAgfSBlbHNlIGlmICghbV9jbGllbnQgJiYgbV9jb25uZWN0ZWQpIHsKICAg
ICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1f
Y29ubmVjdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApp
bmRleCA2MTVlYzllMWQ4YjUwNzNlYmRmODkxNjcxOThkOTkyMjY0MDYzOTI2Li44YTU4NDg2NzI1
NDgzYzJkY2UwYTQyNDRiNGVkZTE1ZmJmYWJkMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRPd3I6
OnVubXV0ZVJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgT3dyTWVkaWFTb3VyY2UqIHJl
YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFyZW1vdGVTb3VyY2UtPnN0b3Bw
ZWQoKSkKKyAgICBpZiAocmVtb3RlU291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAg
cmVtb3RlU291cmNlLT5zd2FwT3V0U2hhbGxvd1NvdXJjZSgqcmVhbFNvdXJjZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKaW5kZXggM2FlMzc2Mjdh
ODgwNTRhNzkwYzE5NzA2NDdiNTRiY2ZkYzJhZDE1NS4uN2NmYmY3OGYyNThkOTA4YTU0NGI5OWIx
ZWM5ODI4NGI1MzNlNGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlT3dyLmgKQEAgLTU1LDcgKzU1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihPd3JNZWRp
YVNvdXJjZSogbWVkaWFTb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWUKICAgICAs
IG1fbWVkaWFTb3VyY2UobWVkaWFTb3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIW1lZGlhU291
cmNlKQotICAgICAgICAgICAgbV9tdXRlZCA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlNdXRl
ZENoYW5nZSh0cnVlKTsKICAgICB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoY29uc3QgU3Ry
aW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGM0N2U3NWI3NGI0NTQxMzYxOGM0MjU4M2VjODc4ZThiMDk2Y2M4NWEuLjM3
NWNlN2RmZGJjZjYxYmUwODIzOTU0MjgwNjNmNjA3ZDg0MzEwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yMDgsNyAr
MjA4LDcgQEAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tNZWRpYUVuZHBvaW50OjpjcmVh
dGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcKICAgICB9CiAKICAgICBtX211dGVkUmVt
b3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwotICAgIHJldHVybiAqc291cmNlOworICAgIHJl
dHVybiBzb3VyY2UucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBNb2NrTWVkaWFFbmRwb2lu
dDo6cmVwbGFjZVNlbmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgbmV3U291cmNlLCBjb25z
dCBTdHJpbmcmIG1pZCkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIE1vY2tNZWRpYUVuZHBvaW50
Ojp1bm11dGVSZW1vdGVTb3VyY2VzQnlNaWQoKQogCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50Ojp1
bm11dGVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlID0gbV9tdXRlZFJlbW90ZVNvdXJjZXMuZ2V0KG1fbWlkc09mU291cmNlc1RvVW5tdXRlLnRh
a2VMYXN0KCkpOworICAgIGF1dG8qIHNvdXJjZSA9IG1fbXV0ZWRSZW1vdGVTb3VyY2VzLmdldCht
X21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgpKTsKICAgICBpZiAoc291cmNlKQogICAg
ICAgICBzb3VyY2UtPnNldE11dGVkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCA1ODFi
ZTI5YzQ4N2I1NTMzODYzNTE0MGFmZmNkZmRmYWVkNzdhYWI0Li5jODVkOWNlYTUxNDFlNThiZjc0
MzRhOGE0NTQ0NjNiNDE0ZWY3N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9y
RXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQdHI8TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBT
dHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKKyAgICBzb3VyY2UtPm5vdGlmeU11dGVk
Q2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5kaWYKIAogc3RhdGljIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlRmFjdG9yeSYgbW9ja0F1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKQogewpAQCAtMTIxLDExICsxMjEsNiBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
Ojppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZQogCiB2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1vY2tBdWRpb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgpAQCAtMTMz
LDIwICsxMjgsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKCkKICAgICBpZiAoIXNhbXBsZVJhdGUoKSkKICAgICAgICAgc2V0U2FtcGxlUmF0ZSgh
ZGV2aWNlSW5kZXgoKSA/IDQ0MTAwIDogNDgwMDApOwogCi0gICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotCiAgICAgbV9zdGFydFRpbWUgPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRl
ckludGVydmFsKCkpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQotICAgIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwog
ICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0
YXJ0VGltZTsKICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCA2N2VlNTll
NmIwNWE0N2M4MWMxOGI1OTBkNDVmOTdhOTdmMDlkMDcxLi4wZmUzNjIwOTBkZmJkYzVkYmM0Y2Nk
ZDU0NDQ0NmNlOGU3NTdkZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
IHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBSZWZQdHI8
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0
b3J5KCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzdGFydFBy
b2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7
Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJv
ZHVjaW5nRGF0YTsgfQorICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb2R1Y2luZ0RhdGE7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoZG91YmxlKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlLmNwcAppbmRleCA3NjcyM2FlYWM2YmE4NGM3NzA1NDVjMTczYmFkZTM4
MDA0MTlkMTJlLi40NDBiYjk4ZDZkMjg2MDdkNGI2ZjkwMmQ5M2ZhYmQwZDM3NGM5MzAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmNwcApAQCAtODAsMTEgKzgwLDExIEBAIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lZGlh
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBl
OjpBdWRpbzoKICAgICAgICAgbV9kZXZpY2VJbmRleCA9IG5hbWUgPT0gYXVkaW9EZXZpY2VzKClb
MF0ubGFiZWwoKSA/IDAgOiAxOwotICAgICAgICBzZXRQZXJzaXN0ZW50SUQoYXVkaW9EZXZpY2Vz
KClbbV9kZXZpY2VJbmRleF0ucGVyc2lzdGVudElkKCkpOworICAgICAgICBzZXRQZXJzaXN0ZW50
SUQoU3RyaW5nKGF1ZGlvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvOgogICAgICAgICBtX2RldmljZUluZGV4ID0gbmFtZSA9PSB2aWRlb0RldmljZXMoKVswXS5s
YWJlbCgpID8gMCA6IDE7Ci0gICAgICAgIHNldFBlcnNpc3RlbnRJRCh2aWRlb0RldmljZXMoKVtt
X2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQoKSk7CisgICAgICAgIHNldFBlcnNpc3RlbnRJRChT
dHJpbmcodmlkZW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVyc2lzdGVudElkKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6Tm9uZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMzIsMTggKzEzMiw2IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYgTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN1cHBvcnRlZENvbnN0CiAgICAgcmV0dXJuIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiB9
CiAKLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17
Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOwotICAgIHNldE11dGVkKGZhbHNlKTsKLX0K
LQotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgc2V0TXV0ZWQodHJ1ZSk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmgKaW5kZXggOWE1YWQxZDIwNDgyMDRlMDA1MmJiNWQ2NTdlMjYyODU2YzFiY2Fh
ZC4uNTA2ZTQ4MmEyY2ZhYzZmYzM4NWEwZWUwNTFlZTUyMDdkYzc5NGE1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aApAQCAtNjUsOSArNjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVTdXBwb3J0ZWRDb25zdHJhaW50cyhSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3Ry
YWludHMmKSA9IDA7CiAjZW5kaWYKIAotICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwotCiAgICAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5n
cygpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC04NCwxNCArODEsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGluaXRpYWxpemVTZXR0aW5ncygpOwogI2VuZGlmCiAKLSAgICBib29sIGlzUHJvZHVjaW5n
RGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9Ci0KICAg
ICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWlu
dHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IG1fY2FwYWJpbGl0aWVzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFp
bnRzOwogICAgIHVuc2lnbmVkIG1fZGV2aWNlSW5kZXggeyAwIH07Ci0gICAgYm9vbCBtX2lzUHJv
ZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCmluZGV4IDBmMTc5MTk3OTZmNjhlOGQ5OWNlMmM5MGI4NmViY2YxMzhiNWVhMzQu
LjJhZDdhYjM1M2RhMDBiZTVlYWE1M2EzY2IwMTU1MDM1OTYyODEzMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
Y3BwCkBAIC03MiwxNCArNzIsMTQgQEAgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE0KIAogICAgIHJl
dHVybiBDYXB0dXJlU291cmNlT3JFcnJvcihXVEZNb3ZlKHNvdXJjZSkpOwogfQorI2VuZGlmCiAK
LVJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK1JlZjxNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYg
bmFtZSkKIHsKLSAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZShuYW1lKSk7Ci0gICAgc291cmNlLT5tX211dGVkID0gdHJ1ZTsKKyAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOworICAg
IHNvdXJjZS0+bm90aWZ5TXV0ZWRDaGFuZ2UodHJ1ZSk7CiAgICAgcmV0dXJuIHNvdXJjZTsKIH0K
LSNlbmRpZgogCiBzdGF0aWMgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VGYWN0b3J5JiBtb2NrVmlk
ZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpCiB7CkBAIC0xMTIsMTYgKzExMiwxMCBAQCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6fk1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkKIAogdm9pZCBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9p
c1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2lzUHJvZHVjaW5n
RGF0YSA9IHRydWU7Ci0gICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1vY2tWaWRlb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgogCi0gICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIGlmIChz
aXplKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNldFdpZHRoKDY0MCk7CiAgICAgICAgIHNldEhl
aWdodCg0ODApOwpAQCAtMTMzLDEyICsxMjcsNiBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNl
OjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAg
Ci0gICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7CiAgICAg
bV90aW1lci5zdG9wKCk7CiAgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOwogICAgIG1fc3RhcnRUaW1lID0gTkFOOwpAQCAtMzg0
LDcgKzM3Miw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlRnJhbWUo
KQogICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoRmxvYXRQb2ludCgpLCBzaXplKTsKICAgICBjb250
ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUpLCAhZGV2aWNlSW5kZXgo
KSA/IENvbG9yOjpibGFjayA6IENvbG9yOjpkYXJrR3JheSk7CiAKLSAgICBpZiAoIW1fbXV0ZWQg
JiYgbV9lbmFibGVkKSB7CisgICAgaWYgKCFtdXRlZCgpICYmIGVuYWJsZWQoKSkgewogICAgICAg
ICBkcmF3VGV4dChjb250ZXh0KTsKICAgICAgICAgZHJhd0FuaW1hdGlvbihjb250ZXh0KTsKICAg
ICAgICAgZHJhd0JveGVzKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCmluZGV4IGM0MzlhZGQyZWE2Y2U5
N2I1NDEyMzcwNmMwZTMzN2VhMDZhYzIyMzMuLjJjOGM2MTVmMTg3M2VjMzc4MTgyOWFjMTU0YTkz
MWIyZmIxZDc2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVi
bGljOgogCiAgICAgc3RhdGljIENhcHR1cmVTb3VyY2VPckVycm9yIGNyZWF0ZShjb25zdCBTdHJp
bmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7Ci0gICAgc3RhdGljIFJlZlB0cjxNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBz
dGF0aWMgUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiAgICAgc3RhdGljIFZpZGVvQ2FwdHVyZUZhY3RvcnkmIGZhY3RvcnkoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNh
cHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1Vz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDZjZGJhMWY3NTkzYjBlNGUyYTU3
OTE1ODMwMDU1Zjc3MDFkOTNhNjkuLmVlODEyZDllZjUyNzczM2I0ODMwMjc3OGEyMjk2MWVjOTM4
ZDUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTE1NCwxNCArMTU0LDE0
IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQcm9kdWNpbmdEYXRh
KHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8gaXRlciA9IG1fcHJveGllcy5maW5kKGlkKTsKICAg
ICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIGl0ZXItPnZhbHVlLT5zb3Vy
Y2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgp
LnN0YXJ0KCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RvcFBy
b2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiB7CiAgICAgYXV0byBpdGVyID0gbV9wcm94aWVzLmZp
bmQoaWQpOwogICAgIGlmIChpdGVyICE9IG1fcHJveGllcy5lbmQoKSkKLSAgICAgICAgaXRlci0+
dmFsdWUtPnNvdXJjZSgpLnN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIGl0ZXItPnZhbHVl
LT5zb3VyY2UoKS5zdG9wKCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94
eTo6Y2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
Q2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IGE5
MzczN2U5MGY5ZjVjMmM4Y2M1ZDlkYWQ5N2NiNDJlZmM1ZjAwNWIuLmIzZWUzY2QxMjhhOTczM2Y0
ODY4MmI0ZDZiZjQ3ZThlYThlYjM2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC0xMTAs
OCArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBXZWJBdWRpb0J1ZmZlckxpc3QgYXVkaW9EYXRh
KG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKICAgICAgICAgbV9yaW5nQnVmZmVyLmZl
dGNoKGF1ZGlvRGF0YS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRpbWVWYWx1ZSgpKTsK
IAotICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKCkpCi0gICAgICAgICAg
ICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNj
cmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2NyaXB0aW9uLCBudW1i
ZXJPZkZyYW1lcyk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzU3VjY2VlZGVk
KGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MpCkBA
IC0xMjcsMjQgKzEyNiw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2tzLmZhaWx1cmVIYW5k
bGVyKGZhaWxlZENvbnN0cmFpbnQsIGVycm9yTWVzc2FnZSk7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRNdXRlZChib29sIG11dGVkKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1fbXV0ZWQgPT0g
bXV0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9tdXRlZCA9IG11dGVkOwot
ICAgICAgICBtX21hbmFnZXIuc2V0TXV0ZWQobV9pZCwgbV9tdXRlZCk7Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmICht
X2VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBtX2Vu
YWJsZWQgPSBlbmFibGVkOwotICAgICAgICBtX21hbmFnZXIuc2V0RW5hYmxlZChtX2lkLCBtX2Vu
YWJsZWQpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgp
IGZpbmFsIHsgbV9tYW5hZ2VyLnN0YXJ0UHJvZHVjaW5nRGF0YShtX2lkKTsgfQogICAgIHZvaWQg
c3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdG9wUHJvZHVjaW5nRGF0YSht
X2lkKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309933</attachid>
            <date>2017-05-12 13:11:58 -0700</date>
            <delta_ts>2017-05-15 13:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171999-20170512131157.patch</filename>
            <type>text/plain</type>
            <size>53087</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UyNThmZjczNDk1MWEw
MjQ1NzY2NmFiMjdkYWFjM2UzNDIzYThlNi4uN2FhNzhmY2VlN2JlZTFmNTQ4NmZjNGQxYmRhMDYy
MDA5MzMzMzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlIHRha2Vz
IDMgYm9vbGVhbnM6CisgICAgICAgIC0gbV9pc1Byb2R1Y2luZ0RhdGEgdGVsbHMgd2hldGhlciBk
YXRhIGlzIHByb2R1Y2VkIG9yIG5vdC4gSW4gdGhlIGNhc2Ugb2YgY2FwdHVyaW5nLCBpdCB0ZWxs
cyB3aGV0aGVyIGNhcHR1cmUKKyAgICAgICAgICBoYXBwZW5zLgorICAgICAgICAtIG1fbXV0ZWQv
bV9lbmFibGVkIGFsbG93cyBKUyBvciBXZWJLaXQgbGV2ZWwgdG8gc3RhcnQvc3RvcCB0aGUgc291
cmNlLgorCisgICAgICAgIENoYW5nZWQgTWVkaWFTdHJlYW0gY2FwdHVyZSBzdGF0ZSBjb21wdXRh
dGlvbiBzbyB0aGF0IGNhcHR1cmUgaXMgcmVwb3J0ZWQgYXMgZm9sbG93czoKKyAgICAgICAgLSBt
X2lzUHJvZHVjaW5nIGlzIHRydWUsIGNhcHR1cmUgaXMgaGFwcGVubmluZyBhbmQgaXMgYWN0aXZl
CisgICAgICAgIC0gbV9tdXRlZCBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbmluZyBidXQgaXMg
aW5hY3RpdmUuCisKKyAgICAgICAgRXhjZXB0IGluIHRoZSBjYXNlIG9mIFdlYlJUQyBpbmNvbWlu
ZyBzb3VyY2VzLCBmb3Igd2hpY2ggc291cmNlcyBtYXkgYmUgY3JlYXRlZCBhcyBtdXRlZCBhcyBw
ZXIgdGhlIHNwZWMsCisgICAgICAgIGFsbCBzb3VyY2VzIGFyZSB1bm11dGVkLCBlbmFibGVkIGFu
ZCBub3QgcHJvZHVjaW5nIGRhdGEgd2hlbiBjcmVhdGVkLgorCisgICAgICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2UgaXMgbm93IGFjdGl2YWJsZSBlaXRoZXIgYnkgY2FsbGluZyBzdGFydC9zdG9wIG9y
IGJ5IGNhbGxpbmcgc2V0TXV0ZWQvc2V0RW5hYmxlZC4KKyAgICAgICAgVGhpcyBpbiB0dXJucyB3
aWxsIHNldCB0aGUgYm9vbGVhbiB2YWx1ZXMgYWNjb3JkaW5nbHkgYW5kIHdpbGwgY2FsbCB0aGUg
dW5kZXJseWluZworICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEvc3RvcFByb2R1Y2luZ0RhdGEg
bWV0aG9kcyBkb2luZyB0aGUgYWN0dWFsIHN0dWZmLgorCisgICAgICAgIFJlbW92aW5nIGZyb20g
YWxsIFJlYWx0aW1lTWVkaWFTb3VyY2Ugc3ViY2xhc3NlcyB0aGUgaGFuZGxpbmcgb2YgcHJvZHVj
aW5nIGRhdGEuCisgICAgICAgIE1ha2luZyBtb3JlIG1ldGhvZHMgbm9uLXZpcnR1YWwvbWVtYmVy
IGZpZWxkcyBwcml2YXRlIHRvIHNpbXBsaWZ5IHRoZSBtb2RlbC4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3Vy
Y2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJl
TWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0
cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Om1l
ZGlhU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291
cmNlOjpub3RpZnlNdXRlZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlh
U291cmNlOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3Ap
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1
cmVTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1
cmVTZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFD
YXB0dXJlU291cmNlOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlh
Q2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVj
aW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNl
OjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6
OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVu
ZHBvaW50Ojp1bm11dGVUaW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5oOgorCiAyMDE3LTA1LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gU3RyZWFtcyB3aGlsZSBwbGF5IHdoaWxlIHBh
Z2UgaXMgaW4gYmFja2dyb3VuZCBjYW4gZ2V0ICJzdHVjayIgd2hlbiBwYWdlIGlzIGZvcmdyb3Vu
ZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDNkM2JhODg3MmFiNGIzYjliZDFiNTRmOTY1YmJhNTExMDEzODYz
YjUuLjg5ZjFmMTY4ZWMzNzYwZjljODVlY2JhZWIwOWEyMWRkZTlhMWJiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRpbWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1
Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwOgorCiAyMDE3LTA1LTEyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdl
YktpdDIvU2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4
IDNmN2IyYzE4OGI1OTk4MGEyZDVjZmJhODc2ZTk0YjkxODcyMGE4ZGUuLjVlMDVjM2U1OGRjZDUz
NjdjOWUxOGUxNDYwMGY3MzgyYTNjYTAwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250CiBS
ZWY8Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZT4gQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMs
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGZyYW1lUmVxdWVzdFJhdGUpCiB7CiAgICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZigqbmV3IFNvdXJjZShjYW52YXMsIFdURk1vdmUoZnJhbWVSZXF1ZXN0
UmF0ZSkpKTsKLSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+
c3RhcnQoKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3NvdXJjZSA9IHNvdXJjZS5jb3B5UmVm
KCldIHsKICAgICAgICAgaWYgKCFzb3VyY2UtPm1fY2FudmFzKQpAQCAtNzYsMTAgKzc2LDYgQEAg
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6U291cmNlKEhUTUxDYW52YXNF
bGVtZW50JiBjYW52YXMsIHN0ZDo6b3AKIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmIChtX2lzUHJvZHVj
aW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsK
LQogICAgIGlmICghbV9jYW52YXMpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NhbnZhcy0+YWRk
T2JzZXJ2ZXIoKnRoaXMpOwpAQCAtOTMsMTAgKzg5LDYgQEAgdm9pZCBDYW52YXNDYXB0dXJlTWVk
aWFTdHJlYW1UcmFjazo6U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENhbnZh
c0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsK
LSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgbV9pc1By
b2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQogICAgIG1fcmVxdWVzdEZyYW1lVGltZXIuc3RvcCgpOwog
CiAgICAgaWYgKCFtX2NhbnZhcykKQEAgLTExMyw3ICsxMDUsNyBAQCB2b2lkIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc0Rlc3Ryb3llZChIVE1MQ2FudmFzRWxl
bWVudCYgYwogewogICAgIEFTU0VSVF9VTlVTRUQoY2FudmFzLCBtX2NhbnZhcyA9PSAmY2FudmFz
KTsKIAotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogICAgIG1fY2FudmFz
ID0gbnVsbHB0cjsKIH0KIApAQCAtMTUwLDcgKzE0Miw3IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FwdHVyZUNhbnZhcygpCiB7CiAgICAgQVNTRVJUKG1f
Y2FudmFzKTsKIAotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1Byb2R1
Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZnJhbWVSZXF1ZXN0UmF0
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGFkMjVhZGVhNzBh
OGRiNjg3MWQ2YmIwYTA4YWVmZDY0Zjc1MTBkNjguLmNlMDc3Y2Q2MTViMGNmODc0NTlmNGMwYzk5
ZjliNjkwOTNlMmIxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKQEAg
LTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZSBB
UEkKICAgICAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICAgICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpICBmaW5hbDsKLSAgICAgICAgYm9vbCBpc1Byb2R1Y2luZ0Rh
dGEoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQogICAgICAgICBjb25zdCBS
ZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzOjplbXB0eUNhcGFiaWxp
dGllcygpOyB9CiAgICAgICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0
dGluZ3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAgICAgIGJvb2wg
YXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC03MCw3
ICs2OSw2IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FwdHVyZUNhbnZhcygpOwogICAgICAg
ICB2b2lkIHJlcXVlc3RGcmFtZVRpbWVyRmlyZWQoKTsKIAotICAgICAgICBib29sIG1faXNQcm9k
dWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX3Nob3VsZEVtaXRGcmFtZSB7IHRy
dWUgfTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG1fZnJhbWVSZXF1ZXN0UmF0ZTsK
ICAgICAgICAgVGltZXIgbV9yZXF1ZXN0RnJhbWVUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggMjZmNTRlMDgwYWZj
Yjk5OTA0ZjhkMjJkNmRjOTk4Nzg3Y2Q1MmY0NC4uMzFhZDdjZmJlNTg4YTM2MDcwOGNlYjNjYzgx
M2UwYWE4YmYxN2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTM0Niw3ICszNDYsNyBAQCBNZWRpYVByb2R1Y2VyOjpN
ZWRpYVN0YXRlRmxhZ3MgTWVkaWFTdHJlYW06Om1lZGlhU3RhdGUoKSBjb25zdAogICAgICAgICBp
ZiAobV9wcml2YXRlLT5oYXNDYXB0dXJlQXVkaW9Tb3VyY2UoKSkgewogICAgICAgICAgICAgaWYg
KG1fcHJpdmF0ZS0+bXV0ZWQoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNNdXRlZEF1
ZGlvQ2FwdHVyZURldmljZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRh
KQorICAgICAgICAgICAgZWxzZSBpZiAobV9pc1Byb2R1Y2luZ0RhdGEgJiYgbV9wcml2YXRlLT5p
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgICAgICBzdGF0ZSB8PSBIYXNBY3RpdmVBdWRp
b0NhcHR1cmVEZXZpY2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTYsNyArMzU2LDcgQEAgTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIE1lZGlhU3RyZWFtOjptZWRpYVN0YXRlKCkgY29u
c3QKICAgICAgICAgaWYgKG1fcHJpdmF0ZS0+aGFzQ2FwdHVyZVZpZGVvU291cmNlKCkpIHsKICAg
ICAgICAgICAgIGlmIChtX3ByaXZhdGUtPm11dGVkKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUg
fD0gSGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2lz
UHJvZHVjaW5nRGF0YSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhICYm
IG1fcHJpdmF0ZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0g
SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmgKaW5kZXggNWUyMDQ2YWQ1YTRjZWVhODhkZjVkM2RhYjI0OWZlM2EyZDY2
YzgyMS4uYWVkMzc5MTU4ZDFiN2YwNWNjYzhhZmNiYzkyODU3NjBhMjNlOWFjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC02Miw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAotICAgIHZvaWQgc3RhcnRQcm9k
dWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7IH0KLSAgICB2b2lk
IHN0b3BQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsgfQor
ICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RhcnQoKTsgfQorICAg
IHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IG1fc291cmNlLT5zdG9wKCk7IH0KICAgICBib29s
IGlzUHJvZHVjaW5nRGF0YSgpIHsgcmV0dXJuIG1fc291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKTsg
fQogCiAgICAgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPmlzSXNv
bGF0ZWQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCA0YjRlNDY0NzJhZmZhOTQ3ZWE4
MjhlYTQ1ZDZkMGJiMDNlMDQ2NTAzLi4yNGVmZjcyODA4ZDJiOTBjMThmY2RlOWRiZjFlMTAyN2Uy
NWVkZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtNTksMjEgKzU5LDE1IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpCiAgICAgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgPSBmYWxzZTsK
IH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgpCi17Ci0gICAgbV9zdG9wcGVk
ID0gZmFsc2U7Ci0gICAgbV9tdXRlZCA9IGZhbHNlOwotfQotCiB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OmFkZE9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZl
cikKIHsKLSAgICBtX29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBtX29ic2VydmVy
cy5hcHBlbmQob2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyJiBvYnNlcnZlcikKIHsKLSAg
ICBtX29ic2VydmVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8qIGFuT2Jz
ZXJ2ZXIpIHsKLSAgICAgICAgcmV0dXJuIGFuT2JzZXJ2ZXIgPT0gJm9ic2VydmVyOworICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZUZpcnN0TWF0Y2hpbmcoWyZvYnNlcnZlcl0oYXV0byBhbk9ic2VydmVy
KSB7CisgICAgICAgIHJldHVybiAmYW5PYnNlcnZlci5nZXQoKSA9PSAmb2JzZXJ2ZXI7CiAgICAg
fSk7CiAKICAgICBpZiAoIW1fb2JzZXJ2ZXJzLnNpemUoKSkKQEAgLTgyLDM5ICs3Niw0NCBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZU9ic2VydmVyKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6Ok9ic2VydmVyJiBvYnNlcnZlcgogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11
dGVkKGJvb2wgbXV0ZWQpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCB8fCBtX211dGVkID09IG11dGVk
KQorICAgIGlmIChtX211dGVkID09IG11dGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX211
dGVkID0gbXV0ZWQ7CiAKLSAgICBpZiAobXV0ZWQpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gZmlndXJlIG91dCBob3cgdG8gZ3VhcmFudGVlIHRoYXQgYXQgbGVhc3Qgb25lIGJsYWNr
IHZpZGVvIGZyYW1lIGlzCi0gICAgICAgIC8vIGVtaXR0ZWQgYWZ0ZXIgYmVpbmcgbXV0ZWQuCi0g
ICAgICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpOworICAgIGlmIChtdXRlZCkKKyAgICAgICAgc3RvcCgpOworICAgIGVsc2UK
KyAgICAgICAgc3RhcnQoKTsKKworICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7Cit9CisKK3Zv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKK3sK
KyAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tdXRl
ZCA9IG11dGVkOwogCiAgICAgbm90aWZ5TXV0ZWRPYnNlcnZlcnMoKTsKIH0KIAogdm9pZCBSZWFs
dGltZU1lZGlhU291cmNlOjpub3RpZnlNdXRlZE9ic2VydmVycygpIGNvbnN0CiB7Ci0gICAgZm9y
IChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+c291cmNl
TXV0ZWRDaGFuZ2VkKCk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKKyAgICAgICAgb2JzZXJ2ZXIuc291cmNlTXV0ZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1f
c3RvcHBlZCB8fCBtX2VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICBpZiAobV9lbmFibGVkID09IGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CiAKLSAg
ICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT5zb3VyY2VFbmFibGVkQ2hhbmdl
ZCgpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAg
IG9ic2VydmVyLnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQpAQCAtMTI4LDQ5ICsxMjcsNTcgQEAgdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZSgpCiAKICAgICBzY2hlZHVsZURl
ZmVycmVkVGFzayhbdGhpc10gewogICAgICAgICBtX3BlbmRpbmdTZXR0aW5nc0RpZENoYW5nZU5v
dGlmaWNhdGlvbiA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+c291cmNlU2V0dGluZ3NDaGFuZ2VkKCk7Cisg
ICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgICAg
ICBvYnNlcnZlci5zb3VyY2VTZXR0aW5nc0NoYW5nZWQoKTsKICAgICB9KTsKIH0KIAogdm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgbWVk
aWFTYW1wbGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBmb3IgKGNvbnN0
IGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT52aWRlb1Nh
bXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSk7CisgICAgZm9yIChPYnNlcnZlciYgb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIudmlkZW9TYW1wbGVBdmFpbGFibGUobWVk
aWFTYW1wbGUpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBh
dWRpb0RhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUs
IGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICBmb3IgKE9ic2Vy
dmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci5hdWRpb1NhbXBs
ZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMp
OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdP
YnNlcnZlcikKK3ZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnQoKQogewotICAgIGlmIChz
dG9wcGVkKCkpCisgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKKyAg
ICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKK30KIAotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykgewotICAgICAgICBpZiAob2JzZXJ2ZXIgIT0gY2FsbGluZ09ic2Vy
dmVyKQotICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3BwZWQoKTsKLSAgICB9Cit2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoKQoreworICAgIGlmICghbV9pc1Byb2R1Y2luZ0Rh
dGEpCisgICAgICAgIHJldHVybjsKIAorICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7CiAg
ICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpy
ZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQogewotICAgIGlmIChzdG9wcGVk
KCkpCisgICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7Ci0gICAgICAgIGlmIChv
YnNlcnZlci0+cHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpKQorICAgIGZvciAoT2JzZXJ2ZXIm
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKG9ic2VydmVyLnByZXZlbnRT
b3VyY2VGcm9tU3RvcHBpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc3Rv
cChjYWxsaW5nT2JzZXJ2ZXIpOworCisgICAgc3RvcCgpOworCisgICAgZm9yIChPYnNlcnZlciYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAoJm9ic2VydmVyICE9IGNhbGxp
bmdPYnNlcnZlcikKKyAgICAgICAgICAgIG9ic2VydmVyLnNvdXJjZVN0b3BwZWQoKTsKKyAgICB9
CiB9CiAKIGJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydHNTaXplQW5kRnJhbWVSYXRl
KHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxpbnQ+LCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXggMDM2NzczOTJhOGJiMGI4ZTgyYzMxY2MxMmY3
ZGZjYjNhZTkyOTkyNC4uNmM0NTFkN2ZjNTc2NWRlNjQyZDFjMmRlMWRjNzhkZjMxYTg4OGY2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTI3LDYwICsxMjcsMzAgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKICAgICBjb25zdCBTdHJp
bmcmIHBlcnNpc3RlbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudElEOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIHBlcnNpc3RlbnRJRCkg
eyBtX3BlcnNpc3RlbnRJRCA9IHBlcnNpc3RlbnRJRDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQ
ZXJzaXN0ZW50SUQoU3RyaW5nJiYgcGVyc2lzdGVudElEKSB7IG1fcGVyc2lzdGVudElEID0gV1RG
TW92ZShwZXJzaXN0ZW50SUQpOyB9CiAKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBdWRp
bywgVmlkZW8gfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9
IG5hbWU7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZml0bmVzc1Njb3JlOyB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1l
TWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25z
dCA9IDA7Ci0KLSAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PjsKLSAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3Vj
Y2Vzc0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7Ci0gICAgc3RkOjpvcHRpb25hbDxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1l
ZGlhQ29uc3RyYWludHMmLCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25z
dHJhaW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lk
IHNldHRpbmdzRGlkQ2hhbmdlKCk7CisgICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lk
IHN0b3AoKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIg
PSBudWxscHRyKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAKLSAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2Ft
cGxlJik7Ci0gICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiwg
Y29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwg
c2l6ZV90KTsKKyAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQorICAg
IHZvaWQgc2V0TXV0ZWQoYm9vbCk7CiAgICAgCi0gICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9wcGVkOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX211dGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOworICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5h
YmxlZChib29sKTsKIAotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDYXB0dXJlU291cmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYp
IHsgfQorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQog
ICAgIAorICAgIHVuc2lnbmVkIGZpdG5lc3NTY29yZSgpIGNvbnN0IHsgcmV0dXJuIG1fZml0bmVz
c1Njb3JlOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVy
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Byb2R1Y2lu
Z0RhdGEoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdm9pZCBzdG9wKE9ic2VydmVy
KiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2Vy
dmVyKiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRyKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpOwotCi0gICAgdmlydHVhbCBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3Zp
ZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQotCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwogICAg
IHZvaWQgc2V0SGVpZ2h0KGludCk7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZTsgfQpAQCAtMjE0LDYgKzE4NCwyNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseUVjaG9DYW5j
ZWxsYXRpb24oYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBzZXR0aW5ncygp
IGNvbnN0ID0gMDsKKworICAgIHVzaW5nIFN1Y2Nlc3NIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2
b2lkKCk+OworICAgIHVzaW5nIEZhaWx1cmVIYW5kbGVyID0gc3RkOjpmdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgYmFkQ29uc3RyYWludCwgY29uc3QgU3RyaW5nJiBlcnJvclN0cmluZyk+Owor
ICAgIHZpcnR1YWwgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMm
LCBTdWNjZXNzSGFuZGxlciYmLCBGYWlsdXJlSGFuZGxlciYmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFD
b25zdHJhaW50cyYpOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludHMoY29u
c3QgTWVkaWFDb25zdHJhaW50cyYsIFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnN0cmFpbnQoY29uc3QgTWVkaWFDb25zdHJhaW50JikgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0dGluZ3NEaWRDaGFuZ2UoKTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0lzb2xhdGVk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0NhcHR1cmVT
b3VyY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vbml0
b3JPcmllbnRhdGlvbihPcmllbnRhdGlvbk5vdGlmaWVyJikgeyB9CisKKyAgICB2aXJ0dWFsIEF1
ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSB7IHJldHVybiBudWxscHRy
OyB9CisKIHByb3RlY3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYg
aWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKQEAgLTIzMCwyNiArMjIxLDMxIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2l6ZUFuZEZyYW1lUmF0ZShz
dGQ6Om9wdGlvbmFsPGludD4gd2lkdGgsIHN0ZDo6b3B0aW9uYWw8aW50PiBoZWlnaHQsIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPik7CiAKLSAgICBjb25zdCBWZWN0b3I8T2JzZXJ2ZXIqPiBvYnNlcnZl
cnMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmVyczsgfQotCiAgICAgdm9pZCBub3RpZnlNdXRl
ZE9ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRl
ZCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVWb2x1bWUoZG91YmxlIHZvbHVtZSkgeyBtX3ZvbHVt
ZSA9IHZvbHVtZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVNhbXBsZVJhdGUoaW50IHNhbXBsZVJh
dGUpIHsgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZUVj
aG9DYW5jZWxsYXRpb24oYm9vbCBlY2hvQ2FuY2VsbGF0aW9uKSB7IG1fZWNob0NhbmNlbGxhdGlv
biA9IGVjaG9DYW5jZWxsYXRpb247IH0KIAotICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07Ci0KKyAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxh
YmxlKE1lZGlhU2FtcGxlJik7CisgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KTsKKyAgICAKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5j
cmVhdGVXZWFrUHRyKCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KKworICAgIGJv
b2wgbV9tdXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CisKICAg
ICBXZWFrUHRyRmFjdG9yeTxSZWFsdGltZU1lZGlhU291cmNlPiBtX3dlYWtQdHJGYWN0b3J5Owog
ICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBtX3BlcnNpc3RlbnRJRDsKICAgICBUeXBlIG1f
dHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2
ZXJzOworICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPE9ic2VydmVyPj4gbV9vYnNl
cnZlcnM7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgZG91YmxlIG1fZnJhbWVSYXRlIHsgMzAg
fTsKICAgICBkb3VibGUgbV9hc3BlY3RSYXRpbyB7IDAgfTsKQEAgLTI2MCw5ICsyNTYsOSBAQCBw
cml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2Rl
IG1fZmFjaW5nTW9kZSB7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VXNlcn07CiAKICAg
ICBib29sIG1fZWNob0NhbmNlbGxhdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3N0b3BwZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgbV9zdXBwcmVzc05vdGlmaWNhdGlvbnMgeyB0cnVlIH07
CisgICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgQ2Fw
dHVyZVNvdXJjZU9yRXJyb3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAppbmRleCBmODQ5
MDEwZjczOTM1ZTZjYzA0YjVmNTFmYTBhMjdjY2RkNTk3YWFmLi43MTUwMWMwZDdiZGZmOGIwNGEz
MzYzNjNiMzUxYjkyNDJlYmRlOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UuaApAQCAt
NjgsNyArNjgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKLSAgICBib29sIGlzUHJv
ZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgQVZNZWRpYUNhcHR1
cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJiwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSk7CkBAIC05MSw3ICs5MCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0
ZToKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwotICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKIAog
ICAgIHZvaWQgYmVnaW5Db25maWd1cmF0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb21taXRDb25m
aWd1cmF0aW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KaW5kZXggMTIy
YmRiOGY0OTQwMThjMmMwNDVhYmY4NDc1ZDkxYTZhZTViZDcyYS4uNTY1YmQ5ODc1ZTUyYzM0ODUx
NjVlNjQwZTQyNzQxZjUzMmQ5ZmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQpA
QCAtMTQ4LDggKzE0OCw3IEBAIEFWTWVkaWFDYXB0dXJlU291cmNlOjpBVk1lZGlhQ2FwdHVyZVNv
dXJjZShBVkNhcHR1cmVEZXZpY2VUeXBlZGVmKiBkZXZpY2UsIGNvbnN0CiAgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxpbnQ+KEludGVycnVwdGlvblJlYXNvbjo6QXVkaW9JblVzZSkgPT0g
QVZDYXB0dXJlU2Vzc2lvbkludGVycnVwdGlvblJlYXNvbkF1ZGlvRGV2aWNlSW5Vc2VCeUFub3Ro
ZXJDbGllbnQsICJJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UgaXMgbm90IEFWQ2FwdHVy
ZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50
IGFzIGV4cGVjdGVkIik7CiAjZW5kaWYKICAgICAKLSAgICBzZXRQZXJzaXN0ZW50SUQoZGV2aWNl
LnVuaXF1ZUlEKTsKLSAgICBzZXRNdXRlZCh0cnVlKTsKKyAgICBzZXRQZXJzaXN0ZW50SUQoU3Ry
aW5nKGRldmljZS51bmlxdWVJRCkpOwogfQogCiBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6fkFWTWVk
aWFDYXB0dXJlU291cmNlKCkKQEAgLTI2MiwxNyArMjYxLDYgQEAgdm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6c2V0dXBTZXNzaW9uKCkKICAgICBbbV9zZXNzaW9uIGNvbW1pdENvbmZpZ3VyYXRp
b25dOwogfQogCi12b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpyZXNldCgpCi17Ci0gICAgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKTsKLSAgICBtX2lzUnVubmluZyA9IGZhbHNlOwotICAg
IGZvciAoTlNTdHJpbmcgKmtleU5hbWUgaW4gc2Vzc2lvbktWT1Byb3BlcnRpZXMoKSkKLSAgICAg
ICAgW21fc2Vzc2lvbiByZW1vdmVPYnNlcnZlcjptX29iamNPYnNlcnZlci5nZXQoKSBmb3JLZXlQ
YXRoOmtleU5hbWVdOwotCi0gICAgc2h1dGRvd25DYXB0dXJlU2Vzc2lvbigpOwotICAgIG1fc2Vz
c2lvbiA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVT
ZXNzaW9uSXNSdW5uaW5nRGlkQ2hhbmdlKGJvb2wgc3RhdGUpCiB7CiAgICAgc2NoZWR1bGVEZWZl
cnJlZFRhc2soW3RoaXMsIHN0YXRlXSB7CkBAIC0yODAsMTkgKzI2OCwxMCBAQCB2b2lkIEFWTWVk
aWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZShib29sIHN0
YXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG1faXNSdW5uaW5nID0gc3RhdGU7
Ci0gICAgICAgIGlmIChtX211dGVkID09ICFtX2lzUnVubmluZykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBtX211dGVkID0gIW1faXNSdW5uaW5nOwotICAgICAgICBub3RpZnlNdXRl
ZE9ic2VydmVycygpOworICAgICAgICBub3RpZnlNdXRlZENoYW5nZSghbV9pc1J1bm5pbmcpOwog
ICAgIH0pOwogfQogCi1ib29sIEFWTWVkaWFDYXB0dXJlU291cmNlOjppc1Byb2R1Y2luZ0RhdGEo
KSBjb25zdAotewotICAgIHJldHVybiBtX2lzUnVubmluZzsKLX0KLQogI2lmIFBMQVRGT1JNKElP
UykKIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6OmNhcHR1cmVTZXNzaW9uUnVudGltZUVycm9y
KFJldGFpblB0cjxOU0Vycm9yPiBlcnJvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmNwcAppbmRleCA4YWY4MWZiMjNkZTY1YmY5ODc5MmQwMmQ0OTQ3ZTQzMDY4MTg2N2IyLi42
NzI4Y2IxNDJkMjM4MWY0YTU3MDg0NDAyZTU4ZTI5ZWU0NTA3NjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC02NDgsOCArNjQ4LDYgQEAgQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZShjb25zdCBTdHJpbmcmIGRldmljZUlELCBj
b25zdCBTdHIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoZGV2aWNlSUQsIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvLCBsYWJlbCkKICAgICAsIG1fY2FwdHVyZURldmljZUlEKHBl
cnNpc3RlbnRJRCkKIHsKLSAgICBtX211dGVkID0gdHJ1ZTsKLQogICAgIGF1dG8mIHVuaXQgPSBD
b3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKTsKIAogICAgIGluaXRpYWxpemVFY2hvQ2Fu
Y2VsbGF0aW9uKHVuaXQuZW5hYmxlRWNob0NhbmNlbGxhdGlvbigpKTsKQEAgLTY4MCwyMCArNjc4
LDExIEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVtb3ZlRWNob0NhbmNlbGxhdGlv
blNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmCiAKIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEp
Ci0gICAgICAgIHJldHVybjsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb3JlQXVkaW9DYXB0
dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKIAogICAg
IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCku
aXNQcm9kdWNpbmdEYXRhKCk7Ci0KLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX211dGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9hdWRpb1NvdXJj
ZVByb3ZpZGVyKQogICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNvcmVB
dWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1EZXNj
cmlwdGlvbigpKTsKQEAgLTcwMSwxMiArNjkwLDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291
cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBDb3JlQXVkaW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0gICAgbV9t
dXRlZCA9IHRydWU7CiAKICAgICBpZiAobV9hdWRpb1NvdXJjZVByb3ZpZGVyKQogICAgICAgICBt
X2F1ZGlvU291cmNlUHJvdmlkZXItPnVucHJlcGFyZSgpOwpAQCAtNzU2LDcgKzc0MCw3IEBAIEF1
ZGlvU291cmNlUHJvdmlkZXIqIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OmF1ZGlvU291cmNlUHJv
dmlkZXIoKQogewogICAgIGlmICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKSB7CiAgICAgICAgIG1f
YXVkaW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVh
dGUoKnRoaXMpOwotICAgICAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgICAgIGlmIChp
c1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci0+cHJl
cGFyZSgmQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkubWljcm9waG9uZUZvcm1hdCgp
LnN0cmVhbURlc2NyaXB0aW9uKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291
cmNlLmgKaW5kZXggODFkZmQ3NmMxYWFlY2EyM2VkZjJkODk5ZjU5YzJjZDc3YTdhNTU2My4uMjYz
YWRiZDdjMDdhZjBiYjc2Y2ViNWFmOTUwNjdjNjFmMTNmYWZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlv
Q2FwdHVyZVNvdXJjZS5oCkBAIC04MCw3ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Nh
cHR1cmVTb3VyY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBzdGFy
dFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmlu
YWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsgfQogCiAgICAgYm9vbCBhcHBseVZvbHVtZShkb3VibGUpIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICBib29sIGFwcGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOwpAQCAt
OTMsNyArOTIsNiBAQCBwcml2YXRlOgogCiAgICAgdWludDMyX3QgbV9jYXB0dXJlRGV2aWNlSUQg
eyAwIH07CiAKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IG1fY2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCmluZGV4IGIwZjI4M2IxZGM3NDJkZDA5YWY2
NTFkNzcyNWZjYWE2NzFjOGFjOTUuLmVjMmY0MDgxNDVkYzllNGVlMzVhNjE2MDgwMTdjY2NlNjVh
ZjdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KQEAgLTEw
NywxMyArMTA3LDYgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6On5Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYygpCiAgICAgfQogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpCi17Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNv
dXJjZTsKLX0KLQogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1
ZmZlcnModWludDMyX3QgZnJhbWVDb3VudCkKIHsKICAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlw
dGlvbik7CkBAIC0xNTgsNyArMTUxLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yzo6cmVuZGVyKGRvdWJsZSBkZWx0YSkKICAgICAgICAgdWludDMyX3QgYmlwQm9wQ291bnQgPSBz
dGQ6Om1pbihmcmFtZUNvdW50LCBiaXBCb3BSZW1haW4pOwogICAgICAgICBmb3IgKGF1dG8mIGF1
ZGlvQnVmZmVyIDogbV9hdWRpb0J1ZmZlckxpc3QtPmJ1ZmZlcnMoKSkgewogICAgICAgICAgICAg
YXVkaW9CdWZmZXIubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBtX3N0cmVhbUZvcm1hdC5t
Qnl0ZXNQZXJGcmFtZTsKLSAgICAgICAgICAgIGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsK
KyAgICAgICAgICAgIGlmICghbXV0ZWQoKSAmJiBlbmFibGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBtZW1jcHkoYXVkaW9CdWZmZXIubURhdGEsICZtX2JpcEJvcEJ1ZmZlcltiaXBCb3BTdGFydF0s
IHNpemVvZihGbG9hdDMyKSAqIGJpcEJvcENvdW50KTsKICAgICAgICAgICAgICAgICBhZGRIdW0o
SHVtVm9sdW1lLCBIdW1GcmVxdWVuY3ksIHNhbXBsZVJhdGUoKSwgbV9zYW1wbGVzUmVuZGVyZWQs
IHN0YXRpY19jYXN0PGZsb2F0Kj4oYXVkaW9CdWZmZXIubURhdGEpLCBiaXBCb3BDb3VudCk7CiAg
ICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQppbmRleCBhZDQ1NjU2MTU4YTg3NzBmMjgwNjYyMjM4YWYzNGU3YzgyYmQ2NTlmLi4wMGIzYTdl
MDkyMTFlNmZmYjI5ZDA2N2M4YTYzODUzZmZjZTBjZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjLm1tCkBAIC02NSwxMyArNjUsNiBAQCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJiBuYW1l
KQogewogfQogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7Ci0gICAgcmV0dXJuIHNvdXJjZTsKLX0KLQogUmV0YWlu
UHRyPENNU2FtcGxlQnVmZmVyUmVmPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYzo6Q01TYW1w
bGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlcikKIHsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcAppbmRleCBhNGY5YjM4YWUyYTI4YjdkNzA3OWVjNzNhZGM4NGFmZDg1ZDM0ODJh
Li5hYzgyYzY2N2ZkNTA0YTU3Yjc3OGQ4YzE5N2Q5ZTUzNGJkMThiMGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpB
dWRpb1RyYWNrSW50ZXJmYWNlPiYmIGF1ZGlvVHJhY2ssIFN0cmluZyYmIGF1ZGlvVHJhY2tJZCkK
IHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlKFdURk1vdmUoYXVkaW9UcmFjayksIFdURk1vdmUoYXVkaW9UcmFja0lkKSkpOwotICAg
IHNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgc291cmNlLT5zdGFydCgpOwogICAg
IHJldHVybiBzb3VyY2U7CiB9CiAKQEAgLTU1LDYgKzU1LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UocnRjOjpzY29wZWRfcmVmcHRy
PHdlYnIKICAgICA6IFJlYWx0aW1lTWVkaWFTb3VyY2UoV1RGTW92ZShhdWRpb1RyYWNrSWQpLCBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbywgU3RyaW5nKCkpCiAgICAgLCBtX2F1ZGlv
VHJhY2soV1RGTW92ZShhdWRpb1RyYWNrKSkKIHsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9h
dWRpb1RyYWNrKTsKIH0KIAogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCkKQEAgLTYzLDcgKzY0LDcgQEAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlOjp+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCkKICAgICAgICAgbV9hdWRp
b1NvdXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gbnVsbHB0cjsKICAgICB9Ci0gICAgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzdG9w
KCk7CiB9CiAKIApAQCAtMTEyLDIwICsxMTMsMTIgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyU2FtcGwK
IAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAg
bV9hdWRpb1RyYWNrLT5BZGRTaW5rKHRoaXMpOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2lu
Z0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7
CiAgICAgaWYgKG1fYXVkaW9UcmFjaykKICAgICAgICAgbV9hdWRpb1RyYWNrLT5SZW1vdmVTaW5r
KHRoaXMpOwogfQpAQCAtMTM2LDcgKzEyOSw4IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpCiAg
ICAgQVNTRVJUKHRyYWNrKTsKIAogICAgIG1fYXVkaW9UcmFjayA9IFdURk1vdmUodHJhY2spOwot
ICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV9hdWRp
b1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIG1fYXVkaW9UcmFj
ay0+QWRkU2luayh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCmluZGV4IDg1MmNlOTdmMjI5M2VjOTMwMWI3NDE4MGVlN2FjNTkxYjIzNWNkM2QuLjYy
NWUzZDk4OGI3MjQwYjc0NThjNDhiYzlhZmJjY2QyMGFhMzA1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgKQEAgLTY3LDE0ICs2NywxMSBAQCBwcml2YXRlOgog
ICAgIE1lZGlhQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKCkgeyByZXR1cm4gKm1fY29uc3RyYWlu
dHMuZ2V0KCk7IH0KICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IHN1cHBvcnRlZENvbnN0cmFpbnRzKCk7CiAKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdEYXRhOyB9Ci0KICAgICBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKICAgICBSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgUmVhbHRpbWVNZWRpYVNv
dXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzIG1fc3VwcG9ydGVkQ29uc3RyYWludHM7CiAgICAgUmVm
UHRyPE1lZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgYm9vbCBtX2lzUHJvZHVj
aW5nRGF0YSB7IGZhbHNlIH07CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwogCiAgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNlUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGY1MDk2ZmIwZjBhMDYxZDQ1OWMxMWFk
MmYxMTA2ZGYxMzUzYmExNWEuLjE0ZjhlMTg4YWIwMDA3ZGM3NTA0MTIzYzY4MWJiYzQ0YWZlOTYz
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFJlZjxSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U+IFJlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRlKHJ0Yzo6c2NvcGVkCiAgICAgUGl4ZWxCdWZmZXJDb25m
b3JtZXJDViBjb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucy5nZXQoKSk7CiAKICAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0UmVmKCpuZXcgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKFdURk1vdmUo
dmlkZW9UcmFjayksIFdURk1vdmUodHJhY2tJZCksIGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpKTsK
LSAgICBzb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsK
ICAgICByZXR1cm4gc291cmNlOwogfQogCkBAIC02NywxNyArNjcsMTMgQEAgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UocnRjOjpzY29wZWRf
cmVmcHRyPHdlYnIKICAgICAsIG1fdmlkZW9UcmFjayhXVEZNb3ZlKHZpZGVvVHJhY2spKQogICAg
ICwgbV9jb25mb3JtZXIoY29uZm9ybWVyT3B0aW9ucykKIHsKLSAgICBtX211dGVkID0gIW1fdmlk
ZW9UcmFjazsKICAgICBtX2N1cnJlbnRTZXR0aW5ncy5zZXRXaWR0aCg2NDApOwogICAgIG1fY3Vy
cmVudFNldHRpbmdzLnNldEhlaWdodCg0ODApOworICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3Zp
ZGVvVHJhY2spOwogfQogCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKICAgICBpZiAobV92aWRlb1Ry
YWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPkFkZE9yVXBkYXRlU2luayh0aGlzLCBydGM6OlZp
ZGVvU2lua1dhbnRzKCkpOwogfQpAQCAtODcsMTggKzgzLDE0IEBAIHZvaWQgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXRTb3VyY2VUcmFjayhydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRj
OjpWaWRlCiAgICAgQVNTRVJUKCFtX3ZpZGVvVHJhY2spOwogICAgIEFTU0VSVCh0cmFjayk7CiAK
LSAgICBtX211dGVkID0gZmFsc2U7Ci0gICAgbV92aWRlb1RyYWNrID0gdHJhY2s7Ci0gICAgaWYg
KG1faXNQcm9kdWNpbmdEYXRhKQorICAgIG1fdmlkZW9UcmFjayA9IFdURk1vdmUodHJhY2spOwor
ICAgIG5vdGlmeU11dGVkQ2hhbmdlKCFtX3ZpZGVvVHJhY2spOworICAgIGlmIChpc1Byb2R1Y2lu
Z0RhdGEoKSkKICAgICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRj
OjpWaWRlb1NpbmtXYW50cygpKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX3ZpZGVvVHJhY2spCiAgICAgICAgIG1fdmlkZW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzMyw3ICsxMjUsNyBAQCBDVlBpeGVsQnVmZmVyUmVmIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZShjb25zdCB3ZQogCiB2b2lkIFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJh
bWUmIGZyYW1lKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgaWYgKCFpc1By
b2R1Y2luZ0RhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IHBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZS5oCmluZGV4IDQyZjkyNmY0MWNhYzBjMThkODRmY2Y0ZjJkNmI5NDA1
ZmU5ZTBiMDAuLmQ0YTNmNDNmODAyYmM5MDQ0ODc3Yjc5YTlhNzIyNjg5MGEzYjIxYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgKQEAgLTY2LDcgKzY2LDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcHJvY2Vzc05ld1NhbXBsZShDTVNhbXBsZUJ1ZmZlclJlZiwg
dW5zaWduZWQsIHVuc2lnbmVkLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbik7CiAKLSAgICBi
b29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNQcm9kdWNpbmdE
YXRhICYmIG1fYnVmZmVyOyB9CiAgICAgYm9vbCBhcHBseVNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlCkBA
IC03OCw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
IG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25z
dHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9
OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZhY2U+IG1f
dmlkZW9UcmFjazsKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IG1fYnVmZmVyOwog
ICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YgbV9jb25mb3JtZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KaW5kZXggOTRlYzI1ZTViODliYTRiNDU4OWI4
ZTliNWI3NzgxYmQ1OGIyOTY3ZS4uZDNhYTk2ODgzODhiMjMwMWE3NDAxNjcwMTBkZmZhZjVjYWZm
MWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnNl
dENsaWVudChBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgaWYgKG1fY2xp
ZW50ICYmICFtX2Nvbm5lY3RlZCkgewogICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CiAgICAg
ICAgIG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAgICBtX2NhcHR1
cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgICAgICBtX2NhcHR1cmVTb3VyY2Ut
PnN0YXJ0KCk7CiAgICAgfSBlbHNlIGlmICghbV9jbGllbnQgJiYgbV9jb25uZWN0ZWQpIHsKICAg
ICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1f
Y29ubmVjdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcApp
bmRleCA2MTVlYzllMWQ4YjUwNzNlYmRmODkxNjcxOThkOTkyMjY0MDYzOTI2Li44YTU4NDg2NzI1
NDgzYzJkY2UwYTQyNDRiNGVkZTE1ZmJmYWJkMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRPd3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFF
bmRwb2ludE93ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIE1lZGlhRW5kcG9pbnRPd3I6
OnVubXV0ZVJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgT3dyTWVkaWFTb3VyY2UqIHJl
YQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFyZW1vdGVTb3VyY2UtPnN0b3Bw
ZWQoKSkKKyAgICBpZiAocmVtb3RlU291cmNlLT5pc1Byb2R1Y2luZ0RhdGEoKSkKICAgICAgICAg
cmVtb3RlU291cmNlLT5zd2FwT3V0U2hhbGxvd1NvdXJjZSgqcmVhbFNvdXJjZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKaW5kZXggM2FlMzc2Mjdh
ODgwNTRhNzkwYzE5NzA2NDdiNTRiY2ZkYzJhZDE1NS4uN2NmYmY3OGYyNThkOTA4YTU0NGI5OWIx
ZWM5ODI4NGI1MzNlNGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlT3dyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291
cmNlT3dyLmgKQEAgLTU1LDcgKzU1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZU93cihPd3JNZWRp
YVNvdXJjZSogbWVkaWFTb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQsIFJlYWx0aW1lTWUKICAgICAs
IG1fbWVkaWFTb3VyY2UobWVkaWFTb3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIW1lZGlhU291
cmNlKQotICAgICAgICAgICAgbV9tdXRlZCA9IHRydWU7CisgICAgICAgICAgICBub3RpZnlNdXRl
ZENoYW5nZSh0cnVlKTsKICAgICB9CiAKIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoY29uc3QgU3Ry
aW5nJiBpZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVu
ZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGM0N2U3NWI3NGI0NTQxMzYxOGM0MjU4M2VjODc4ZThiMDk2Y2M4NWEuLjM3
NWNlN2RmZGJjZjYxYmUwODIzOTU0MjgwNjNmNjA3ZDg0MzEwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yMDgsNyAr
MjA4LDcgQEAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tNZWRpYUVuZHBvaW50OjpjcmVh
dGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcKICAgICB9CiAKICAgICBtX211dGVkUmVt
b3RlU291cmNlcy5zZXQobWlkLCBzb3VyY2UpOwotICAgIHJldHVybiAqc291cmNlOworICAgIHJl
dHVybiBzb3VyY2UucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBNb2NrTWVkaWFFbmRwb2lu
dDo6cmVwbGFjZVNlbmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgbmV3U291cmNlLCBjb25z
dCBTdHJpbmcmIG1pZCkKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIE1vY2tNZWRpYUVuZHBvaW50
Ojp1bm11dGVSZW1vdGVTb3VyY2VzQnlNaWQoKQogCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50Ojp1
bm11dGVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlID0gbV9tdXRlZFJlbW90ZVNvdXJjZXMuZ2V0KG1fbWlkc09mU291cmNlc1RvVW5tdXRlLnRh
a2VMYXN0KCkpOworICAgIGF1dG8qIHNvdXJjZSA9IG1fbXV0ZWRSZW1vdGVTb3VyY2VzLmdldCht
X21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgpKTsKICAgICBpZiAoc291cmNlKQogICAg
ICAgICBzb3VyY2UtPnNldE11dGVkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCA1ODFi
ZTI5YzQ4N2I1NTMzODYzNTE0MGFmZmNkZmRmYWVkNzdhYWI0Li5jODVkOWNlYTUxNDFlNThiZjc0
MzRhOGE0NTQ0NjNiNDE0ZWY3N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNjUsMTQgKzY1LDE0
IEBAIENhcHR1cmVTb3VyY2VPckVycm9yIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9y
RXJyb3IoV1RGTW92ZShzb3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQdHI8TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBT
dHJpbmcmIG5hbWUpCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBz
b3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UobmFtZSkpOwotICAg
IHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKKyAgICBzb3VyY2UtPm5vdGlmeU11dGVk
Q2hhbmdlKHRydWUpOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5kaWYKIAogc3RhdGljIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlRmFjdG9yeSYgbW9ja0F1ZGlvQ2FwdHVyZVNvdXJjZUZhY3Rv
cnkoKQogewpAQCAtMTIxLDExICsxMjEsNiBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
Ojppbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNvdXJjZQogCiB2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1vY2tBdWRpb0NhcHR1
cmVTb3VyY2VGYWN0b3J5KCkuc2V0QWN0aXZlU291cmNlKCp0aGlzKTsKICNlbmRpZgpAQCAtMTMz
LDIwICsxMjgsMTIgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNp
bmdEYXRhKCkKICAgICBpZiAoIXNhbXBsZVJhdGUoKSkKICAgICAgICAgc2V0U2FtcGxlUmF0ZSgh
ZGV2aWNlSW5kZXgoKSA/IDQ0MTAwIDogNDgwMDApOwogCi0gICAgTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotCiAgICAgbV9zdGFydFRpbWUgPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRl
ckludGVydmFsKCkpOwogfQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKLQotICAgIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwog
ICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0
YXJ0VGltZTsKICAgICBtX3N0YXJ0VGltZSA9IE5BTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAppbmRleCA2N2VlNTll
NmIwNWE0N2M4MWMxOGI1OTBkNDVmOTdhOTdmMDlkMDcxLi4zYTE5ZmEwN2RiOWIyZjQzOWNkZjZm
ZmVlMGIwZjk1ZmU0MzI5OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
IHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JFcnJvciBjcmVhdGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAgIHN0YXRpYyBSZWZQdHI8
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7
CisgICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBBdWRpb0NhcHR1cmVGYWN0b3J5JiBmYWN0
b3J5KCk7CiAKQEAgLTU0LDcgKzU0LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzdGFydFBy
b2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7
Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJv
ZHVjaW5nRGF0YTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihkb3VibGUpIHsgfQogCkBA
IC04MCw3ICs3OSw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lIHsgTkFOIH07
CiAgICAgZG91YmxlIG1fbGFzdFJlbmRlclRpbWUgeyBOQU4gfTsKICAgICBkb3VibGUgbV9lbGFw
c2VkVGltZSB7IDAgfTsKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggNzY3MjNhZWFj
NmJhODRjNzcwNTQ1YzE3M2JhZGUzODAwNDE5ZDEyZS4uNDQwYmI5OGQ2ZDI4NjA3ZDRiNmY5MDJk
OTNmYWJkMGQzNzRjOTMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTgwLDExICs4MCwxMSBAQCBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgUmVhbHRpbWVNZWRpYQogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW86CiAgICAgICAgIG1fZGV2aWNlSW5kZXggPSBu
YW1lID09IGF1ZGlvRGV2aWNlcygpWzBdLmxhYmVsKCkgPyAwIDogMTsKLSAgICAgICAgc2V0UGVy
c2lzdGVudElEKGF1ZGlvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKTsK
KyAgICAgICAgc2V0UGVyc2lzdGVudElEKFN0cmluZyhhdWRpb0RldmljZXMoKVttX2RldmljZUlu
ZGV4XS5wZXJzaXN0ZW50SWQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzoKICAgICAgICAgbV9kZXZpY2VJbmRleCA9IG5hbWUg
PT0gdmlkZW9EZXZpY2VzKClbMF0ubGFiZWwoKSA/IDAgOiAxOwotICAgICAgICBzZXRQZXJzaXN0
ZW50SUQodmlkZW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVyc2lzdGVudElkKCkpOworICAg
ICAgICBzZXRQZXJzaXN0ZW50SUQoU3RyaW5nKHZpZGVvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhd
LnBlcnNpc3RlbnRJZCgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTMyLDE4ICsxMzIsNiBAQCBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMm
IE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdXBwb3J0ZWRDb25zdAogICAgIHJldHVybiBtX3N1
cHBvcnRlZENvbnN0cmFpbnRzOwogfQogCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEoKQotewotICAgIG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKLSAg
ICBzZXRNdXRlZChmYWxzZSk7Ci19Ci0KLXZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0
b3BQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotICAg
IHNldE11dGVkKHRydWUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDlhNWFkMWQyMDQ4MjA0ZTAw
NTJiYjVkNjU3ZTI2Mjg1NmMxYmNhYWQuLjUwNmU0ODJhMmNmYWM2ZmMzODVhMGVlMDUxZWU1MjA3
ZGM3OTRhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTY1LDkgKzY1LDYgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRpbWVNZWRp
YVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgPSAwOwogI2VuZGlmCiAKLSAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEo
KSBvdmVycmlkZTsKLQogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMm
IGNhcGFiaWxpdGllcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFT
b3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtODQsMTQgKzgx
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplU2V0dGluZ3MoKTsKICNlbmRpZgog
Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lz
UHJvZHVjaW5nRGF0YTsgfQotCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3Vy
cmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50
cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKICAgICBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKICAgICB1bnNpZ25lZCBtX2RldmljZUluZGV4IHsg
MCB9OwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCAwZjE3OTE5Nzk2ZjY4ZThkOTlj
ZTJjOTBiODZlYmNmMTM4YjVlYTM0Li4yYWQ3YWIzNTNkYTAwYmU1ZWFhNTNhM2NiMDE1NTAzNTk2
MjgxMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtNzIsMTQgKzcyLDE0IEBAIENhcHR1cmVTb3Vy
Y2VPckVycm9yIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBNCiAKICAgICByZXR1cm4gQ2FwdHVyZVNvdXJjZU9yRXJyb3IoV1RGTW92ZShz
b3VyY2UpKTsKIH0KKyNlbmRpZgogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCitS
ZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVh
dGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgYXV0byBzb3VyY2UgPSBhZG9wdFJl
ZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UobmFtZSkpOwotICAgIHNvdXJjZS0+bV9tdXRl
ZCA9IHRydWU7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKG5hbWUpKTsKKyAgICBzb3VyY2UtPm5vdGlmeU11dGVkQ2hhbmdlKHRydWUpOwog
ICAgIHJldHVybiBzb3VyY2U7CiB9Ci0jZW5kaWYKIAogc3RhdGljIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlRmFjdG9yeSYgbW9ja1ZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKQogewpAQCAtMTEy
LDE2ICsxMTIsMTAgQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6On5Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZSgpCiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSB0cnVlOwotICAgIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBtb2NrVmlkZW9DYXB0dXJlU291cmNlRmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgq
dGhpcyk7CiAjZW5kaWYKIAotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1
Y2luZ0RhdGEoKTsKICAgICBpZiAoc2l6ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBzZXRXaWR0
aCg2NDApOwogICAgICAgICBzZXRIZWlnaHQoNDgwKTsKQEAgLTEzMywxMiArMTI3LDYgQEAgdm9p
ZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQogewotICAgIGlmICgh
bV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2lzUHJvZHVj
aW5nRGF0YSA9IGZhbHNlOwotICAgIAotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSgpOwogICAgIG1fdGltZXIuc3RvcCgpOwogICAgIG1fZWxhcHNlZFRpbWUg
Kz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKICAgICBtX3N0
YXJ0VGltZSA9IE5BTjsKQEAgLTM4NCw3ICszNzIsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpnZW5lcmF0ZUZyYW1lKCkKICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KEZsb2F0UG9p
bnQoKSwgc2l6ZSk7CiAgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBzaXplKSwgIWRldmljZUluZGV4KCkgPyBDb2xvcjo6YmxhY2sgOiBDb2xvcjo6ZGFya0dyYXkp
OwogCi0gICAgaWYgKCFtX211dGVkICYmIG1fZW5hYmxlZCkgeworICAgIGlmICghbXV0ZWQoKSAm
JiBlbmFibGVkKCkpIHsKICAgICAgICAgZHJhd1RleHQoY29udGV4dCk7CiAgICAgICAgIGRyYXdB
bmltYXRpb24oY29udGV4dCk7CiAgICAgICAgIGRyYXdCb3hlcyhjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uu
aAppbmRleCBjNDM5YWRkMmVhNmNlOTdiNTQxMjM3MDZjMGUzMzdlYTA2YWMyMjMzLi5jNzU2OGUy
ZWIzODdlMzUxYmRiYzU5NGI0MjhkZmYyOTY4YjhjMjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlIDogcHVibGljIE1vY2tSZWFs
dGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBDYXB0dXJlU291cmNlT3JF
cnJvciBjcmVhdGUoY29uc3QgU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwotICAg
IHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0
IFN0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4g
Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIHN0YXRpYyBWaWRlb0NhcHR1
cmVGYWN0b3J5JiBmYWN0b3J5KCk7CiAKQEAgLTY5LDcgKzY5LDYgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpIGZpbmFsOwotICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KIAogICAgIHZvaWQgZHJhd0FuaW1hdGlvbihHcmFw
aGljc0NvbnRleHQmKTsKICAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYpOwpAQCAt
MTAzLDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9mcmFtZU51bWJlciB7IDAg
fTsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBtX3RpbWVy
OwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDZjZGJhMWY3
NTkzYjBlNGUyYTU3OTE1ODMwMDU1Zjc3MDFkOTNhNjkuLmVlODEyZDllZjUyNzczM2I0ODMwMjc3
OGEyMjk2MWVjOTM4ZDUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKQEAgLTE1
NCwxNCArMTU0LDE0IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQ
cm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8gaXRlciA9IG1fcHJveGllcy5m
aW5kKGlkKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIGl0ZXIt
PnZhbHVlLT5zb3VyY2UoKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgaXRlci0+dmFs
dWUtPnNvdXJjZSgpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQ
cm94eTo6c3RvcFByb2R1Y2luZ0RhdGEodWludDY0X3QgaWQpCiB7CiAgICAgYXV0byBpdGVyID0g
bV9wcm94aWVzLmZpbmQoaWQpOwogICAgIGlmIChpdGVyICE9IG1fcHJveGllcy5lbmQoKSkKLSAg
ICAgICAgaXRlci0+dmFsdWUtPnNvdXJjZSgpLnN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgICAg
IGl0ZXItPnZhbHVlLT5zb3VyY2UoKS5zdG9wKCk7CiB9CiAKIHZvaWQgVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eTo6Y2FwYWJpbGl0aWVzKHVpbnQ2NF90IGlkLCBXZWJDb3JlOjpSZWFsdGlt
ZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwCmluZGV4IGE5MzczN2U5MGY5ZjVjMmM4Y2M1ZDlkYWQ5N2NiNDJlZmM1ZjAwNWIuLmIzZWUz
Y2QxMjhhOTczM2Y0ODY4MmI0ZDZiZjQ3ZThlYThlYjM2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwCkBAIC0xMTAsOCArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBXZWJBdWRpb0J1ZmZlckxp
c3QgYXVkaW9EYXRhKG1fZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKICAgICAgICAgbV9y
aW5nQnVmZmVyLmZldGNoKGF1ZGlvRGF0YS5saXN0KCksIG51bWJlck9mRnJhbWVzLCB0aW1lLnRp
bWVWYWx1ZSgpKTsKIAotICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKCkp
Ci0gICAgICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlv
RGF0YSwgbV9kZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOworICAgICAgICBSZWFsdGltZU1l
ZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBtX2Rlc2Ny
aXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBseUNvbnN0cmFp
bnRzU3VjY2VlZGVkKGNvbnN0IFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYg
c2V0dGluZ3MpCkBAIC0xMjcsMjQgKzEyNiw2IEBAIHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2tz
LmZhaWx1cmVIYW5kbGVyKGZhaWxlZENvbnN0cmFpbnQsIGVycm9yTWVzc2FnZSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYg
KG1fbXV0ZWQgPT0gbXV0ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9tdXRl
ZCA9IG11dGVkOwotICAgICAgICBtX21hbmFnZXIuc2V0TXV0ZWQobV9pZCwgbV9tdXRlZCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgZmluYWwKLSAgICB7Ci0g
ICAgICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgICAgICBtX21hbmFnZXIuc2V0RW5hYmxl
ZChtX2lkLCBtX2VuYWJsZWQpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIGZpbmFsIHsgbV9tYW5hZ2VyLnN0YXJ0UHJvZHVjaW5nRGF0YShtX2lkKTsg
fQogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdG9wUHJv
ZHVjaW5nRGF0YShtX2lkKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310161</attachid>
            <date>2017-05-15 13:58:36 -0700</date>
            <delta_ts>2017-05-15 16:35:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171999-20170515135835.patch</filename>
            <type>text/plain</type>
            <size>57496</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlNzlmODZmNTk0NzQ0
ZjAyN2M0NGMwYmI3NmUxZjVkZTg5OTAwNi4uN2EyMmI0ODMzNjZmYjIyMjZmMTU1N2RmZTdjM2U4
MmFkNTE0ODU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSB0YWtlcyAz
IGJvb2xlYW5zOgorICAgICAgICAtIG1faXNQcm9kdWNpbmdEYXRhIHRlbGxzIHdoZXRoZXIgZGF0
YSBpcyBwcm9kdWNlZCBvciBub3QuIEluIHRoZSBjYXNlIG9mIGNhcHR1cmluZywgaXQgdGVsbHMg
d2hldGhlciBjYXB0dXJlCisgICAgICAgICAgaGFwcGVucy4KKyAgICAgICAgLSBtX211dGVkL21f
ZW5hYmxlZCBhbGxvd3MgSlMgb3IgV2ViS2l0IGxldmVsIHRvIHN0YXJ0L3N0b3AgdGhlIHNvdXJj
ZS4KKworICAgICAgICBDaGFuZ2VkIE1lZGlhU3RyZWFtIGNhcHR1cmUgc3RhdGUgY29tcHV0YXRp
b24gc28gdGhhdCBjYXB0dXJlIGlzIHJlcG9ydGVkIGFzIGZvbGxvd3M6CisgICAgICAgIC0gbV9p
c1Byb2R1Y2luZyBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbm5pbmcgYW5kIGlzIGFjdGl2ZQor
ICAgICAgICAtIG1fbXV0ZWQgaXMgdHJ1ZSwgY2FwdHVyZSBpcyBoYXBwZW5pbmcgYnV0IGlzIGlu
YWN0aXZlLgorCisgICAgICAgIEV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBXZWJSVEMgaW5jb21pbmcg
c291cmNlcywgZm9yIHdoaWNoIHNvdXJjZXMgbWF5IGJlIGNyZWF0ZWQgYXMgbXV0ZWQgYXMgcGVy
IHRoZSBzcGVjLAorICAgICAgICBhbGwgc291cmNlcyBhcmUgdW5tdXRlZCwgZW5hYmxlZCBhbmQg
bm90IHByb2R1Y2luZyBkYXRhIHdoZW4gY3JlYXRlZC4KKworICAgICAgICBSZWFsdGltZU1lZGlh
U291cmNlIGlzIG5vdyBhY3RpdmFibGUgZWl0aGVyIGJ5IGNhbGxpbmcgc3RhcnQvc3RvcCBvciBi
eSBjYWxsaW5nIHNldE11dGVkL3NldEVuYWJsZWQuCisgICAgICAgIFRoaXMgaW4gdHVybnMgd2ls
bCBzZXQgdGhlIGJvb2xlYW4gdmFsdWVzIGFjY29yZGluZ2x5IGFuZCB3aWxsIGNhbGwgdGhlIHVu
ZGVybHlpbmcKKyAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhL3N0b3BQcm9kdWNpbmdEYXRhIG1l
dGhvZHMgZG9pbmcgdGhlIGFjdHVhbCBzdHVmZi4KKworICAgICAgICBSZW1vdmluZyBmcm9tIGFs
bCBSZWFsdGltZU1lZGlhU291cmNlIHN1YmNsYXNzZXMgdGhlIGhhbmRsaW5nIG9mIHByb2R1Y2lu
ZyBkYXRhLgorICAgICAgICBNYWtpbmcgbW9yZSBtZXRob2RzIG5vbi12aXJ0dWFsL21lbWJlciBm
aWVsZHMgcHJpdmF0ZSB0byBzaW1wbGlmeSB0aGUgbW9kZWwuCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzRGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpT
b3VyY2U6OmNhcHR1cmVDYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjptZWRp
YVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6bm90aWZ5TXV0ZWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVlc3RTdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJl
U2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmlzUHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJhbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVuZHBvaW50Ojpj
cmVhdGVNdXRlZFJlbW90ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFFbmRw
b2ludDo6dW5tdXRlVGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6Y3JlYXRlTXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNy0wNS0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDogTGVhZGluZyB3aGl0ZXNwYWNlIGZvbGxv
d2VkIGJ5IGEgPGJyPiBwcm9kdWNlcyBhbiBleHRyYSBsaW5lYnJlYWsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
N2IxOWZmNzFjN2VkODI2MzI5YzRkZTc0ZGY1ZmU3MjdkNmI0YzE2ZC4uOThiMDdmMTc5NmZmZGQw
ZDc0NDUyNDMzMjlkMWQ3ODVlZTU4OTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA1LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBSZWFsdGltZU1lZGlhU291cmNlIGRhdGEgcHJvZHVjdGlvbiBhbmQgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RvcFByb2R1Y2luZ0Rh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorCiAyMDE3LTA1LTE0ICBEYWV3b29uZyBKYW5nICA8ZGFld29vbmcuamFuZ0BuYXZlcmNv
cnAuY29tPgogCiAgICAgICAgIFtDb29yZGluYXRlZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIGZp
bGVzIGFuZCBsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRl
eCAzZjdiMmMxODhiNTk5ODBhMmQ1Y2ZiYTg3NmU5NGI5MTg3MjBhOGRlLi41ZTA1YzNlNThkY2Q1
MzY3YzllMThlMTQ2MDBmNzM4MmEzY2EwMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmNwcApAQCAtNDgsNyArNDgsNyBAQCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udAog
UmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U+IENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFz
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKQogewogICAgIGF1dG8g
c291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoY2FudmFzLCBXVEZNb3ZlKGZyYW1lUmVxdWVz
dFJhdGUpKSk7Ci0gICAgc291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzb3VyY2Ut
PnN0YXJ0KCk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtzb3VyY2UgPSBzb3VyY2UuY29weVJl
ZigpXSB7CiAgICAgICAgIGlmICghc291cmNlLT5tX2NhbnZhcykKQEAgLTc2LDEwICs3Niw2IEBA
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFz
RWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wCiAKIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2s6OlNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1
Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7
Ci0KICAgICBpZiAoIW1fY2FudmFzKQogICAgICAgICByZXR1cm47CiAgICAgbV9jYW52YXMtPmFk
ZE9ic2VydmVyKCp0aGlzKTsKQEAgLTkzLDEwICs4OSw2IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7
Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNQ
cm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0KICAgICBtX3JlcXVlc3RGcmFtZVRpbWVyLnN0b3AoKTsK
IAogICAgIGlmICghbV9jYW52YXMpCkBAIC0xMTMsNyArMTA1LDcgQEAgdm9pZCBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0Vs
ZW1lbnQmIGMKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNhbnZhcywgbV9jYW52YXMgPT0gJmNhbnZh
cyk7CiAKLSAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOworICAgIHN0b3AoKTsKICAgICBtX2NhbnZh
cyA9IG51bGxwdHI7CiB9CiAKQEAgLTE1MCw3ICsxNDIsNyBAQCB2b2lkIENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhcHR1cmVDYW52YXMoKQogewogICAgIEFTU0VSVCht
X2NhbnZhcyk7CiAKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAgIGlmICghaXNQcm9k
dWNpbmdEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ZyYW1lUmVxdWVzdFJh
dGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAppbmRleCBhZDI1YWRlYTcw
YThkYjY4NzFkNmJiMGEwOGFlZmQ2NGY3NTEwZDY4Li5jZTA3N2NkNjE1YjBjZjg3NDU5ZjRjMGM5
OWY5YjY5MDkzZTJiMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCkBA
IC02Miw3ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2Ug
QVBJCiAgICAgICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgICAgIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7Ci0gICAgICAgIGJvb2wgaXNQcm9kdWNpbmdE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KICAgICAgICAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmls
aXRpZXMoKTsgfQogICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNl
dHRpbmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgICAgICBib29s
IGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzAs
NyArNjksNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGNhcHR1cmVDYW52YXMoKTsKICAgICAg
ICAgdm9pZCByZXF1ZXN0RnJhbWVUaW1lckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBtX2lzUHJv
ZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0RnJhbWUgeyB0
cnVlIH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7
CiAgICAgICAgIFRpbWVyIG1fcmVxdWVzdEZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDI2ZjU0ZTA4MGFm
Y2I5OTkwNGY4ZDIyZDZkYzk5ODc4N2NkNTJmNDQuLjMxYWQ3Y2ZiZTU4OGEzNjA3MDhjZWIzY2M4
MTNlMGFhOGJmMTdlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgTWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzIE1lZGlhU3RyZWFtOjptZWRpYVN0YXRlKCkgY29uc3QKICAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+aGFzQ2FwdHVyZUF1ZGlvU291cmNlKCkpIHsKICAgICAgICAgICAgIGlm
IChtX3ByaXZhdGUtPm11dGVkKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0gSGFzTXV0ZWRB
dWRpb0NhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2lzUHJvZHVjaW5nRGF0
YSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhICYmIG1fcHJpdmF0ZS0+
aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0gSGFzQWN0aXZlQXVk
aW9DYXB0dXJlRGV2aWNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzU2LDcgKzM1Niw3IEBAIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBNZWRpYVN0cmVhbTo6bWVkaWFTdGF0ZSgpIGNv
bnN0CiAgICAgICAgIGlmIChtX3ByaXZhdGUtPmhhc0NhcHR1cmVWaWRlb1NvdXJjZSgpKSB7CiAg
ICAgICAgICAgICBpZiAobV9wcml2YXRlLT5tdXRlZCgpKQogICAgICAgICAgICAgICAgIHN0YXRl
IHw9IEhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlOwotICAgICAgICAgICAgZWxzZSBpZiAobV9p
c1Byb2R1Y2luZ0RhdGEpCisgICAgICAgICAgICBlbHNlIGlmIChtX2lzUHJvZHVjaW5nRGF0YSAm
JiBtX3ByaXZhdGUtPmlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICAgICAgICAgIHN0YXRlIHw9
IEhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5oCmluZGV4IDVlMjA0NmFkNWE0Y2VlYTg4ZGY1ZDNkYWIyNDlmZTNhMmQ2
NmM4MjEuLmFlZDM3OTE1OGQxYjdmMDVjY2M4YWZjYmM5Mjg1NzYwYTIzZTlhY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAKLSAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOyB9Ci0gICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0b3BQcm9kdWNpbmdEYXRhKCk7IH0K
KyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0YXJ0KCk7IH0KKyAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RvcCgpOyB9CiAgICAgYm9v
bCBpc1Byb2R1Y2luZ0RhdGEoKSB7IHJldHVybiBtX3NvdXJjZS0+aXNQcm9kdWNpbmdEYXRhKCk7
IH0KIAogICAgIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLT5pc0lz
b2xhdGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMWY0OTkzMTE1YWVmZjE5Mzkz
YWUzYTcyZDg3ZmU0YzQxNmViZGUxNS4uZjNjMTIwMTY0YWU1MWM2NTllZmUwZmY0YmE1MDlkOTBj
OWU2N2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTYwLDIxICs2MCwxNSBAQCBSZWFs
dGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5
cGUgdHlwZSwgY29uc3QgU3RyaQogICAgIG1fc3VwcHJlc3NOb3RpZmljYXRpb25zID0gZmFsc2U7
CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQotewotICAgIG1fc3RvcHBl
ZCA9IGZhbHNlOwotICAgIG1fbXV0ZWQgPSBmYWxzZTsKLX0KLQogdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciYgb2JzZXJ2
ZXIpCiB7Ci0gICAgbV9vYnNlcnZlcnMuYXBwZW5kKCZvYnNlcnZlcik7CisgICAgbV9vYnNlcnZl
cnMuYXBwZW5kKG9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0g
ICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJm9ic2VydmVyXShhdXRvKiBhbk9i
c2VydmVyKSB7Ci0gICAgICAgIHJldHVybiBhbk9ic2VydmVyID09ICZvYnNlcnZlcjsKKyAgICBt
X29ic2VydmVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8gYW5PYnNlcnZl
cikgeworICAgICAgICByZXR1cm4gJmFuT2JzZXJ2ZXIuZ2V0KCkgPT0gJm9ic2VydmVyOwogICAg
IH0pOwogCiAgICAgaWYgKCFtX29ic2VydmVycy5zaXplKCkpCkBAIC04MywzOSArNzcsMzkgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIKIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRN
dXRlZChib29sIG11dGVkKQogewotICAgIGlmIChtX3N0b3BwZWQgfHwgbV9tdXRlZCA9PSBtdXRl
ZCkKKyAgICBpZiAobXV0ZWQpCisgICAgICAgIHN0b3AoKTsKKyAgICBlbHNlCisgICAgICAgIHN0
YXJ0KCk7CisKKyAgICBub3RpZnlNdXRlZENoYW5nZShtdXRlZCk7Cit9CisKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKK3sKKyAgICBpZiAo
bV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVk
OwogCi0gICAgaWYgKG11dGVkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGZpZ3Vy
ZSBvdXQgaG93IHRvIGd1YXJhbnRlZSB0aGF0IGF0IGxlYXN0IG9uZSBibGFjayB2aWRlbyBmcmFt
ZSBpcwotICAgICAgICAvLyBlbWl0dGVkIGFmdGVyIGJlaW5nIG11dGVkLgotICAgICAgICBzdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIH0gZWxzZQotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEo
KTsKLQogICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6bm90aWZ5TXV0ZWRPYnNlcnZlcnMoKSBjb25zdAogewotICAgIGZvciAoYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZU11dGVkQ2hh
bmdlZCgpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAg
ICAgIG9ic2VydmVyLnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIGlmIChtX3N0b3BwZWQg
fHwgbV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKG1f
c3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+c291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAg
ICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZl
ci5zb3VyY2VFbmFibGVkQ2hhbmdlZCgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCkKQEAgLTEyOSw0OSArMTIzLDU3IEBAIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRh
c2soW3RoaXNdIHsKICAgICAgICAgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRp
b24gPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQot
ICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpOworICAgICAgICBm
b3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICAgICAgb2JzZXJ2
ZXIuc291cmNlU2V0dGluZ3NDaGFuZ2VkKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxl
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+dmlkZW9TYW1wbGVBdmFp
bGFibGUobWVkaWFTYW1wbGUpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCisgICAgICAgIG9ic2VydmVyLnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxl
KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
Y29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKQogewotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKLSAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0Rh
dGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIuYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAot
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0KCkKIHsKLSAgICBpZiAoc3RvcHBlZCgp
KQorICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
dG9wcGVkID0gdHJ1ZTsKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CisgICAgc3RhcnRQ
cm9kdWNpbmdEYXRhKCk7Cit9CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpIHsKLSAgICAgICAgaWYgKG9ic2VydmVyICE9IGNhbGxpbmdPYnNlcnZlcikKLSAg
ICAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VTdG9wcGVkKCk7Ci0gICAgfQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAg
ICAgICByZXR1cm47CiAKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIHN0b3BQ
cm9kdWNpbmdEYXRhKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0
b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKIHsKLSAgICBpZiAoc3RvcHBlZCgpKQorICAg
IGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoY29u
c3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewotICAgICAgICBpZiAob2JzZXJ2ZXIt
PnByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSkKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKSB7CisgICAgICAgIGlmIChvYnNlcnZlci5wcmV2ZW50U291cmNlRnJv
bVN0b3BwaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHN0b3AoY2FsbGlu
Z09ic2VydmVyKTsKKworICAgIHN0b3AoKTsKKworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVy
IDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKCZvYnNlcnZlciAhPSBjYWxsaW5nT2JzZXJ2
ZXIpCisgICAgICAgICAgICBvYnNlcnZlci5zb3VyY2VTdG9wcGVkKCk7CisgICAgfQogfQogCiBi
b29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxkb3VibGU+KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCmluZGV4IGMxYmY2NzI5ZGZiYmE1ZTA0NGUwN2E1NTIwYWVkNjBlZDI5
YmY3MmYuLmJjZjNhOTdjODgyMTMwZDI3ZjVjZDA1NDZkZmY2NmNhNmUwN2ZmYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgKQEAgLTEyNyw2MCArMTI3LDMwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwZXJz
aXN0ZW50SUQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJz
aXN0ZW50SUQgPSBwZXJzaXN0ZW50SUQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVu
dElEKFN0cmluZyYmIHBlcnNpc3RlbnRJRCkgeyBtX3BlcnNpc3RlbnRJRCA9IFdURk1vdmUocGVy
c2lzdGVudElEKTsgfQogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXVkaW8sIFZpZGVv
IH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9
Ci0gICAgCi0gICAgdmlydHVhbCB1bnNpZ25lZCBmaXRuZXNzU2NvcmUoKSBjb25zdCB7IHJldHVy
biBtX2ZpdG5lc3NTY29yZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwot
Ci0gICAgdXNpbmcgU3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47Ci0gICAg
dXNpbmcgRmFpbHVyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBi
YWRDb25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47Ci0gICAgdmlydHVhbCB2
b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5k
bGVyJiYsIEZhaWx1cmVIYW5kbGVyJiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiwgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludChj
b25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5n
c0RpZENoYW5nZSgpOworICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb2R1Y2luZ0RhdGE7IH0KKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7
CisgICAgdm9pZCByZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyID0gbnVsbHB0
cik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpOwot
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk7
CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2b2lkIHNl
dE11dGVkKGJvb2wpOwogICAgIAotICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcHBlZDsgfQotCi0gICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9t
dXRlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICBib29sIGVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwotCi0gICAgdmlydHVhbCBi
b29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKSB7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB2b2lk
IHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KICAgICAKKyAg
ICB1bnNpZ25lZCBmaXRuZXNzU2NvcmUoKSBjb25zdCB7IHJldHVybiBtX2ZpdG5lc3NTY29yZTsg
fQorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgc3RvcChPYnNlcnZlciogY2FsbGlu
Z09ic2VydmVyID0gbnVsbHB0cik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcChPYnNlcnZlciogY2Fs
bGluZ09ic2VydmVyID0gbnVsbHB0cik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLQot
ICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLQogICAgIHZvaWQgc2V0V2lkdGgoaW50KTsKICAgICB2b2lkIHNl
dEhlaWdodChpbnQpOwogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KQEAgLTIxNCw2ICsxODQsMjcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RWNob0Nh
bmNlbGxhdGlvbihib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9u
KGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9
IDA7CisKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsK
KyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3VjY2Vz
c0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMmKTsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNl
dHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJlU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb25pdG9yT3JpZW50
YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIHsgfQorCisgICAgdmlydHVhbCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0yMzEsMjYgKzIyMiwzMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3Ry
YWludCYpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4pOwogCi0gICAgY29uc3QgVmVjdG9yPE9ic2VydmVyKj4gb2JzZXJ2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9vYnNlcnZlcnM7IH0KLQogICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZl
cnMoKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplVm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1
bWU7IH0KICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7IG1f
c2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2FuY2Vs
bGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBlY2hv
Q2FuY2VsbGF0aW9uOyB9CiAKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9lbmFibGVkIHsgdHJ1ZSB9OwotCisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCk7CisgICAgCiBwcml2YXRlOgogICAgIFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgeyB9CisKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworCiAgICAgV2Vha1B0
ckZhY3Rvcnk8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBTdHJp
bmcgbV9pZDsKICAgICBTdHJpbmcgbV9wZXJzaXN0ZW50SUQ7CiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKKyAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+IG1fb2JzZXJ2ZXJzOwog
ICAgIEludFNpemUgbV9zaXplOwogICAgIGRvdWJsZSBtX2ZyYW1lUmF0ZSB7IDMwIH07CiAgICAg
ZG91YmxlIG1fYXNwZWN0UmF0aW8geyAwIH07CkBAIC0yNjEsOSArMjU3LDkgQEAgcHJpdmF0ZToK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2ZhY2lu
Z01vZGUgeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCiAgICAgYm9vbCBt
X2VjaG9DYW5jZWxsYXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIHsgZmFs
c2UgfTsKICAgICBib29sIG1fc3VwcHJlc3NOb3RpZmljYXRpb25zIHsgdHJ1ZSB9OworICAgIGJv
b2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IENhcHR1cmVTb3Vy
Y2VPckVycm9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKaW5kZXggZjg0OTAxMGY3Mzkz
NWU2Y2MwNGI1ZjUxZmEwYTI3Y2NkZDU5N2FhZi4uNzE1MDFjMGQ3YmRmZjhiMDRhMzM2MzYzYjM1
MWI5MjQyZWJkZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKQEAgLTY4LDcgKzY4
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0Rh
dGEoKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIEFWTWVkaWFDYXB0dXJlU291cmNl
KEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUpOwpAQCAtOTEsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBzZXR1cFNlc3Npb24oKTsKLSAgICB2b2lkIHJlc2V0KCkgZmluYWw7CiAKICAgICB2b2lk
IGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsOwogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDEyMmJkYjhmNDk0
MDE4YzJjMDQ1YWJmODQ3NWQ5MWE2YWU1YmQ3MmEuLjU2NWJkOTg3NWU1MmMzNDg1MTY1ZTY0MGU0
Mjc0MWY1MzJkOWZiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTE0OCw4
ICsxNDgsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2UoQVZD
YXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdAogICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UpID09IEFWQ2FwdHVy
ZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50
LCAiSW50ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9u
SW50ZXJydXB0aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBhcyBleHBl
Y3RlZCIpOwogI2VuZGlmCiAgICAgCi0gICAgc2V0UGVyc2lzdGVudElEKGRldmljZS51bmlxdWVJ
RCk7Ci0gICAgc2V0TXV0ZWQodHJ1ZSk7CisgICAgc2V0UGVyc2lzdGVudElEKFN0cmluZyhkZXZp
Y2UudW5pcXVlSUQpKTsKIH0KIAogQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5BVk1lZGlhQ2FwdHVy
ZVNvdXJjZSgpCkBAIC0yNjIsMTcgKzI2MSw2IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6
OnNldHVwU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbiBjb21taXRDb25maWd1cmF0aW9uXTsKIH0K
IAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVzZXQoKQotewotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlc2V0KCk7Ci0gICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKLSAgICBmb3IgKE5T
U3RyaW5nICprZXlOYW1lIGluIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIFttX3Nl
c3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlO
YW1lXTsKLQotICAgIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKTsKLSAgICBtX3Nlc3Npb24gPSBu
dWxscHRyOwotfQotCiB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklz
UnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQogewogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNr
KFt0aGlzLCBzdGF0ZV0gewpAQCAtMjgwLDE5ICsyNjgsMTAgQEAgdm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2lzUnVubmluZyA9IHN0YXRlOwotICAgICAg
ICBpZiAobV9tdXRlZCA9PSAhbV9pc1J1bm5pbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbV9tdXRlZCA9ICFtX2lzUnVubmluZzsKLSAgICAgICAgbm90aWZ5TXV0ZWRPYnNlcnZl
cnMoKTsKKyAgICAgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1faXNSdW5uaW5nKTsKICAgICB9KTsK
IH0KIAotYm9vbCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pc1J1bm5pbmc7Ci19Ci0KICNpZiBQTEFURk9STShJT1MpCiB2b2lk
IEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5Q
dHI8TlNFcnJvcj4gZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggOGFmODFmYjIzZGU2NWJmOTg3OTJkMDJkNDk0N2U0MzA2ODE4NjdiMi4uNjcyOGNiMTQy
ZDIzODFmNGE1NzA4NDQwMmU1OGUyOWVlNDUwNzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcApAQCAtNjQ4LDggKzY0OCw2IEBAIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgU3Ry
CiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGRldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbywgbGFiZWwpCiAgICAgLCBtX2NhcHR1cmVEZXZpY2VJRChwZXJzaXN0ZW50
SUQpCiB7Ci0gICAgbV9tdXRlZCA9IHRydWU7Ci0KICAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CiAKICAgICBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlv
bih1bml0LmVuYWJsZUVjaG9DYW5jZWxsYXRpb24oKSk7CkBAIC02ODAsMjAgKzY3OCwxMSBAQCB2
b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2Uo
QXVkaW9TYW1wbGVEYXRhU291cmNlJgogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0KICNpZiBQTEFURk9STShJT1MpCiAgICAgY29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKICAgICBDb3JlQXVk
aW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICBtX2lz
UHJvZHVjaW5nRGF0YSA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLmlzUHJvZHVj
aW5nRGF0YSgpOwotCi0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9tdXRlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRl
cikKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyLT5wcmVwYXJlKCZDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzaW5nbGV0b24oKS5taWNyb3Bob25lRm9ybWF0KCkuc3RyZWFtRGVzY3JpcHRpb24o
KSk7CkBAIC03MDEsMTIgKzY5MCw3IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc3RvcFByb2R1Y2lu
Z0RhdGEoKTsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotICAgIG1fbXV0ZWQgPSB0
cnVlOwogCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKQEAgLTc1Niw3ICs3NDAsNyBAQCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
IHsKICAgICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikgewogICAgICAgICBtX2F1ZGlvU291
cmNlUHJvdmlkZXIgPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlz
KTsKLSAgICAgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQorICAgICAgICBpZiAoaXNQcm9kdWNp
bmdEYXRhKCkpCiAgICAgICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmlu
ZGV4IDgxZGZkNzZjMWFhZWNhMjNlZGYyZDg5OWY1OWMyY2Q3N2E3YTU1NjMuLjI2M2FkYmQ3YzA3
YWYwYmI3NmNlYjVhZjk1MDY3YzYxZjEzZmFmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuaApAQCAtODAsNyArODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDYXB0dXJlU291
cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAg
IGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KIAogICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKQEAgLTkzLDcgKzky
LDYgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQzMl90IG1fY2FwdHVyZURldmljZUlEIHsgMCB9Owog
Ci0gICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKIAogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBiMGYyODNiMWRjNzQyZGQwOWFmNjUxZDc3MjVm
Y2FhNjcxYzhhYzk1Li5lYzJmNDA4MTQ1ZGM5ZTRlZTM1YTYxNjA4MDE3Y2NjZTY1YWY3YTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMDcsMTMgKzEw
Nyw2IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjp+TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMoKQogICAgIH0KIH0KIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5h
bWUpKTsKLSAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19
Ci0KIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW1wbGVCdWZmZXJzKHVp
bnQzMl90IGZyYW1lQ291bnQpCiB7CiAgICAgQVNTRVJUKG1fZm9ybWF0RGVzY3JpcHRpb24pOwpA
QCAtMTU4LDcgKzE1MSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRl
cihkb3VibGUgZGVsdGEpCiAgICAgICAgIHVpbnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4o
ZnJhbWVDb3VudCwgYmlwQm9wUmVtYWluKTsKICAgICAgICAgZm9yIChhdXRvJiBhdWRpb0J1ZmZl
ciA6IG1fYXVkaW9CdWZmZXJMaXN0LT5idWZmZXJzKCkpIHsKICAgICAgICAgICAgIGF1ZGlvQnVm
ZmVyLm1EYXRhQnl0ZVNpemUgPSBmcmFtZUNvdW50ICogbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVy
RnJhbWU7Ci0gICAgICAgICAgICBpZiAoIW1fbXV0ZWQgJiYgbV9lbmFibGVkKSB7CisgICAgICAg
ICAgICBpZiAoIW11dGVkKCkgJiYgZW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgbWVtY3B5
KGF1ZGlvQnVmZmVyLm1EYXRhLCAmbV9iaXBCb3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2Yo
RmxvYXQzMikgKiBiaXBCb3BDb3VudCk7CiAgICAgICAgICAgICAgICAgYWRkSHVtKEh1bVZvbHVt
ZSwgSHVtRnJlcXVlbmN5LCBzYW1wbGVSYXRlKCksIG1fc2FtcGxlc1JlbmRlcmVkLCBzdGF0aWNf
Y2FzdDxmbG9hdCo+KGF1ZGlvQnVmZmVyLm1EYXRhKSwgYmlwQm9wQ291bnQpOwogICAgICAgICAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXgg
YWQ0NTY1NjE1OGE4NzcwZjI4MDY2MjIzOGFmMzRlN2M4MmJkNjU5Zi4uMDBiM2E3ZTA5MjExZTZm
ZmIyOWQwNjdjOGE2Mzg1M2ZmY2UwY2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYy5tbQpAQCAtNjUsMTMgKzY1LDYgQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWM6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKIH0K
IAotUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGF1dG8gc291cmNlID0g
YWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2Ut
Pm1fbXV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OkNNU2FtcGxlQnVmZmVy
RnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5j
cHAKaW5kZXggYTRmOWIzOGFlMmEyOGI3ZDcwNzllYzczYWRjODRhZmQ4NWQzNDgyYS4uYWM4MmM2
NjdmZDUwNGE1N2I3NzhkOGMxOTdkOWU1MzRiZDE4YjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFj
a0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCiB7CiAgICAg
YXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShX
VEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpKTsKLSAgICBzb3VyY2Ut
PnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKICAgICByZXR1cm4g
c291cmNlOwogfQogCkBAIC01NSw2ICs1NSw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJyCiAg
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZygpKQogICAgICwgbV9hdWRpb1RyYWNrKFdU
Rk1vdmUoYXVkaW9UcmFjaykpCiB7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFj
ayk7CiB9CiAKIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSgpCkBAIC02Myw3ICs2NCw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQ
cm92aWRlci0+dW5wcmVwYXJlKCk7CiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG51
bGxwdHI7CiAgICAgfQotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogfQog
CiAKQEAgLTExMiwyMCArMTEzLDEyIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsCiAKIHZvaWQg
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwogICAgIGlmIChtX2F1ZGlvVHJhY2spCiAgICAgICAgIG1fYXVkaW9U
cmFjay0+QWRkU2luayh0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX2F1ZGlvVHJhY2spCiAgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzNiw3ICsxMjksOCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaQogICAgIEFTU0VS
VCh0cmFjayk7CiAKICAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBpZiAo
bV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7
CisgICAgaWYgKGlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNp
bmsodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApp
bmRleCA4NTJjZTk3ZjIyOTNlYzkzMDFiNzQxODBlZTdhYzU5MWIyMzVjZDNkLi42MjVlM2Q5ODhi
NzI0MGI3NDU4YzQ4YmM5YWZiY2NkMjBhYTMwNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oCkBAIC02NywxNCArNjcsMTEgQEAgcHJpdmF0ZToKICAgICBNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cygpIHsgcmV0dXJuICptX2NvbnN0cmFpbnRzLmdldCgp
OyB9CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0
ZWRDb25zdHJhaW50cygpOwogCi0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQotCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEg
eyBmYWxzZSB9OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+IG1fYXVkaW9UcmFjazsKIAogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlLmNwcAppbmRleCBmNTA5NmZiMGYwYTA2MWQ0NTljMTFhZDJmMTEwNmRm
MTM1M2JhMTVhLi4xNGY4ZTE4OGFiMDAwN2RjNzUwNDEyM2M2ODFiYmM0NGFmZTk2MzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtNTgsNyArNTgs
NyBAQCBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZAogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yg
Y29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpOwogCiAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvVHJh
Y2spLCBXVEZNb3ZlKHRyYWNrSWQpLCBjb25mb3JtZXJPcHRpb25zLmdldCgpKSk7Ci0gICAgc291
cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CiAgICAgcmV0
dXJuIHNvdXJjZTsKIH0KIApAQCAtNjcsMTcgKzY3LDEzIEBAIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJyCiAgICAgLCBtX3ZpZGVvVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSkKICAgICAsIG1fY29u
Zm9ybWVyKGNvbmZvcm1lck9wdGlvbnMpCiB7Ci0gICAgbV9tdXRlZCA9ICFtX3ZpZGVvVHJhY2s7
CiAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0V2lkdGgoNjQwKTsKICAgICBtX2N1cnJlbnRTZXR0
aW5ncy5zZXRIZWlnaHQoNDgwKTsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNr
KTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fdmlkZW9UcmFjaykKICAg
ICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtX
YW50cygpKTsKIH0KQEAgLTg3LDE4ICs4MywxNCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZQog
ICAgIEFTU0VSVCghbV92aWRlb1RyYWNrKTsKICAgICBBU1NFUlQodHJhY2spOwogCi0gICAgbV9t
dXRlZCA9IGZhbHNlOwotICAgIG1fdmlkZW9UcmFjayA9IHRyYWNrOwotICAgIGlmIChtX2lzUHJv
ZHVjaW5nRGF0YSkKKyAgICBtX3ZpZGVvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3Rp
ZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkp
CiAgICAgICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMsIHJ0Yzo6VmlkZW9T
aW5rV2FudHMoKSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBpZiAobV92aWRl
b1RyYWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7CiB9CkBAIC0x
MzMsNyArMTI1LDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2UKIAogdm9pZCBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFt
ZSkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAgIGlmICghaXNQcm9kdWNpbmdE
YXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1
ZmZlckZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaAppbmRleCA0MmY5MjZmNDFjYWMwYzE4ZDg0ZmNmNGYyZDZiOTQwNWZlOWUwYjAw
Li5kNGEzZjQzZjgwMmJjOTA0NDg3N2I3OWE5YTcyMjY4OTBhM2IyMWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC02Niw3ICs2Niw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHByb2Nlc3NOZXdTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwogCi0gICAgYm9vbCBpc1By
b2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YSAmJiBt
X2J1ZmZlcjsgfQogICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQpAQCAtNzgsNyAr
NzcsNiBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMg
bV9zdXBwb3J0ZWRDb25zdHJhaW50czsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9j
b25zdHJhaW50czsKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiBtX3ZpZGVvVHJh
Y2s7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWIG1fY29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDk0ZWMyNWU1Yjg5YmE0YjQ1ODliOGU5YjViNzc4
MWJkNThiMjk2N2UuLmQzYWE5Njg4Mzg4YjIzMDFhNzQwMTY3MDEwZGZmYWY1Y2FmZjFiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQo
QXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogY2xpZW50KQogICAgIGlmIChtX2NsaWVudCAmJiAh
bV9jb25uZWN0ZWQpIHsKICAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICBtX2Nh
cHR1cmVTb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNl
LT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgbV9jYXB0dXJlU291cmNlLT5zdGFydCgp
OwogICAgIH0gZWxzZSBpZiAoIW1fY2xpZW50ICYmIG1fY29ubmVjdGVkKSB7CiAgICAgICAgIG1f
Y2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBtX2Nvbm5lY3Rl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAKaW5kZXggNjE1
ZWM5ZTFkOGI1MDczZWJkZjg5MTY3MTk4ZDk5MjI2NDA2MzkyNi4uOGE1ODQ4NjcyNTQ4M2MyZGNl
MGE0MjQ0YjRlZGUxNWZiZmFiZDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRP
d3IuY3BwCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjp1bm11dGVS
ZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQsIE93ck1lZGlhU291cmNlKiByZWEKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghcmVtb3RlU291cmNlLT5zdG9wcGVkKCkpCisg
ICAgaWYgKHJlbW90ZVNvdXJjZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIHJlbW90ZVNv
dXJjZS0+c3dhcE91dFNoYWxsb3dTb3VyY2UoKnJlYWxTb3VyY2UpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
TWVkaWFTb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCmluZGV4IDNhZTM3NjI3YTg4MDU0YTc5
MGMxOTcwNjQ3YjU0YmNmZGMyYWQxNTUuLjdjZmJmNzhmMjU4ZDkwOGE1NDRiOTliMWVjOTgyODRi
NTMzZTRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5o
CkBAIC01NSw3ICs1NSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoT3dyTWVkaWFTb3VyY2Uq
IG1lZGlhU291cmNlLCBjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lCiAgICAgLCBtX21lZGlh
U291cmNlKG1lZGlhU291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFtZWRpYVNvdXJjZSkKLSAg
ICAgICAgICAgIG1fbXV0ZWQgPSB0cnVlOworICAgICAgICAgICAgbm90aWZ5TXV0ZWRDaGFuZ2Uo
dHJ1ZSk7CiAgICAgfQogCiBSZWFsdGltZU1lZGlhU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApp
bmRleCBjNDdlNzViNzRiNDU0MTM2MThjNDI1ODNlYzg3OGU4YjA5NmNjODVhLi4zNzVjZTdkZmRi
Y2Y2MWJlMDgyMzk1NDI4MDYzZjYwN2Q4NDMxMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBA
IFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBNb2NrTWVkaWFFbmRwb2ludDo6Y3JlYXRlTXV0ZWRS
ZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgbV9tdXRlZFJlbW90ZVNvdXJj
ZXMuc2V0KG1pZCwgc291cmNlKTsKLSAgICByZXR1cm4gKnNvdXJjZTsKKyAgICByZXR1cm4gc291
cmNlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OnJlcGxh
Y2VTZW5kU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UmIG5ld1NvdXJjZSwgY29uc3QgU3RyaW5n
JiBtaWQpCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5tdXRl
UmVtb3RlU291cmNlc0J5TWlkKCkKIAogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5tdXRlVGlt
ZXJGaXJlZCgpCiB7Ci0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSA9IG1f
bXV0ZWRSZW1vdGVTb3VyY2VzLmdldChtX21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgp
KTsKKyAgICBhdXRvKiBzb3VyY2UgPSBtX211dGVkUmVtb3RlU291cmNlcy5nZXQobV9taWRzT2ZT
b3VyY2VzVG9Vbm11dGUudGFrZUxhc3QoKSk7CiAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgc291
cmNlLT5zZXRNdXRlZChmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggNTgxYmUyOWM0ODdi
NTUzMzg2MzUxNDBhZmZjZGZkZmFlZDc3YWFiNC4uYzg1ZDljZWE1MTQxZTU4YmY3NDM0YThhNDU0
NDYzYjQxNGVmNzdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTY1LDE0ICs2NSwxNCBAQCBDYXB0
dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgTQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdU
Rk1vdmUoc291cmNlKSk7CiB9CisjZW5kaWYKIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQorUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gc291cmNlID0g
YWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2Ut
Pm1fbXV0ZWQgPSB0cnVlOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5ub3RpZnlNdXRlZENoYW5nZSh0
cnVlKTsKICAgICByZXR1cm4gc291cmNlOwogfQotI2VuZGlmCiAKIHN0YXRpYyBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZUZhY3RvcnkmIG1vY2tBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKIHsK
QEAgLTEyMSwxMSArMTIxLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlh
bGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2UKIAogdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9p
c1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRh
ID0gdHJ1ZTsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBtb2NrQXVkaW9DYXB0dXJlU291cmNl
RmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKQEAgLTEzMywyMCArMTI4
LDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCiAgICAgICAgIHNldFNhbXBsZVJhdGUoIWRldmljZUlu
ZGV4KCkgPyA0NDEwMCA6IDQ4MDAwKTsKIAotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEoKTsKLQogICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CiAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhyZW5kZXJJbnRlcnZh
bCgpKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0Rh
dGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0KLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKTsKICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2Vs
YXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7
CiAgICAgbV9zdGFydFRpbWUgPSBOQU47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNjdlZTU5ZTZiMDVhNDdj
ODFjMThiNTkwZDQ1Zjk3YTk3ZjA5ZDA3MS4uM2ExOWZhMDdkYjliMmY0MzljZGY2ZmZlZTBiMGY5
NWZlNDMyOTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJs
aWM6CiAKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHN0
YXRpYyBSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgQXVkaW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwog
CkBAIC01NCw3ICs1NCw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdE
YXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0Rh
dGE7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoZG91YmxlKSB7IH0KIApAQCAtODAsNyAr
NzksNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IE5BTiB9OwogICAgIGRv
dWJsZSBtX2xhc3RSZW5kZXJUaW1lIHsgTkFOIH07CiAgICAgZG91YmxlIG1fZWxhcHNlZFRpbWUg
eyAwIH07Ci0gICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDc2NzIzYWVhYzZiYTg0Yzc3
MDU0NWMxNzNiYWRlMzgwMDQxOWQxMmUuLjQ0MGJiOThkNmQyODYwN2Q0YjZmOTAyZDkzZmFiZDBk
Mzc0YzkzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC04MCwxMSArODAsMTEgQEAgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWEKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvOgogICAgICAgICBtX2RldmljZUluZGV4ID0gbmFtZSA9PSBh
dWRpb0RldmljZXMoKVswXS5sYWJlbCgpID8gMCA6IDE7Ci0gICAgICAgIHNldFBlcnNpc3RlbnRJ
RChhdWRpb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQoKSk7CisgICAgICAg
IHNldFBlcnNpc3RlbnRJRChTdHJpbmcoYXVkaW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVy
c2lzdGVudElkKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIG1fZGV2aWNlSW5kZXggPSBuYW1lID09IHZpZGVv
RGV2aWNlcygpWzBdLmxhYmVsKCkgPyAwIDogMTsKLSAgICAgICAgc2V0UGVyc2lzdGVudElEKHZp
ZGVvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKTsKKyAgICAgICAgc2V0
UGVyc2lzdGVudElEKFN0cmluZyh2aWRlb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0
ZW50SWQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMiwxOCAr
MTMyLDYgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydGVkQ29uc3QKICAgICByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9k
dWNpbmdEYXRhKCkKLXsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7Ci0gICAgc2V0TXV0
ZWQoZmFsc2UpOwotfQotCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKLSAgICBzZXRNdXRl
ZCh0cnVlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA5YTVhZDFkMjA0ODIwNGUwMDUyYmI1ZDY1
N2UyNjI4NTZjMWJjYWFkLi41MDZlNDgyYTJjZmFjNmZjMzg1YTBlZTA1MWVlNTIwN2RjNzk0YTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCkBAIC02NSw5ICs2NSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKICNlbmRpZgogCi0gICAgdm9pZCBzdGFydFByb2R1
Y2luZ0RhdGEoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3ZlcnJp
ZGU7Ci0KICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmls
aXRpZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTg0LDE0ICs4MSwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVNldHRpbmdzKCk7CiAjZW5kaWYKIAotICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KLQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0
aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBw
b3J0ZWRDb25zdHJhaW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IG1fY29uc3RyYWludHM7CiAgICAgdW5zaWduZWQgbV9kZXZpY2VJbmRleCB7IDAgfTsKLSAg
ICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMGYxNzkxOTc5NmY2OGU4ZDk5Y2UyYzkwYjg2
ZWJjZjEzOGI1ZWEzNC4uMmFkN2FiMzUzZGEwMGJlNWVhYTUzYTNjYjAxNTUwMzU5NjI4MTMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCBDYXB0dXJlU291cmNlT3JFcnJv
ciBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgTQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7
CiB9CisjZW5kaWYKIAotUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQorUmVmPE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVl
OworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZShuYW1lKSk7CisgICAgc291cmNlLT5ub3RpZnlNdXRlZENoYW5nZSh0cnVlKTsKICAgICByZXR1
cm4gc291cmNlOwogfQotI2VuZGlmCiAKIHN0YXRpYyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUZh
Y3RvcnkmIG1vY2tWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKIHsKQEAgLTExMiwxNiArMTEy
LDEwIEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uo
KQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQog
ewotICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKLSAgICAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
bW9ja1ZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwog
I2VuZGlmCiAKLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KCk7CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgc2V0V2lkdGgoNjQwKTsK
ICAgICAgICAgc2V0SGVpZ2h0KDQ4MCk7CkBAIC0xMzMsMTIgKzEyNyw2IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9k
dWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEg
PSBmYWxzZTsKLSAgICAKLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2lu
Z0RhdGEoKTsKICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7CiAgICAgbV9zdGFydFRpbWUg
PSBOQU47CkBAIC0zODQsNyArMzcyLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Z2VuZXJhdGVGcmFtZSgpCiAgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNp
emUpOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSks
ICFkZXZpY2VJbmRleCgpID8gQ29sb3I6OmJsYWNrIDogQ29sb3I6OmRhcmtHcmF5KTsKIAotICAg
IGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsKKyAgICBpZiAoIW11dGVkKCkgJiYgZW5hYmxl
ZCgpKSB7CiAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQpOwogICAgICAgICBkcmF3QW5pbWF0aW9u
KGNvbnRleHQpOwogICAgICAgICBkcmF3Qm94ZXMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXgg
YzQzOWFkZDJlYTZjZTk3YjU0MTIzNzA2YzBlMzM3ZWEwNmFjMjIzMy4uYzc1NjhlMmViMzg3ZTM1
MWJkYmM1OTRiNDI4ZGZmMjk2OGI4YzIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZSB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3Jl
YXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMg
UmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11
dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9y
eSYgZmFjdG9yeSgpOwogCkBAIC02OSw3ICs2OSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBm
aW5hbDsKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNQcm9kdWNpbmdEYXRhOyB9CiAKICAgICB2b2lkIGRyYXdBbmltYXRpb24oR3JhcGhpY3NDb250
ZXh0Jik7CiAgICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmKTsKQEAgLTEwMyw3ICsx
MDIsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnJhbWVOdW1iZXIgeyAwIH07CiAKICAg
ICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gbV90aW1lcjsKLSAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA2Y2RiYTFmNzU5M2IwZTRl
MmE1NzkxNTgzMDA1NWY3NzAxZDkzYTY5Li5lZTgxMmQ5ZWY1Mjc3MzNiNDgzMDI3NzhhMjI5NjFl
YzkzOGQ1MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNTQsMTQgKzE1
NCwxNCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0YXJ0UHJvZHVjaW5n
RGF0YSh1aW50NjRfdCBpZCkKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7
CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICBpdGVyLT52YWx1ZS0+
c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIGl0ZXItPnZhbHVlLT5zb3Vy
Y2UoKS5zdGFydCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0
b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8gaXRlciA9IG1fcHJveGll
cy5maW5kKGlkKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIGl0
ZXItPnZhbHVlLT5zb3VyY2UoKS5zdG9wUHJvZHVjaW5nRGF0YSgpOworICAgICAgICBpdGVyLT52
YWx1ZS0+c291cmNlKCkuc3RvcCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OmNhcGFiaWxpdGllcyh1aW50NjRfdCBpZCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCAzZTM1YzI3NTVkYjk4ZTJmMzJkMjFkNDU0MDE1OGYyMDljZDQ3N2E2Li44ZDU2Y2IyNThiMmU0
ZmY4MDM0MGQxOWE0YTE0NmU5NDkwMDVmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
MTEwLDggKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlv
RGF0YShtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgICAgIG1fcmluZ0J1ZmZl
ci5mZXRjaChhdWRpb0RhdGEubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUo
KSk7CiAKLSAgICAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVycygpKQotICAgICAg
ICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1f
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2Nl
ZWRlZChjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KQpAQCAtMTI3LDI0ICsxMjYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrcy5mYWlsdXJl
SGFuZGxlcihmYWlsZWRDb25zdHJhaW50LCBlcnJvck1lc3NhZ2UpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX211dGVk
ID09IG11dGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbXV0ZWQgPSBtdXRl
ZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldE11dGVkKG1faWQsIG1fbXV0ZWQpOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIGZpbmFsCi0gICAgewotICAgICAgICBp
ZiAobV9lbmFibGVkID09IGVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9lbmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldEVuYWJsZWQobV9pZCwg
bV9lbmFibGVkKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFydFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3RvcFByb2R1Y2luZ0Rh
dGEobV9pZCk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZWI2NmVhNjQyMGQxZjRjNDQ1ODdjOTlhMGNlNWE3NDliNmExYWEzLi45YjZlYWMx
NTUwODdhNTYxZmUyMzVkZDBiM2FiMTJkZjQ5YmYxNGZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDUtMTUg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFdQVCB0ZXN0IGlt
cG9ydGVyIHNob3VsZCBub3QgYWNjb3VudCBmb3Igc2xvdyBtYW51YWwgdGVzdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjEyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBzdXJlIG1hbnVh
bCB0ZXN0cyBhcmUgbm90IHRyaWdnZXJpbmcgdXBkYXRpbmcgdGVzdHMtb3B0aW9ucy5qc29uIGZp
bGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5Ogor
ICAgICAgICAoVGVzdEltcG9ydGVyLmZpbmRfaW1wb3J0YWJsZV90ZXN0cyk6CisgICAgICAgIChU
ZXN0SW1wb3J0ZXIuX2FscmVhZHlfaWRlbnRpZmllZF9hc19yZXNvdXJjZV9maWxlKToKKyAgICAg
ICAgKFRlc3RJbXBvcnRlci51cGRhdGVfdGVzdHNfb3B0aW9ucyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weToKKyAgICAgICAgKHRlc3Rf
bWFudWFsX3Nsb3dfdGVzdCk6CisKIDIwMTctMDUtMTQgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIGZhc3QvY29va2llcy9sb2NhbC1maWxlLWNh
bi1zZXQtY29va2llcy5odG1sIGlzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggZDljNDljMDJmZDU2MjY3ZmNjNTQ0YTA4YTcwNTQyZGYx
M2Q4ZmI2My4uODliMTBmZWI2M2ZiNmRiNTg1NTBhYzM3YTVkNjY0NmQ5YmUyMzExOCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0zMTIsMTIgKzMx
MiwxMiBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBlbGlm
IHNlbGYuX2lzX2luX3Jlc291cmNlc19kaXJlY3RvcnkoZnVsbHBhdGgpOgogICAgICAgICAgICAg
ICAgICAgICBfbG9nLndhcm5pbmcoJyVzIGlzIGEgdGVzdCBsb2NhdGVkIGluIGEgInJlc291cmNl
cyIgZm9sZGVyLiBUaGlzIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGJ5IFdlYktpdCB0ZXN0IHJ1bm5l
cnMuJywgZnVsbHBhdGgpCiAKLSAgICAgICAgICAgICAgICBpZiAnc2xvdycgaW4gdGVzdF9pbmZv
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zbG93X3Rlc3RzLmFwcGVuZChmdWxscGF0aCkK
LQogICAgICAgICAgICAgICAgIGlmICdtYW51YWx0ZXN0JyBpbiB0ZXN0X2luZm8ua2V5cygpOgog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICAgICAgaWYgJ3Nsb3cn
IGluIHRlc3RfaW5mbzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2xvd190ZXN0cy5hcHBl
bmQoZnVsbHBhdGgpCisKICAgICAgICAgICAgICAgICBpZiAncmVmZXJlbmNlZmlsZScgaW4gdGVz
dF9pbmZvLmtleXMoKToKICAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGl0IHNpbmNlLCB0aGUg
Y29ycmVzcG9uZGluZyByZWZlcmVuY2UgdGVzdCBzaG91bGQgaGF2ZSBhIGxpbmsgdG8gdGhpcyBm
aWxlCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MDYsNiArNTA2LDggQEAgY2xh
c3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZV90ZXN0c19v
cHRpb25zKCkKIAogICAgIGRlZiBfYWxyZWFkeV9pZGVudGlmaWVkX2FzX3Jlc291cmNlX2ZpbGUo
c2VsZiwgcGF0aCk6CisgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0X3Jlc291cmNlX2ZpbGVzOgor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHBhdGggaW4gc2VsZi5fdGVzdF9y
ZXNvdXJjZV9maWxlc1siZmlsZXMiXToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAg
IHJldHVybiBhbnkoW3BhdGguZmluZChkaXJlY3RvcnkpICE9IC0xIGZvciBkaXJlY3RvcnkgaW4g
c2VsZi5fdGVzdF9yZXNvdXJjZV9maWxlc1siZGlyZWN0b3JpZXMiXV0pCkBAIC01MTcsNiArNTE5
LDcgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgIHNob3VsZF91cGRhdGUg
PSBzZWxmLm9wdGlvbnMuY2xlYW5fZGVzdGluYXRpb25fZGlyZWN0b3J5CiAgICAgICAgIGZvciBm
dWxsX3BhdGggaW4gc2VsZi5fc2xvd190ZXN0czoKICAgICAgICAgICAgIHczY190ZXN0X3BhdGgg
PSBzZWxmLmZpbGVzeXN0ZW0ucmVscGF0aChmdWxsX3BhdGgsIHNlbGYuc291cmNlX2RpcmVjdG9y
eSkKKyAgICAgICAgICAgIHByaW50IHczY190ZXN0X3BhdGgKICAgICAgICAgICAgICMgTm8gbmVl
ZCB0byBtYXJrIHRlc3RzIGFzIHNsb3cgaWYgdGhleSBhcmUgaW4gc2tpcHBlZCBkaXJlY3Rvcmll
cwogICAgICAgICAgICAgaWYgc2VsZi5fYWxyZWFkeV9pZGVudGlmaWVkX2FzX3Jlc291cmNlX2Zp
bGUodzNjX3Rlc3RfcGF0aCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyX3VuaXR0ZXN0LnB5CmluZGV4
IGQ0N2U1MjRlZDdkYzMxNDEyY2IzNzY5ZDhjMGE2OWZhZGU4MTJjMjkuLmNkYzZlYjU0NmExZGMw
MTQ5YjkyOWU5MjQ0YzVhN2VhMTEzMDExNGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlcl91bml0dGVzdC5weQpAQCAtMjg4LDQgKzI4OCwxOCBA
QCBjbGFzcyBUZXN0SW1wb3J0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShmcy5leGlzdHMoJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3RzL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdC9vYnNvbGV0ZS1leHBlY3RlZC50eHQnKSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90L25ldy5odG1sJykpCiAKLSAgICAjIEZJWE1FOiBOZWVkcyBtb3Jl
IHRlc3RzLgorICAgIGRlZiB0ZXN0X21hbnVhbF9zbG93X3Rlc3Qoc2VsZik6CisgICAgICAgIHRl
c3RzX29wdGlvbnMgPSAneyJhIjogWyJzbG93Il19JworICAgICAgICBGQUtFX0ZJTEVTID0gewor
ICAgICAgICAgICAgJy9tb2NrLWNoZWNrb3V0L1dlYktpdEJ1aWxkL3czYy10ZXN0cy9jc3N3Zy10
ZXN0cy90ZW1wJzogJycsCisgICAgICAgICAgICAnL21vY2stY2hlY2tvdXQvV2ViS2l0QnVpbGQv
dzNjLXRlc3RzL3dlYi1wbGF0Zm9ybS10ZXN0cy90L25ldy1tYW51YWwuaHRtbCc6ICc8IWRvY3R5
cGUgaHRtbD48bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj48c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PicsCisgICAgICAgICAgICAnL21vY2st
Y2hlY2tvdXQvTGF5b3V0VGVzdHMvdGVzdHMtb3B0aW9ucy5qc29uJzogdGVzdHNfb3B0aW9uc30K
KyAgICAgICAgRkFLRV9GSUxFUy51cGRhdGUoRkFLRV9SRVBPU0lUT1JZKQorCisgICAgICAgIGhv
c3QgPSBNb2NrSG9zdCgpCisgICAgICAgIGhvc3QuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIo
KQorICAgICAgICBob3N0LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcz1GQUtFX0ZJ
TEVTKQorCisgICAgICAgIGZzID0gc2VsZi5pbXBvcnRfZG93bmxvYWRlZF90ZXN0cyhbJy0tbm8t
ZmV0Y2gnLCAnLS1pbXBvcnQtYWxsJywgJy1kJywgJ3czYyddLCBGQUtFX0ZJTEVTKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGZzLmV4aXN0cygnL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90L25ldy1tYW51YWwuaHRtbCcpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyh0ZXN0c19vcHRpb25zLCBmcy5yZWFkX3RleHRfZmlsZSgnL21vY2stY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvdGVzdHMtb3B0aW9ucy5qc29uJykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310181</attachid>
            <date>2017-05-15 16:35:08 -0700</date>
            <delta_ts>2017-05-15 19:45:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-171999-20170515163507.patch</filename>
            <type>text/plain</type>
            <size>53022</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlNzlmODZmNTk0NzQ0
ZjAyN2M0NGMwYmI3NmUxZjVkZTg5OTAwNi4uN2EyMmI0ODMzNjZmYjIyMjZmMTU1N2RmZTdjM2U4
MmFkNTE0ODU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxNy0wNS0xNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgUmVhbHRp
bWVNZWRpYVNvdXJjZSBkYXRhIHByb2R1Y3Rpb24gYW5kIHN0YXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE5OTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSB0YWtlcyAz
IGJvb2xlYW5zOgorICAgICAgICAtIG1faXNQcm9kdWNpbmdEYXRhIHRlbGxzIHdoZXRoZXIgZGF0
YSBpcyBwcm9kdWNlZCBvciBub3QuIEluIHRoZSBjYXNlIG9mIGNhcHR1cmluZywgaXQgdGVsbHMg
d2hldGhlciBjYXB0dXJlCisgICAgICAgICAgaGFwcGVucy4KKyAgICAgICAgLSBtX211dGVkL21f
ZW5hYmxlZCBhbGxvd3MgSlMgb3IgV2ViS2l0IGxldmVsIHRvIHN0YXJ0L3N0b3AgdGhlIHNvdXJj
ZS4KKworICAgICAgICBDaGFuZ2VkIE1lZGlhU3RyZWFtIGNhcHR1cmUgc3RhdGUgY29tcHV0YXRp
b24gc28gdGhhdCBjYXB0dXJlIGlzIHJlcG9ydGVkIGFzIGZvbGxvd3M6CisgICAgICAgIC0gbV9p
c1Byb2R1Y2luZyBpcyB0cnVlLCBjYXB0dXJlIGlzIGhhcHBlbm5pbmcgYW5kIGlzIGFjdGl2ZQor
ICAgICAgICAtIG1fbXV0ZWQgaXMgdHJ1ZSwgY2FwdHVyZSBpcyBoYXBwZW5pbmcgYnV0IGlzIGlu
YWN0aXZlLgorCisgICAgICAgIEV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBXZWJSVEMgaW5jb21pbmcg
c291cmNlcywgZm9yIHdoaWNoIHNvdXJjZXMgbWF5IGJlIGNyZWF0ZWQgYXMgbXV0ZWQgYXMgcGVy
IHRoZSBzcGVjLAorICAgICAgICBhbGwgc291cmNlcyBhcmUgdW5tdXRlZCwgZW5hYmxlZCBhbmQg
bm90IHByb2R1Y2luZyBkYXRhIHdoZW4gY3JlYXRlZC4KKworICAgICAgICBSZWFsdGltZU1lZGlh
U291cmNlIGlzIG5vdyBhY3RpdmFibGUgZWl0aGVyIGJ5IGNhbGxpbmcgc3RhcnQvc3RvcCBvciBi
eSBjYWxsaW5nIHNldE11dGVkL3NldEVuYWJsZWQuCisgICAgICAgIFRoaXMgaW4gdHVybnMgd2ls
bCBzZXQgdGhlIGJvb2xlYW4gdmFsdWVzIGFjY29yZGluZ2x5IGFuZCB3aWxsIGNhbGwgdGhlIHVu
ZGVybHlpbmcKKyAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhL3N0b3BQcm9kdWNpbmdEYXRhIG1l
dGhvZHMgZG9pbmcgdGhlIGFjdHVhbCBzdHVmZi4KKworICAgICAgICBSZW1vdmluZyBmcm9tIGFs
bCBSZWFsdGltZU1lZGlhU291cmNlIHN1YmNsYXNzZXMgdGhlIGhhbmRsaW5nIG9mIHByb2R1Y2lu
ZyBkYXRhLgorICAgICAgICBNYWtpbmcgbW9yZSBtZXRob2RzIG5vbi12aXJ0dWFsL21lbWJlciBm
aWVsZHMgcHJpdmF0ZSB0byBzaW1wbGlmeSB0aGUgbW9kZWwuCisKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
OjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6Y2FudmFzRGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpT
b3VyY2U6OmNhcHR1cmVDYW52YXMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjptZWRp
YVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZTo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJj
ZTo6bm90aWZ5TXV0ZWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNl
OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVlc3RTdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2U6OkFWTWVkaWFDYXB0dXJl
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJl
U2Vzc2lvbklzUnVubmluZ0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2Fw
dHVyZVNvdXJjZTo6cmVzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVZNZWRpYUNh
cHR1cmVTb3VyY2U6OmlzUHJvZHVjaW5nRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdGFydFByb2R1Y2lu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6
YXVkaW9Tb3VyY2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZTo6c2V0U291cmNlVHJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6UmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0U291cmNlVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJhbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYUVuZHBvaW50Ojpj
cmVhdGVNdXRlZFJlbW90ZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFFbmRw
b2ludDo6dW5tdXRlVGltZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6Y3JlYXRlTXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmdlbmVyYXRlRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuaDoKKwogMjAxNy0wNS0xNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDogTGVhZGluZyB3aGl0ZXNwYWNlIGZvbGxv
d2VkIGJ5IGEgPGJyPiBwcm9kdWNlcyBhbiBleHRyYSBsaW5lYnJlYWsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
N2IxOWZmNzFjN2VkODI2MzI5YzRkZTc0ZGY1ZmU3MjdkNmI0YzE2ZC4uOThiMDdmMTc5NmZmZGQw
ZDc0NDUyNDMzMjlkMWQ3ODVlZTU4OTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE3LTA1LTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBSZWFsdGltZU1lZGlhU291cmNlIGRhdGEgcHJvZHVjdGlvbiBhbmQgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTk5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTo6c3RvcFByb2R1Y2luZ0Rh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorCiAyMDE3LTA1LTE0ICBEYWV3b29uZyBKYW5nICA8ZGFld29vbmcuamFuZ0BuYXZlcmNv
cnAuY29tPgogCiAgICAgICAgIFtDb29yZGluYXRlZEdyYXBoaWNzXSBSZW1vdmUgdW51c2VkIGZp
bGVzIGFuZCBsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRl
eCAzZjdiMmMxODhiNTk5ODBhMmQ1Y2ZiYTg3NmU5NGI5MTg3MjBhOGRlLi41ZTA1YzNlNThkY2Q1
MzY3YzllMThlMTQ2MDBmNzM4MmEzY2EwMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0
cmVhbVRyYWNrLmNwcApAQCAtNDgsNyArNDgsNyBAQCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udAog
UmVmPENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U+IENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFz
LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBmcmFtZVJlcXVlc3RSYXRlKQogewogICAgIGF1dG8g
c291cmNlID0gYWRvcHRSZWYoKm5ldyBTb3VyY2UoY2FudmFzLCBXVEZNb3ZlKGZyYW1lUmVxdWVz
dFJhdGUpKSk7Ci0gICAgc291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzb3VyY2Ut
PnN0YXJ0KCk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtzb3VyY2UgPSBzb3VyY2UuY29weVJl
ZigpXSB7CiAgICAgICAgIGlmICghc291cmNlLT5tX2NhbnZhcykKQEAgLTc2LDEwICs3Niw2IEBA
IENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OlNvdXJjZShIVE1MQ2FudmFz
RWxlbWVudCYgY2FudmFzLCBzdGQ6Om9wCiAKIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2s6OlNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9pc1Byb2R1
Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7
Ci0KICAgICBpZiAoIW1fY2FudmFzKQogICAgICAgICByZXR1cm47CiAgICAgbV9jYW52YXMtPmFk
ZE9ic2VydmVyKCp0aGlzKTsKQEAgLTkzLDEwICs4OSw2IEBAIHZvaWQgQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBDYW52
YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpCiB7
Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNQ
cm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0KICAgICBtX3JlcXVlc3RGcmFtZVRpbWVyLnN0b3AoKTsK
IAogICAgIGlmICghbV9jYW52YXMpCkBAIC0xMTMsNyArMTA1LDcgQEAgdm9pZCBDYW52YXNDYXB0
dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0Vs
ZW1lbnQmIGMKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNhbnZhcywgbV9jYW52YXMgPT0gJmNhbnZh
cyk7CiAKLSAgICBzdG9wUHJvZHVjaW5nRGF0YSgpOworICAgIHN0b3AoKTsKICAgICBtX2NhbnZh
cyA9IG51bGxwdHI7CiB9CiAKQEAgLTE1MCw3ICsxNDIsNyBAQCB2b2lkIENhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhcHR1cmVDYW52YXMoKQogewogICAgIEFTU0VSVCht
X2NhbnZhcyk7CiAKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAgIGlmICghaXNQcm9k
dWNpbmdEYXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ZyYW1lUmVxdWVzdFJh
dGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2Fu
dmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaAppbmRleCBhZDI1YWRlYTcw
YThkYjY4NzFkNmJiMGEwOGFlZmQ2NGY3NTEwZDY4Li5jZTA3N2NkNjE1YjBjZjg3NDU5ZjRjMGM5
OWY5YjY5MDkzZTJiMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5oCkBA
IC02Miw3ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2Ug
QVBJCiAgICAgICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgZmluYWw7CiAgICAgICAgIHZv
aWQgc3RvcFByb2R1Y2luZ0RhdGEoKSAgZmluYWw7Ci0gICAgICAgIGJvb2wgaXNQcm9kdWNpbmdE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0RhdGE7IH0KICAgICAgICAgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllczo6ZW1wdHlDYXBhYmls
aXRpZXMoKTsgfQogICAgICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNl
dHRpbmdzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgICAgICBib29s
IGFwcGx5U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzAs
NyArNjksNiBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGNhcHR1cmVDYW52YXMoKTsKICAgICAg
ICAgdm9pZCByZXF1ZXN0RnJhbWVUaW1lckZpcmVkKCk7CiAKLSAgICAgICAgYm9vbCBtX2lzUHJv
ZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9zaG91bGRFbWl0RnJhbWUgeyB0
cnVlIH07CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtX2ZyYW1lUmVxdWVzdFJhdGU7
CiAgICAgICAgIFRpbWVyIG1fcmVxdWVzdEZyYW1lVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDI2ZjU0ZTA4MGFm
Y2I5OTkwNGY4ZDIyZDZkYzk5ODc4N2NkNTJmNDQuLjMxYWQ3Y2ZiZTU4OGEzNjA3MDhjZWIzY2M4
MTNlMGFhOGJmMTdlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgTWVkaWFQcm9kdWNlcjo6
TWVkaWFTdGF0ZUZsYWdzIE1lZGlhU3RyZWFtOjptZWRpYVN0YXRlKCkgY29uc3QKICAgICAgICAg
aWYgKG1fcHJpdmF0ZS0+aGFzQ2FwdHVyZUF1ZGlvU291cmNlKCkpIHsKICAgICAgICAgICAgIGlm
IChtX3ByaXZhdGUtPm11dGVkKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0gSGFzTXV0ZWRB
dWRpb0NhcHR1cmVEZXZpY2U7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2lzUHJvZHVjaW5nRGF0
YSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1faXNQcm9kdWNpbmdEYXRhICYmIG1fcHJpdmF0ZS0+
aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgICAgICAgICAgc3RhdGUgfD0gSGFzQWN0aXZlQXVk
aW9DYXB0dXJlRGV2aWNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzU2LDcgKzM1Niw3IEBAIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBNZWRpYVN0cmVhbTo6bWVkaWFTdGF0ZSgpIGNv
bnN0CiAgICAgICAgIGlmIChtX3ByaXZhdGUtPmhhc0NhcHR1cmVWaWRlb1NvdXJjZSgpKSB7CiAg
ICAgICAgICAgICBpZiAobV9wcml2YXRlLT5tdXRlZCgpKQogICAgICAgICAgICAgICAgIHN0YXRl
IHw9IEhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlOwotICAgICAgICAgICAgZWxzZSBpZiAobV9p
c1Byb2R1Y2luZ0RhdGEpCisgICAgICAgICAgICBlbHNlIGlmIChtX2lzUHJvZHVjaW5nRGF0YSAm
JiBtX3ByaXZhdGUtPmlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICAgICAgICAgIHN0YXRlIHw9
IEhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZS5oCmluZGV4IDVlMjA0NmFkNWE0Y2VlYTg4ZGY1ZDNkYWIyNDlmZTNhMmQ2
NmM4MjEuLmFlZDM3OTE1OGQxYjdmMDVjY2M4YWZjYmM5Mjg1NzYwYTIzZTlhY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAKLSAgICB2b2lkIHN0YXJ0UHJv
ZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOyB9Ci0gICAgdm9p
ZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0b3BQcm9kdWNpbmdEYXRhKCk7IH0K
KyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsgbV9zb3VyY2UtPnN0YXJ0KCk7IH0KKyAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgeyBtX3NvdXJjZS0+c3RvcCgpOyB9CiAgICAgYm9v
bCBpc1Byb2R1Y2luZ0RhdGEoKSB7IHJldHVybiBtX3NvdXJjZS0+aXNQcm9kdWNpbmdEYXRhKCk7
IH0KIAogICAgIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLT5pc0lz
b2xhdGVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMWY0OTkzMTE1YWVmZjE5Mzkz
YWUzYTcyZDg3ZmU0YzQxNmViZGUxNS4uZjNjMTIwMTY0YWU1MWM2NTllZmUwZmY0YmE1MDlkOTBj
OWU2N2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTYwLDIxICs2MCwxNSBAQCBSZWFs
dGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5
cGUgdHlwZSwgY29uc3QgU3RyaQogICAgIG1fc3VwcHJlc3NOb3RpZmljYXRpb25zID0gZmFsc2U7
CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQotewotICAgIG1fc3RvcHBl
ZCA9IGZhbHNlOwotICAgIG1fbXV0ZWQgPSBmYWxzZTsKLX0KLQogdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphZGRPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciYgb2JzZXJ2
ZXIpCiB7Ci0gICAgbV9vYnNlcnZlcnMuYXBwZW5kKCZvYnNlcnZlcik7CisgICAgbV9vYnNlcnZl
cnMuYXBwZW5kKG9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1v
dmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7Ci0g
ICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3RNYXRjaGluZyhbJm9ic2VydmVyXShhdXRvKiBhbk9i
c2VydmVyKSB7Ci0gICAgICAgIHJldHVybiBhbk9ic2VydmVyID09ICZvYnNlcnZlcjsKKyAgICBt
X29ic2VydmVycy5yZW1vdmVGaXJzdE1hdGNoaW5nKFsmb2JzZXJ2ZXJdKGF1dG8gYW5PYnNlcnZl
cikgeworICAgICAgICByZXR1cm4gJmFuT2JzZXJ2ZXIuZ2V0KCkgPT0gJm9ic2VydmVyOwogICAg
IH0pOwogCiAgICAgaWYgKCFtX29ic2VydmVycy5zaXplKCkpCkBAIC04MywzOSArNzcsMzkgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVPYnNlcnZlcihSZWFsdGltZU1lZGlhU291
cmNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIKIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRN
dXRlZChib29sIG11dGVkKQogewotICAgIGlmIChtX3N0b3BwZWQgfHwgbV9tdXRlZCA9PSBtdXRl
ZCkKKyAgICBpZiAobXV0ZWQpCisgICAgICAgIHN0b3AoKTsKKyAgICBlbHNlCisgICAgICAgIHN0
YXJ0KCk7CisKKyAgICBub3RpZnlNdXRlZENoYW5nZShtdXRlZCk7Cit9CisKK3ZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6bm90aWZ5TXV0ZWRDaGFuZ2UoYm9vbCBtdXRlZCkKK3sKKyAgICBpZiAo
bV9tdXRlZCA9PSBtdXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tdXRlZCA9IG11dGVk
OwogCi0gICAgaWYgKG11dGVkKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGZpZ3Vy
ZSBvdXQgaG93IHRvIGd1YXJhbnRlZSB0aGF0IGF0IGxlYXN0IG9uZSBibGFjayB2aWRlbyBmcmFt
ZSBpcwotICAgICAgICAvLyBlbWl0dGVkIGFmdGVyIGJlaW5nIG11dGVkLgotICAgICAgICBzdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIH0gZWxzZQotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEo
KTsKLQogICAgIG5vdGlmeU11dGVkT2JzZXJ2ZXJzKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6bm90aWZ5TXV0ZWRPYnNlcnZlcnMoKSBjb25zdAogewotICAgIGZvciAoYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykKLSAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZU11dGVkQ2hh
bmdlZCgpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAg
ICAgIG9ic2VydmVyLnNvdXJjZU11dGVkQ2hhbmdlZCgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIGlmIChtX3N0b3BwZWQg
fHwgbV9lbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwogCi0gICAgaWYgKG1f
c3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1f
b2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+c291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAg
ICBmb3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZl
ci5zb3VyY2VFbmFibGVkQ2hhbmdlZCgpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldHRpbmdzRGlkQ2hhbmdlKCkKQEAgLTEyOSw0OSArMTIzLDU3IEBAIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoKQogCiAgICAgc2NoZWR1bGVEZWZlcnJlZFRh
c2soW3RoaXNdIHsKICAgICAgICAgbV9wZW5kaW5nU2V0dGluZ3NEaWRDaGFuZ2VOb3RpZmljYXRp
b24gPSBmYWxzZTsKLSAgICAgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQot
ICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVNldHRpbmdzQ2hhbmdlZCgpOworICAgICAgICBm
b3IgKE9ic2VydmVyJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICAgICAgb2JzZXJ2
ZXIuc291cmNlU2V0dGluZ3NDaGFuZ2VkKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxl
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBv
YnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+dmlkZW9TYW1wbGVBdmFp
bGFibGUobWVkaWFTYW1wbGUpOworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCisgICAgICAgIG9ic2VydmVyLnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxl
KTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUo
Y29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgYXVkaW9EYXRh
LCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG51bWJl
ck9mRnJhbWVzKQogewotICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKLSAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0Rh
dGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CisgICAgZm9yIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXIuYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KIAot
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIp
Cit2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0KCkKIHsKLSAgICBpZiAoc3RvcHBlZCgp
KQorICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9z
dG9wcGVkID0gdHJ1ZTsKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CisgICAgc3RhcnRQ
cm9kdWNpbmdEYXRhKCk7Cit9CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpIHsKLSAgICAgICAgaWYgKG9ic2VydmVyICE9IGNhbGxpbmdPYnNlcnZlcikKLSAg
ICAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VTdG9wcGVkKCk7Ci0gICAgfQordm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAg
ICAgICByZXR1cm47CiAKKyAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIHN0b3BQ
cm9kdWNpbmdEYXRhKCk7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0
b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKIHsKLSAgICBpZiAoc3RvcHBlZCgpKQorICAg
IGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoY29u
c3QgYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgewotICAgICAgICBpZiAob2JzZXJ2ZXIt
PnByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSkKKyAgICBmb3IgKE9ic2VydmVyJiBvYnNlcnZl
ciA6IG1fb2JzZXJ2ZXJzKSB7CisgICAgICAgIGlmIChvYnNlcnZlci5wcmV2ZW50U291cmNlRnJv
bVN0b3BwaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHN0b3AoY2FsbGlu
Z09ic2VydmVyKTsKKworICAgIHN0b3AoKTsKKworICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVy
IDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKCZvYnNlcnZlciAhPSBjYWxsaW5nT2JzZXJ2
ZXIpCisgICAgICAgICAgICBvYnNlcnZlci5zb3VyY2VTdG9wcGVkKCk7CisgICAgfQogfQogCiBi
b29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN1cHBvcnRzU2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9w
dGlvbmFsPGludD4sIHN0ZDo6b3B0aW9uYWw8aW50Piwgc3RkOjpvcHRpb25hbDxkb3VibGU+KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCmluZGV4IGMxYmY2NzI5ZGZiYmE1ZTA0NGUwN2E1NTIwYWVkNjBlZDI5
YmY3MmYuLmJjZjNhOTdjODgyMTMwZDI3ZjVjZDA1NDZkZmY2NmNhNmUwN2ZmYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmgKQEAgLTEyNyw2MCArMTI3LDMwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwZXJz
aXN0ZW50SUQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRJRDsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBwZXJzaXN0ZW50SUQpIHsgbV9wZXJz
aXN0ZW50SUQgPSBwZXJzaXN0ZW50SUQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyc2lzdGVu
dElEKFN0cmluZyYmIHBlcnNpc3RlbnRJRCkgeyBtX3BlcnNpc3RlbnRJRCA9IFdURk1vdmUocGVy
c2lzdGVudElEKTsgfQogCiAgICAgZW51bSBjbGFzcyBUeXBlIHsgTm9uZSwgQXVkaW8sIFZpZGVv
IH07CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9
Ci0gICAgCi0gICAgdmlydHVhbCB1bnNpZ25lZCBmaXRuZXNzU2NvcmUoKSBjb25zdCB7IHJldHVy
biBtX2ZpdG5lc3NTY29yZTsgfQotCi0gICAgdmlydHVhbCBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgPSAwOwot
Ci0gICAgdXNpbmcgU3VjY2Vzc0hhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT47Ci0gICAg
dXNpbmcgRmFpbHVyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBi
YWRDb25zdHJhaW50LCBjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKT47Ci0gICAgdmlydHVhbCB2
b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYsIFN1Y2Nlc3NIYW5k
bGVyJiYsIEZhaWx1cmVIYW5kbGVyJiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4gYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJik7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJiwgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29uc3RyYWludChj
b25zdCBNZWRpYUNvbnN0cmFpbnQmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXR0aW5n
c0RpZENoYW5nZSgpOworICAgIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb2R1Y2luZ0RhdGE7IH0KKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7
CisgICAgdm9pZCByZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyID0gbnVsbHB0
cik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgCi0gICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpOwot
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCk7
CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KKyAgICB2b2lkIHNl
dE11dGVkKGJvb2wpOwogICAgIAotICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcHBlZDsgfQotCi0gICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9t
dXRlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKKyAgICBib29sIGVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwotCi0gICAgdmlydHVhbCBi
b29sIGlzQ2FwdHVyZVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgbW9uaXRvck9yaWVudGF0aW9uKE9yaWVudGF0aW9uTm90aWZpZXImKSB7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB2b2lk
IHNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KICAgICAKKyAg
ICB1bnNpZ25lZCBmaXRuZXNzU2NvcmUoKSBjb25zdCB7IHJldHVybiBtX2ZpdG5lc3NTY29yZTsg
fQorCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFByb2R1Y2luZ0RhdGEoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgc3RvcChPYnNlcnZlciogY2FsbGlu
Z09ic2VydmVyID0gbnVsbHB0cik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcChPYnNlcnZlciogY2Fs
bGluZ09ic2VydmVyID0gbnVsbHB0cik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKLQot
ICAgIHZpcnR1YWwgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIHsg
cmV0dXJuIG51bGxwdHI7IH0KLQogICAgIHZvaWQgc2V0V2lkdGgoaW50KTsKICAgICB2b2lkIHNl
dEhlaWdodChpbnQpOwogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KQEAgLTIxNCw2ICsxODQsMjcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RWNob0Nh
bmNlbGxhdGlvbihib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlFY2hvQ2FuY2VsbGF0aW9u
KGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGNvbnN0IFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMmIGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgc2V0dGluZ3MoKSBjb25zdCA9
IDA7CisKKyAgICB1c2luZyBTdWNjZXNzSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPjsK
KyAgICB1c2luZyBGYWlsdXJlSGFuZGxlciA9IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIGJhZENvbnN0cmFpbnQsIGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcpPjsKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJiwgU3VjY2Vz
c0hhbmRsZXImJiwgRmFpbHVyZUhhbmRsZXImJik7CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMmKTsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cmFpbnRzKGNvbnN0IE1lZGlh
Q29uc3RyYWludHMmLCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb25zdHJh
aW50KGNvbnN0IE1lZGlhQ29uc3RyYWludCYpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNl
dHRpbmdzRGlkQ2hhbmdlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJc29sYXRlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJlU291cmNlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb25pdG9yT3JpZW50
YXRpb24oT3JpZW50YXRpb25Ob3RpZmllciYpIHsgfQorCisgICAgdmlydHVhbCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCkBAIC0yMzEsMjYgKzIyMiwzMSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRmxhdHRlbmVkQ29uc3Ry
YWludCYpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNpemVBbmRGcmFtZVJhdGUoc3RkOjpvcHRp
b25hbDxpbnQ+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGludD4gaGVpZ2h0LCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4pOwogCi0gICAgY29uc3QgVmVjdG9yPE9ic2VydmVyKj4gb2JzZXJ2ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9vYnNlcnZlcnM7IH0KLQogICAgIHZvaWQgbm90aWZ5TXV0ZWRPYnNlcnZl
cnMoKSBjb25zdDsKKyAgICB2b2lkIG5vdGlmeU11dGVkQ2hhbmdlKGJvb2wgbXV0ZWQpOwogCiAg
ICAgdm9pZCBpbml0aWFsaXplVm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsgbV92b2x1bWUgPSB2b2x1
bWU7IH0KICAgICB2b2lkIGluaXRpYWxpemVTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKSB7IG1f
c2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVFY2hvQ2FuY2Vs
bGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikgeyBtX2VjaG9DYW5jZWxsYXRpb24gPSBlY2hv
Q2FuY2VsbGF0aW9uOyB9CiAKLSAgICBib29sIG1fbXV0ZWQgeyBmYWxzZSB9OwotICAgIGJvb2wg
bV9lbmFibGVkIHsgdHJ1ZSB9OwotCisgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRp
YVNhbXBsZSYpOworICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCk7CisgICAgCiBwcml2YXRlOgogICAgIFdlYWtQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgeyB9CisKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9lbmFibGVkIHsgdHJ1ZSB9OworCiAgICAgV2Vha1B0
ckZhY3Rvcnk8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV93ZWFrUHRyRmFjdG9yeTsKICAgICBTdHJp
bmcgbV9pZDsKICAgICBTdHJpbmcgbV9wZXJzaXN0ZW50SUQ7CiAgICAgVHlwZSBtX3R5cGU7CiAg
ICAgU3RyaW5nIG1fbmFtZTsKLSAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKKyAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxPYnNlcnZlcj4+IG1fb2JzZXJ2ZXJzOwog
ICAgIEludFNpemUgbV9zaXplOwogICAgIGRvdWJsZSBtX2ZyYW1lUmF0ZSB7IDMwIH07CiAgICAg
ZG91YmxlIG1fYXNwZWN0UmF0aW8geyAwIH07CkBAIC0yNjEsOSArMjU3LDkgQEAgcHJpdmF0ZToK
ICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlZpZGVvRmFjaW5nTW9kZSBtX2ZhY2lu
Z01vZGUgeyBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OlVzZXJ9OwogCiAgICAgYm9vbCBt
X2VjaG9DYW5jZWxsYXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fcGVuZGluZ1NldHRpbmdzRGlkQ2hhbmdlTm90aWZpY2F0aW9uIHsgZmFs
c2UgfTsKICAgICBib29sIG1fc3VwcHJlc3NOb3RpZmljYXRpb25zIHsgdHJ1ZSB9OworICAgIGJv
b2wgbV9pc1Byb2R1Y2luZ0RhdGEgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IENhcHR1cmVTb3Vy
Y2VPckVycm9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKaW5kZXggZjg0OTAxMGY3Mzkz
NWU2Y2MwNGI1ZjUxZmEwYTI3Y2NkZDU5N2FhZi4uNzE1MDFjMGQ3YmRmZjhiMDRhMzM2MzYzYjM1
MWI5MjQyZWJkZTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLmgKQEAgLTY4LDcgKzY4
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7Ci0gICAgYm9vbCBpc1Byb2R1Y2luZ0Rh
dGEoKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIEFWTWVkaWFDYXB0dXJlU291cmNl
KEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUpOwpAQCAtOTEsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBzZXR1cFNlc3Npb24oKTsKLSAgICB2b2lkIHJlc2V0KCkgZmluYWw7CiAKICAgICB2b2lk
IGJlZ2luQ29uZmlndXJhdGlvbigpIGZpbmFsOwogICAgIHZvaWQgY29tbWl0Q29uZmlndXJhdGlv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDEyMmJkYjhmNDk0
MDE4YzJjMDQ1YWJmODQ3NWQ5MWE2YWU1YmQ3MmEuLjU2NWJkOTg3NWU1MmMzNDg1MTY1ZTY0MGU0
Mjc0MWY1MzJkOWZiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVk1lZGlhQ2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTE0OCw4
ICsxNDgsNyBAQCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6QVZNZWRpYUNhcHR1cmVTb3VyY2UoQVZD
YXB0dXJlRGV2aWNlVHlwZWRlZiogZGV2aWNlLCBjb25zdAogICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8aW50PihJbnRlcnJ1cHRpb25SZWFzb246OkF1ZGlvSW5Vc2UpID09IEFWQ2FwdHVy
ZVNlc3Npb25JbnRlcnJ1cHRpb25SZWFzb25BdWRpb0RldmljZUluVXNlQnlBbm90aGVyQ2xpZW50
LCAiSW50ZXJydXB0aW9uUmVhc29uOjpBdWRpb0luVXNlIGlzIG5vdCBBVkNhcHR1cmVTZXNzaW9u
SW50ZXJydXB0aW9uUmVhc29uQXVkaW9EZXZpY2VJblVzZUJ5QW5vdGhlckNsaWVudCBhcyBleHBl
Y3RlZCIpOwogI2VuZGlmCiAgICAgCi0gICAgc2V0UGVyc2lzdGVudElEKGRldmljZS51bmlxdWVJ
RCk7Ci0gICAgc2V0TXV0ZWQodHJ1ZSk7CisgICAgc2V0UGVyc2lzdGVudElEKFN0cmluZyhkZXZp
Y2UudW5pcXVlSUQpKTsKIH0KIAogQVZNZWRpYUNhcHR1cmVTb3VyY2U6On5BVk1lZGlhQ2FwdHVy
ZVNvdXJjZSgpCkBAIC0yNjIsMTcgKzI2MSw2IEBAIHZvaWQgQVZNZWRpYUNhcHR1cmVTb3VyY2U6
OnNldHVwU2Vzc2lvbigpCiAgICAgW21fc2Vzc2lvbiBjb21taXRDb25maWd1cmF0aW9uXTsKIH0K
IAotdm9pZCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6cmVzZXQoKQotewotICAgIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OnJlc2V0KCk7Ci0gICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKLSAgICBmb3IgKE5T
U3RyaW5nICprZXlOYW1lIGluIHNlc3Npb25LVk9Qcm9wZXJ0aWVzKCkpCi0gICAgICAgIFttX3Nl
c3Npb24gcmVtb3ZlT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDprZXlO
YW1lXTsKLQotICAgIHNodXRkb3duQ2FwdHVyZVNlc3Npb24oKTsKLSAgICBtX3Nlc3Npb24gPSBu
dWxscHRyOwotfQotCiB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvbklz
UnVubmluZ0RpZENoYW5nZShib29sIHN0YXRlKQogewogICAgIHNjaGVkdWxlRGVmZXJyZWRUYXNr
KFt0aGlzLCBzdGF0ZV0gewpAQCAtMjgwLDE5ICsyNjgsMTAgQEAgdm9pZCBBVk1lZGlhQ2FwdHVy
ZVNvdXJjZTo6Y2FwdHVyZVNlc3Npb25Jc1J1bm5pbmdEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2lzUnVubmluZyA9IHN0YXRlOwotICAgICAg
ICBpZiAobV9tdXRlZCA9PSAhbV9pc1J1bm5pbmcpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbV9tdXRlZCA9ICFtX2lzUnVubmluZzsKLSAgICAgICAgbm90aWZ5TXV0ZWRPYnNlcnZl
cnMoKTsKKyAgICAgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1faXNSdW5uaW5nKTsKICAgICB9KTsK
IH0KIAotYm9vbCBBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6aXNQcm9kdWNpbmdEYXRhKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pc1J1bm5pbmc7Ci19Ci0KICNpZiBQTEFURk9STShJT1MpCiB2b2lk
IEFWTWVkaWFDYXB0dXJlU291cmNlOjpjYXB0dXJlU2Vzc2lvblJ1bnRpbWVFcnJvcihSZXRhaW5Q
dHI8TlNFcnJvcj4gZXJyb3IpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAK
aW5kZXggOGFmODFmYjIzZGU2NWJmOTg3OTJkMDJkNDk0N2U0MzA2ODE4NjdiMi4uNjcyOGNiMTQy
ZDIzODFmNGE1NzA4NDQwMmU1OGUyOWVlNDUwNzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcApAQCAtNjQ4LDggKzY0OCw2IEBAIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6
OkNvcmVBdWRpb0NhcHR1cmVTb3VyY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCwgY29uc3QgU3Ry
CiAgICAgOiBSZWFsdGltZU1lZGlhU291cmNlKGRldmljZUlELCBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbywgbGFiZWwpCiAgICAgLCBtX2NhcHR1cmVEZXZpY2VJRChwZXJzaXN0ZW50
SUQpCiB7Ci0gICAgbV9tdXRlZCA9IHRydWU7Ci0KICAgICBhdXRvJiB1bml0ID0gQ29yZUF1ZGlv
U2hhcmVkVW5pdDo6c2luZ2xldG9uKCk7CiAKICAgICBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlv
bih1bml0LmVuYWJsZUVjaG9DYW5jZWxsYXRpb24oKSk7CkBAIC02ODAsMjAgKzY3OCwxMSBAQCB2
b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZUVjaG9DYW5jZWxsYXRpb25Tb3VyY2Uo
QXVkaW9TYW1wbGVEYXRhU291cmNlJgogCiB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0KICNpZiBQTEFURk9STShJT1MpCiAgICAgY29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwogI2VuZGlmCiAKICAgICBDb3JlQXVk
aW9TaGFyZWRVbml0OjpzaW5nbGV0b24oKS5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICBtX2lz
UHJvZHVjaW5nRGF0YSA9IENvcmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLmlzUHJvZHVj
aW5nRGF0YSgpOwotCi0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9tdXRlZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRl
cikKICAgICAgICAgbV9hdWRpb1NvdXJjZVByb3ZpZGVyLT5wcmVwYXJlKCZDb3JlQXVkaW9TaGFy
ZWRVbml0OjpzaW5nbGV0b24oKS5taWNyb3Bob25lRm9ybWF0KCkuc3RyZWFtRGVzY3JpcHRpb24o
KSk7CkBAIC03MDEsMTIgKzY5MCw3IEBAIHZvaWQgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKIAogdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0
dXJuOwotCiAgICAgQ29yZUF1ZGlvU2hhcmVkVW5pdDo6c2luZ2xldG9uKCkuc3RvcFByb2R1Y2lu
Z0RhdGEoKTsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwotICAgIG1fbXV0ZWQgPSB0
cnVlOwogCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VQcm92aWRlcikKICAgICAgICAgbV9hdWRpb1Nv
dXJjZVByb3ZpZGVyLT51bnByZXBhcmUoKTsKQEAgLTc1Niw3ICs3NDAsNyBAQCBBdWRpb1NvdXJj
ZVByb3ZpZGVyKiBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
IHsKICAgICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikgewogICAgICAgICBtX2F1ZGlvU291
cmNlUHJvdmlkZXIgPSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlz
KTsKLSAgICAgICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQorICAgICAgICBpZiAoaXNQcm9kdWNp
bmdEYXRhKCkpCiAgICAgICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXItPnByZXBhcmUoJkNv
cmVBdWRpb1NoYXJlZFVuaXQ6OnNpbmdsZXRvbigpLm1pY3JvcGhvbmVGb3JtYXQoKS5zdHJlYW1E
ZXNjcmlwdGlvbigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5oCmlu
ZGV4IDgxZGZkNzZjMWFhZWNhMjNlZGYyZDg5OWY1OWMyY2Q3N2E3YTU1NjMuLjI2M2FkYmQ3YzA3
YWYwYmI3NmNlYjVhZjk1MDY3YzYxZjEzZmFmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVT
b3VyY2UuaApAQCAtODAsNyArODAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDYXB0dXJlU291
cmNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgc3RhcnRQcm9kdWNp
bmdEYXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAg
IGJvb2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KIAogICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgYm9vbCBhcHBseVNhbXBsZVJhdGUoaW50KSBmaW5hbDsKQEAgLTkzLDcgKzky
LDYgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQzMl90IG1fY2FwdHVyZURldmljZUlEIHsgMCB9Owog
Ci0gICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKIAogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBtX2NhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYy5tbQppbmRleCBiMGYyODNiMWRjNzQyZGQwOWFmNjUxZDc3MjVm
Y2FhNjcxYzhhYzk1Li5lYzJmNDA4MTQ1ZGM5ZTRlZTM1YTYxNjA4MDE3Y2NjZTY1YWY3YTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCkBAIC0xMDcsMTMgKzEw
Nyw2IEBAIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjp+TW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMoKQogICAgIH0KIH0KIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5h
bWUpKTsKLSAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19
Ci0KIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmVtaXRTYW1wbGVCdWZmZXJzKHVp
bnQzMl90IGZyYW1lQ291bnQpCiB7CiAgICAgQVNTRVJUKG1fZm9ybWF0RGVzY3JpcHRpb24pOwpA
QCAtMTU4LDcgKzE1MSw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRl
cihkb3VibGUgZGVsdGEpCiAgICAgICAgIHVpbnQzMl90IGJpcEJvcENvdW50ID0gc3RkOjptaW4o
ZnJhbWVDb3VudCwgYmlwQm9wUmVtYWluKTsKICAgICAgICAgZm9yIChhdXRvJiBhdWRpb0J1ZmZl
ciA6IG1fYXVkaW9CdWZmZXJMaXN0LT5idWZmZXJzKCkpIHsKICAgICAgICAgICAgIGF1ZGlvQnVm
ZmVyLm1EYXRhQnl0ZVNpemUgPSBmcmFtZUNvdW50ICogbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVy
RnJhbWU7Ci0gICAgICAgICAgICBpZiAoIW1fbXV0ZWQgJiYgbV9lbmFibGVkKSB7CisgICAgICAg
ICAgICBpZiAoIW11dGVkKCkgJiYgZW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgbWVtY3B5
KGF1ZGlvQnVmZmVyLm1EYXRhLCAmbV9iaXBCb3BCdWZmZXJbYmlwQm9wU3RhcnRdLCBzaXplb2Yo
RmxvYXQzMikgKiBiaXBCb3BDb3VudCk7CiAgICAgICAgICAgICAgICAgYWRkSHVtKEh1bVZvbHVt
ZSwgSHVtRnJlcXVlbmN5LCBzYW1wbGVSYXRlKCksIG1fc2FtcGxlc1JlbmRlcmVkLCBzdGF0aWNf
Y2FzdDxmbG9hdCo+KGF1ZGlvQnVmZmVyLm1EYXRhKSwgYmlwQm9wQ291bnQpOwogICAgICAgICAg
ICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXgg
YWQ0NTY1NjE1OGE4NzcwZjI4MDY2MjIzOGFmMzRlN2M4MmJkNjU5Zi4uMDBiM2E3ZTA5MjExZTZm
ZmIyOWQwNjdjOGE2Mzg1M2ZmY2UwY2Y2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZU1hYy5tbQpAQCAtNjUsMTMgKzY1LDYgQEAgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWM6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKIH0K
IAotUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIGF1dG8gc291cmNlID0g
YWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2Ut
Pm1fbXV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBzb3VyY2U7Ci19Ci0KIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWM6OkNNU2FtcGxlQnVmZmVy
RnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5j
cHAKaW5kZXggYTRmOWIzOGFlMmEyOGI3ZDcwNzllYzczYWRjODRhZmQ4NWQzNDgyYS4uYWM4MmM2
NjdmZDUwNGE1N2I3NzhkOGMxOTdkOWU1MzRiZDE4YjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogUmVmPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4gUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlOjpjcmVhdGUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFj
a0ludGVyZmFjZT4mJiBhdWRpb1RyYWNrLCBTdHJpbmcmJiBhdWRpb1RyYWNrSWQpCiB7CiAgICAg
YXV0byBzb3VyY2UgPSBhZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShX
VEZNb3ZlKGF1ZGlvVHJhY2spLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJZCkpKTsKLSAgICBzb3VyY2Ut
PnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIHNvdXJjZS0+c3RhcnQoKTsKICAgICByZXR1cm4g
c291cmNlOwogfQogCkBAIC01NSw2ICs1NSw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJyCiAg
ICAgOiBSZWFsdGltZU1lZGlhU291cmNlKFdURk1vdmUoYXVkaW9UcmFja0lkKSwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8sIFN0cmluZygpKQogICAgICwgbV9hdWRpb1RyYWNrKFdU
Rk1vdmUoYXVkaW9UcmFjaykpCiB7CisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFj
ayk7CiB9CiAKIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZSgpCkBAIC02Myw3ICs2NCw3IEBAIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZTo6flJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpCiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQ
cm92aWRlci0+dW5wcmVwYXJlKCk7CiAgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IG51
bGxwdHI7CiAgICAgfQotICAgIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgc3RvcCgpOwogfQog
CiAKQEAgLTExMiwyMCArMTEzLDEyIEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0c1BlclNhbXBsCiAKIHZvaWQg
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQogewotICAg
IGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pc1Byb2R1
Y2luZ0RhdGEgPSB0cnVlOwogICAgIGlmIChtX2F1ZGlvVHJhY2spCiAgICAgICAgIG1fYXVkaW9U
cmFjay0+QWRkU2luayh0aGlzKTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IGZhbHNlOwogICAgIGlm
IChtX2F1ZGlvVHJhY2spCiAgICAgICAgIG1fYXVkaW9UcmFjay0+UmVtb3ZlU2luayh0aGlzKTsK
IH0KQEAgLTEzNiw3ICsxMjksOCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaQogICAgIEFTU0VS
VCh0cmFjayk7CiAKICAgICBtX2F1ZGlvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKLSAgICBpZiAo
bV9pc1Byb2R1Y2luZ0RhdGEpCisgICAgbm90aWZ5TXV0ZWRDaGFuZ2UoIW1fYXVkaW9UcmFjayk7
CisgICAgaWYgKGlzUHJvZHVjaW5nRGF0YSgpKQogICAgICAgICBtX2F1ZGlvVHJhY2stPkFkZFNp
bmsodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApp
bmRleCA4NTJjZTk3ZjIyOTNlYzkzMDFiNzQxODBlZTdhYzU5MWIyMzVjZDNkLi42MjVlM2Q5ODhi
NzI0MGI3NDU4YzQ4YmM5YWZiY2NkMjBhYTMwNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oCkBAIC02NywxNCArNjcsMTEgQEAgcHJpdmF0ZToKICAgICBNZWRp
YUNvbnN0cmFpbnRzJiBjb25zdHJhaW50cygpIHsgcmV0dXJuICptX2NvbnN0cmFpbnRzLmdldCgp
OyB9CiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBzdXBwb3J0
ZWRDb25zdHJhaW50cygpOwogCi0gICAgYm9vbCBpc1Byb2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YTsgfQotCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRl
ciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzIG1fY3VycmVudFNldHRpbmdzOwogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBw
b3J0ZWRDb25zdHJhaW50cyBtX3N1cHBvcnRlZENvbnN0cmFpbnRzOwogICAgIFJlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIGJvb2wgbV9pc1Byb2R1Y2luZ0RhdGEg
eyBmYWxzZSB9OwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRl
cmZhY2U+IG1fYXVkaW9UcmFjazsKIAogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlLmNwcAppbmRleCBmNTA5NmZiMGYwYTA2MWQ0NTljMTFhZDJmMTEwNmRm
MTM1M2JhMTVhLi4xNGY4ZTE4OGFiMDAwN2RjNzUwNDEyM2M2ODFiYmM0NGFmZTk2MzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtNTgsNyArNTgs
NyBAQCBSZWY8UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlPiBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2U6OmNyZWF0ZShydGM6OnNjb3BlZAogICAgIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yg
Y29uZm9ybWVyKGNvbmZvcm1lck9wdGlvbnMuZ2V0KCkpOwogCiAgICAgYXV0byBzb3VyY2UgPSBh
ZG9wdFJlZigqbmV3IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZShXVEZNb3ZlKHZpZGVvVHJh
Y2spLCBXVEZNb3ZlKHRyYWNrSWQpLCBjb25mb3JtZXJPcHRpb25zLmdldCgpKSk7Ci0gICAgc291
cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CiAgICAgcmV0
dXJuIHNvdXJjZTsKIH0KIApAQCAtNjcsMTcgKzY3LDEzIEBAIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJyCiAgICAgLCBtX3ZpZGVvVHJhY2soV1RGTW92ZSh2aWRlb1RyYWNrKSkKICAgICAsIG1fY29u
Zm9ybWVyKGNvbmZvcm1lck9wdGlvbnMpCiB7Ci0gICAgbV9tdXRlZCA9ICFtX3ZpZGVvVHJhY2s7
CiAgICAgbV9jdXJyZW50U2V0dGluZ3Muc2V0V2lkdGgoNjQwKTsKICAgICBtX2N1cnJlbnRTZXR0
aW5ncy5zZXRIZWlnaHQoNDgwKTsKKyAgICBub3RpZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNr
KTsKIH0KIAogdm9pZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCiB7Ci0gICAgaWYgKG1faXNQcm9kdWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7CiAgICAgaWYgKG1fdmlkZW9UcmFjaykKICAg
ICAgICAgbV92aWRlb1RyYWNrLT5BZGRPclVwZGF0ZVNpbmsodGhpcywgcnRjOjpWaWRlb1NpbmtX
YW50cygpKTsKIH0KQEAgLTg3LDE4ICs4MywxNCBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZTo6c2V0U291cmNlVHJhY2socnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZQog
ICAgIEFTU0VSVCghbV92aWRlb1RyYWNrKTsKICAgICBBU1NFUlQodHJhY2spOwogCi0gICAgbV9t
dXRlZCA9IGZhbHNlOwotICAgIG1fdmlkZW9UcmFjayA9IHRyYWNrOwotICAgIGlmIChtX2lzUHJv
ZHVjaW5nRGF0YSkKKyAgICBtX3ZpZGVvVHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKKyAgICBub3Rp
ZnlNdXRlZENoYW5nZSghbV92aWRlb1RyYWNrKTsKKyAgICBpZiAoaXNQcm9kdWNpbmdEYXRhKCkp
CiAgICAgICAgIG1fdmlkZW9UcmFjay0+QWRkT3JVcGRhdGVTaW5rKHRoaXMsIHJ0Yzo6VmlkZW9T
aW5rV2FudHMoKSk7CiB9CiAKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzdG9w
UHJvZHVjaW5nRGF0YSgpCiB7Ci0gICAgaWYgKCFtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKICAgICBpZiAobV92aWRl
b1RyYWNrKQogICAgICAgICBtX3ZpZGVvVHJhY2stPlJlbW92ZVNpbmsodGhpcyk7CiB9CkBAIC0x
MzMsNyArMTI1LDcgQEAgQ1ZQaXhlbEJ1ZmZlclJlZiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2U6OnBpeGVsQnVmZmVyRnJvbVZpZGVvRnJhbWUoY29uc3Qgd2UKIAogdm9pZCBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2U6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRlb0ZyYW1lJiBmcmFt
ZSkKIHsKLSAgICBpZiAoIW1faXNQcm9kdWNpbmdEYXRhKQorICAgIGlmICghaXNQcm9kdWNpbmdE
YXRhKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhlbEJ1
ZmZlckZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuaAppbmRleCA0MmY5MjZmNDFjYWMwYzE4ZDg0ZmNmNGYyZDZiOTQwNWZlOWUwYjAw
Li5kNGEzZjQzZjgwMmJjOTA0NDg3N2I3OWE5YTcyMjY4OTBhM2IyMWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5oCkBAIC02Niw3ICs2Niw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHByb2Nlc3NOZXdTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYsIHVuc2lnbmVk
LCB1bnNpZ25lZCwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24pOwogCi0gICAgYm9vbCBpc1By
b2R1Y2luZ0RhdGEoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUHJvZHVjaW5nRGF0YSAmJiBt
X2J1ZmZlcjsgfQogICAgIGJvb2wgYXBwbHlTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAvLyBydGM6OlZpZGVvU2lua0ludGVyZmFjZQpAQCAtNzgsNyAr
NzcsNiBAQCBwcml2YXRlOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJl
bnRTZXR0aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMg
bV9zdXBwb3J0ZWRDb25zdHJhaW50czsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV9j
b25zdHJhaW50czsKLSAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAgICBy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb1RyYWNrSW50ZXJmYWNlPiBtX3ZpZGVvVHJh
Y2s7CiAgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBtX2J1ZmZlcjsKICAgICBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWIG1fY29uZm9ybWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IDk0ZWMyNWU1Yjg5YmE0YjQ1ODliOGU5YjViNzc4
MWJkNThiMjk2N2UuLmQzYWE5Njg4Mzg4YjIzMDFhNzQwMTY3MDEwZGZmYWY1Y2FmZjFiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDbGllbnQo
QXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCogY2xpZW50KQogICAgIGlmIChtX2NsaWVudCAmJiAh
bV9jb25uZWN0ZWQpIHsKICAgICAgICAgbV9jb25uZWN0ZWQgPSB0cnVlOwogICAgICAgICBtX2Nh
cHR1cmVTb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNl
LT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgbV9jYXB0dXJlU291cmNlLT5zdGFydCgp
OwogICAgIH0gZWxzZSBpZiAoIW1fY2xpZW50ICYmIG1fY29ubmVjdGVkKSB7CiAgICAgICAgIG1f
Y2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBtX2Nvbm5lY3Rl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvTWVkaWFFbmRwb2ludE93ci5jcHAKaW5kZXggNjE1
ZWM5ZTFkOGI1MDczZWJkZjg5MTY3MTk4ZDk5MjI2NDA2MzkyNi4uOGE1ODQ4NjcyNTQ4M2MyZGNl
MGE0MjQ0YjRlZGUxNWZiZmFiZDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9NZWRpYUVuZHBvaW50T3dyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL01lZGlhRW5kcG9pbnRP
d3IuY3BwCkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBNZWRpYUVuZHBvaW50T3dyOjp1bm11dGVS
ZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQsIE93ck1lZGlhU291cmNlKiByZWEKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghcmVtb3RlU291cmNlLT5zdG9wcGVkKCkpCisg
ICAgaWYgKHJlbW90ZVNvdXJjZS0+aXNQcm9kdWNpbmdEYXRhKCkpCiAgICAgICAgIHJlbW90ZVNv
dXJjZS0+c3dhcE91dFNoYWxsb3dTb3VyY2UoKnJlYWxTb3VyY2UpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1l
TWVkaWFTb3VyY2VPd3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29w
ZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCmluZGV4IDNhZTM3NjI3YTg4MDU0YTc5
MGMxOTcwNjQ3YjU0YmNmZGMyYWQxNTUuLjdjZmJmNzhmMjU4ZDkwOGE1NDRiOTliMWVjOTgyODRi
NTMzZTRhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZU93ci5o
CkBAIC01NSw3ICs1NSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2VPd3IoT3dyTWVkaWFTb3VyY2Uq
IG1lZGlhU291cmNlLCBjb25zdCBTdHJpbmcmIGlkLCBSZWFsdGltZU1lCiAgICAgLCBtX21lZGlh
U291cmNlKG1lZGlhU291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFtZWRpYVNvdXJjZSkKLSAg
ICAgICAgICAgIG1fbXV0ZWQgPSB0cnVlOworICAgICAgICAgICAgbm90aWZ5TXV0ZWRDaGFuZ2Uo
dHJ1ZSk7CiAgICAgfQogCiBSZWFsdGltZU1lZGlhU291cmNlT3dyKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApp
bmRleCBjNDdlNzViNzRiNDU0MTM2MThjNDI1ODNlYzg3OGU4YjA5NmNjODVhLi4zNzVjZTdkZmRi
Y2Y2MWJlMDgyMzk1NDI4MDYzZjYwN2Q4NDMxMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBA
IFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBNb2NrTWVkaWFFbmRwb2ludDo6Y3JlYXRlTXV0ZWRS
ZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nCiAgICAgfQogCiAgICAgbV9tdXRlZFJlbW90ZVNvdXJj
ZXMuc2V0KG1pZCwgc291cmNlKTsKLSAgICByZXR1cm4gKnNvdXJjZTsKKyAgICByZXR1cm4gc291
cmNlLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OnJlcGxh
Y2VTZW5kU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UmIG5ld1NvdXJjZSwgY29uc3QgU3RyaW5n
JiBtaWQpCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5tdXRl
UmVtb3RlU291cmNlc0J5TWlkKCkKIAogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6dW5tdXRlVGlt
ZXJGaXJlZCgpCiB7Ci0gICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSA9IG1f
bXV0ZWRSZW1vdGVTb3VyY2VzLmdldChtX21pZHNPZlNvdXJjZXNUb1VubXV0ZS50YWtlTGFzdCgp
KTsKKyAgICBhdXRvKiBzb3VyY2UgPSBtX211dGVkUmVtb3RlU291cmNlcy5nZXQobV9taWRzT2ZT
b3VyY2VzVG9Vbm11dGUudGFrZUxhc3QoKSk7CiAgICAgaWYgKHNvdXJjZSkKICAgICAgICAgc291
cmNlLT5zZXRNdXRlZChmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggNTgxYmUyOWM0ODdi
NTUzMzg2MzUxNDBhZmZjZGZkZmFlZDc3YWFiNC4uYzg1ZDljZWE1MTQxZTU4YmY3NDM0YThhNDU0
NDYzYjQxNGVmNzdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTY1LDE0ICs2NSwxNCBAQCBDYXB0
dXJlU291cmNlT3JFcnJvciBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgTQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdU
Rk1vdmUoc291cmNlKSk7CiB9CisjZW5kaWYKIAotUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQorUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gc291cmNlID0g
YWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2Ut
Pm1fbXV0ZWQgPSB0cnVlOworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5ub3RpZnlNdXRlZENoYW5nZSh0
cnVlKTsKICAgICByZXR1cm4gc291cmNlOwogfQotI2VuZGlmCiAKIHN0YXRpYyBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZUZhY3RvcnkmIG1vY2tBdWRpb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKIHsK
QEAgLTEyMSwxMSArMTIxLDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlh
bGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2UKIAogdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAobV9p
c1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNQcm9kdWNpbmdEYXRh
ID0gdHJ1ZTsKLQogI2lmIFBMQVRGT1JNKElPUykKICAgICBtb2NrQXVkaW9DYXB0dXJlU291cmNl
RmFjdG9yeSgpLnNldEFjdGl2ZVNvdXJjZSgqdGhpcyk7CiAjZW5kaWYKQEAgLTEzMywyMCArMTI4
LDEyIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgp
CiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCiAgICAgICAgIHNldFNhbXBsZVJhdGUoIWRldmljZUlu
ZGV4KCkgPyA0NDEwMCA6IDQ4MDAwKTsKIAotICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpz
dGFydFByb2R1Y2luZ0RhdGEoKTsKLQogICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCk7CiAgICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhyZW5kZXJJbnRlcnZh
bCgpKTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0Rh
dGEoKQogewotICAgIGlmICghbV9pc1Byb2R1Y2luZ0RhdGEpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1faXNQcm9kdWNpbmdEYXRhID0gZmFsc2U7Ci0KLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKTsKICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2Vs
YXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7
CiAgICAgbV9zdGFydFRpbWUgPSBOQU47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNjdlZTU5ZTZiMDVhNDdj
ODFjMThiNTkwZDQ1Zjk3YTk3ZjA5ZDA3MS4uM2ExOWZhMDdkYjliMmY0MzljZGY2ZmZlZTBiMGY5
NWZlNDMyOTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZSB7CiBwdWJs
aWM6CiAKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3JlYXRlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpOworICAgIHN0
YXRpYyBSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmlu
ZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgQXVkaW9DYXB0dXJlRmFjdG9yeSYgZmFjdG9yeSgpOwog
CkBAIC01NCw3ICs1NCw2IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdE
YXRhKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOwotICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1Byb2R1Y2luZ0Rh
dGE7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXIoZG91YmxlKSB7IH0KIApAQCAtODAsNyAr
NzksNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IE5BTiB9OwogICAgIGRv
dWJsZSBtX2xhc3RSZW5kZXJUaW1lIHsgTkFOIH07CiAgICAgZG91YmxlIG1fZWxhcHNlZFRpbWUg
eyAwIH07Ci0gICAgYm9vbCBtX2lzUHJvZHVjaW5nRGF0YSB7IGZhbHNlIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDc2NzIzYWVhYzZiYTg0Yzc3
MDU0NWMxNzNiYWRlMzgwMDQxOWQxMmUuLjQ0MGJiOThkNmQyODYwN2Q0YjZmOTAyZDkzZmFiZDBk
Mzc0YzkzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC04MCwxMSArODAsMTEgQEAgTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Ok1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQs
IFJlYWx0aW1lTWVkaWEKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvOgogICAgICAgICBtX2RldmljZUluZGV4ID0gbmFtZSA9PSBh
dWRpb0RldmljZXMoKVswXS5sYWJlbCgpID8gMCA6IDE7Ci0gICAgICAgIHNldFBlcnNpc3RlbnRJ
RChhdWRpb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0ZW50SWQoKSk7CisgICAgICAg
IHNldFBlcnNpc3RlbnRJRChTdHJpbmcoYXVkaW9EZXZpY2VzKClbbV9kZXZpY2VJbmRleF0ucGVy
c2lzdGVudElkKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZTo6VmlkZW86CiAgICAgICAgIG1fZGV2aWNlSW5kZXggPSBuYW1lID09IHZpZGVv
RGV2aWNlcygpWzBdLmxhYmVsKCkgPyAwIDogMTsKLSAgICAgICAgc2V0UGVyc2lzdGVudElEKHZp
ZGVvRGV2aWNlcygpW21fZGV2aWNlSW5kZXhdLnBlcnNpc3RlbnRJZCgpKTsKKyAgICAgICAgc2V0
UGVyc2lzdGVudElEKFN0cmluZyh2aWRlb0RldmljZXMoKVttX2RldmljZUluZGV4XS5wZXJzaXN0
ZW50SWQoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMiwxOCAr
MTMyLDYgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZTo6c3VwcG9ydGVkQ29uc3QKICAgICByZXR1cm4gbV9zdXBwb3J0ZWRD
b25zdHJhaW50czsKIH0KIAotdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9k
dWNpbmdEYXRhKCkKLXsKLSAgICBtX2lzUHJvZHVjaW5nRGF0YSA9IHRydWU7Ci0gICAgc2V0TXV0
ZWQoZmFsc2UpOwotfQotCi12b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpCi17Ci0gICAgbV9pc1Byb2R1Y2luZ0RhdGEgPSBmYWxzZTsKLSAgICBzZXRNdXRl
ZCh0cnVlKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaAppbmRleCA5YTVhZDFkMjA0ODIwNGUwMDUyYmI1ZDY1
N2UyNjI4NTZjMWJjYWFkLi41MDZlNDgyYTJjZmFjNmZjMzg1YTBlZTA1MWVlNTIwN2RjNzk0YTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZS5oCkBAIC02NSw5ICs2NSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VT
dXBwb3J0ZWRDb25zdHJhaW50cyYpID0gMDsKICNlbmRpZgogCi0gICAgdm9pZCBzdGFydFByb2R1
Y2luZ0RhdGEoKSBvdmVycmlkZTsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgb3ZlcnJp
ZGU7Ci0KICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBjYXBhYmls
aXRpZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3MmIHNldHRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTg0LDE0ICs4MSwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVNldHRpbmdzKCk7CiAjZW5kaWYKIAotICAgIGJv
b2wgaXNQcm9kdWNpbmdEYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1Byb2R1Y2lu
Z0RhdGE7IH0KLQogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0
aW5nczsKICAgICBSZWFsdGltZU1lZGlhU291cmNlU3VwcG9ydGVkQ29uc3RyYWludHMgbV9zdXBw
b3J0ZWRDb25zdHJhaW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZUNhcGFiaWxpdGllcz4gbV9jYXBhYmlsaXRpZXM7CiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IG1fY29uc3RyYWludHM7CiAgICAgdW5zaWduZWQgbV9kZXZpY2VJbmRleCB7IDAgfTsKLSAg
ICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMGYxNzkxOTc5NmY2OGU4ZDk5Y2UyYzkwYjg2
ZWJjZjEzOGI1ZWEzNC4uMmFkN2FiMzUzZGEwMGJlNWVhYTUzYTNjYjAxNTUwMzU5NjI4MTMwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAKQEAgLTcyLDE0ICs3MiwxNCBAQCBDYXB0dXJlU291cmNlT3JFcnJv
ciBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgTQogCiAgICAgcmV0dXJuIENhcHR1cmVTb3VyY2VPckVycm9yKFdURk1vdmUoc291cmNlKSk7
CiB9CisjZW5kaWYKIAotUmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQorUmVmPE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKLSAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVl
OworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZShuYW1lKSk7CisgICAgc291cmNlLT5ub3RpZnlNdXRlZENoYW5nZSh0cnVlKTsKICAgICByZXR1
cm4gc291cmNlOwogfQotI2VuZGlmCiAKIHN0YXRpYyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUZh
Y3RvcnkmIG1vY2tWaWRlb0NhcHR1cmVTb3VyY2VGYWN0b3J5KCkKIHsKQEAgLTExMiwxNiArMTEy
LDEwIEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjp+TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2Uo
KQogCiB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQog
ewotICAgIGlmIChtX2lzUHJvZHVjaW5nRGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IG1faXNQcm9kdWNpbmdEYXRhID0gdHJ1ZTsKLSAgICAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
bW9ja1ZpZGVvQ2FwdHVyZVNvdXJjZUZhY3RvcnkoKS5zZXRBY3RpdmVTb3VyY2UoKnRoaXMpOwog
I2VuZGlmCiAKLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRh
KCk7CiAgICAgaWYgKHNpemUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgc2V0V2lkdGgoNjQwKTsK
ICAgICAgICAgc2V0SGVpZ2h0KDQ4MCk7CkBAIC0xMzMsMTIgKzEyNyw2IEBAIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1faXNQcm9k
dWNpbmdEYXRhKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9pc1Byb2R1Y2luZ0RhdGEg
PSBmYWxzZTsKLSAgICAKLSAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2lu
Z0RhdGEoKTsKICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWU7CiAgICAgbV9zdGFydFRpbWUg
PSBOQU47CkBAIC0zODQsNyArMzcyLDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6
Z2VuZXJhdGVGcmFtZSgpCiAgICAgRmxvYXRSZWN0IGZyYW1lUmVjdChGbG9hdFBvaW50KCksIHNp
emUpOwogICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSks
ICFkZXZpY2VJbmRleCgpID8gQ29sb3I6OmJsYWNrIDogQ29sb3I6OmRhcmtHcmF5KTsKIAotICAg
IGlmICghbV9tdXRlZCAmJiBtX2VuYWJsZWQpIHsKKyAgICBpZiAoIW11dGVkKCkgJiYgZW5hYmxl
ZCgpKSB7CiAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQpOwogICAgICAgICBkcmF3QW5pbWF0aW9u
KGNvbnRleHQpOwogICAgICAgICBkcmF3Qm94ZXMoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKaW5kZXgg
YzQzOWFkZDJlYTZjZTk3YjU0MTIzNzA2YzBlMzM3ZWEwNmFjMjIzMy4uYzc1NjhlMmViMzg3ZTM1
MWJkYmM1OTRiNDI4ZGZmMjk2OGI4YzIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaApAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSA6IHB1YmxpYyBNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZSB7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgQ2FwdHVyZVNvdXJjZU9yRXJyb3IgY3Jl
YXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKLSAgICBzdGF0aWMg
UmVmUHRyPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcm
IG5hbWUpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11
dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICBzdGF0aWMgVmlkZW9DYXB0dXJlRmFjdG9y
eSYgZmFjdG9yeSgpOwogCkBAIC02OSw3ICs2OSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0
YXJ0UHJvZHVjaW5nRGF0YSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBm
aW5hbDsKLSAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aXNQcm9kdWNpbmdEYXRhOyB9CiAKICAgICB2b2lkIGRyYXdBbmltYXRpb24oR3JhcGhpY3NDb250
ZXh0Jik7CiAgICAgdm9pZCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmKTsKQEAgLTEwMyw3ICsx
MDIsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZnJhbWVOdW1iZXIgeyAwIH07CiAKICAg
ICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gbV90aW1lcjsKLSAgICBi
b29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNwcAppbmRleCA2Y2RiYTFmNzU5M2IwZTRl
MmE1NzkxNTgzMDA1NWY3NzAxZDkzYTY5Li5lZTgxMmQ5ZWY1Mjc3MzNiNDgzMDI3NzhhMjI5NjFl
YzkzOGQ1MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xNTQsMTQgKzE1
NCwxNCBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0YXJ0UHJvZHVjaW5n
RGF0YSh1aW50NjRfdCBpZCkKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3Byb3hpZXMuZmluZChpZCk7
CiAgICAgaWYgKGl0ZXIgIT0gbV9wcm94aWVzLmVuZCgpKQotICAgICAgICBpdGVyLT52YWx1ZS0+
c291cmNlKCkuc3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgICAgIGl0ZXItPnZhbHVlLT5zb3Vy
Y2UoKS5zdGFydCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk6OnN0
b3BQcm9kdWNpbmdEYXRhKHVpbnQ2NF90IGlkKQogewogICAgIGF1dG8gaXRlciA9IG1fcHJveGll
cy5maW5kKGlkKTsKICAgICBpZiAoaXRlciAhPSBtX3Byb3hpZXMuZW5kKCkpCi0gICAgICAgIGl0
ZXItPnZhbHVlLT5zb3VyY2UoKS5zdG9wUHJvZHVjaW5nRGF0YSgpOworICAgICAgICBpdGVyLT52
YWx1ZS0+c291cmNlKCkuc3RvcCgpOwogfQogCiB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHk6OmNhcGFiaWxpdGllcyh1aW50NjRfdCBpZCwgV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZUNhcGFiaWxpdGllcyYgY2FwYWJpbGl0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9jb2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCAzZTM1YzI3NTVkYjk4ZTJmMzJkMjFkNDU0MDE1OGYyMDljZDQ3N2E2Li44ZDU2Y2IyNThiMmU0
ZmY4MDM0MGQxOWE0YTE0NmU5NDkwMDVmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcApAQCAt
MTEwLDggKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgV2ViQXVkaW9CdWZmZXJMaXN0IGF1ZGlv
RGF0YShtX2Rlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiAgICAgICAgIG1fcmluZ0J1ZmZl
ci5mZXRjaChhdWRpb0RhdGEubGlzdCgpLCBudW1iZXJPZkZyYW1lcywgdGltZS50aW1lVmFsdWUo
KSk7CiAKLSAgICAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVycygpKQotICAgICAg
ICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0aW1lLCBhdWRpb0RhdGEsIG1f
ZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgbV9kZXNjcmlwdGlvbiwg
bnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIAogICAgIHZvaWQgYXBwbHlDb25zdHJhaW50c1N1Y2Nl
ZWRlZChjb25zdCBXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmIHNldHRpbmdz
KQpAQCAtMTI3LDI0ICsxMjYsNiBAQCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrcy5mYWlsdXJl
SGFuZGxlcihmYWlsZWRDb25zdHJhaW50LCBlcnJvck1lc3NhZ2UpOwogICAgIH0KIAotICAgIHZv
aWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX211dGVk
ID09IG11dGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fbXV0ZWQgPSBtdXRl
ZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldE11dGVkKG1faWQsIG1fbXV0ZWQpOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIGZpbmFsCi0gICAgewotICAgICAgICBp
ZiAobV9lbmFibGVkID09IGVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
bV9lbmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgbV9tYW5hZ2VyLnNldEVuYWJsZWQobV9pZCwg
bV9lbmFibGVkKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFByb2R1Y2luZ0Rh
dGEoKSBmaW5hbCB7IG1fbWFuYWdlci5zdGFydFByb2R1Y2luZ0RhdGEobV9pZCk7IH0KICAgICB2
b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWwgeyBtX21hbmFnZXIuc3RvcFByb2R1Y2luZ0Rh
dGEobV9pZCk7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>