<?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>226131</bug_id>
          
          <creation_ts>2021-05-21 19:09:50 -0700</creation_ts>
          <short_desc>Use CheckedLock in SpeechRecognitionCaptureSourceImpl</short_desc>
          <delta_ts>2021-05-25 16:06:06 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226247</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ggaren</cc>
    
    <cc>jer.noble</cc>
    
    <cc>sam</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762721</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 19:09:50 -0700</bug_when>
    <thetext>Use CheckedLock in SpeechRecognitionCaptureSourceImpl to benefit from Clang Thread Safety Analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762724</commentid>
    <comment_count>1</comment_count>
      <attachid>429389</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 19:16:00 -0700</bug_when>
    <thetext>Created attachment 429389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762747</commentid>
    <comment_count>2</comment_count>
      <attachid>429395</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 20:17:02 -0700</bug_when>
    <thetext>Created attachment 429395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762759</commentid>
    <comment_count>3</comment_count>
      <attachid>429395</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-21 22:03:49 -0700</bug_when>
    <thetext>Comment on attachment 429395
Patch

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

I’m not sure I have the skills to know that the WTF_IGNORES_THREAD_SAFETY_ANALYSIS is safe because we must not lock on the audio thread, but to understand why locking in updateDataSource is also OK. But I will take your word for it. Refactoring looks like it was done correctly without introducing errors.

&gt; Source/WebCore/Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:128
&gt; +// This function uses m_dataSource without locking. It is safe becuase this function only get called on the audio thread and m_dataSource only gets modified on the

Typo in because</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762761</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 22:06:26 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 429395 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429395&amp;action=review
&gt; 
&gt; I’m not sure I have the skills to know that the
&gt; WTF_IGNORES_THREAD_SAFETY_ANALYSIS is safe because we must not lock on the
&gt; audio thread, but to understand why locking in updateDataSource is also OK.
&gt; But I will take your word for it. Refactoring looks like it was done
&gt; correctly without introducing errors.

tryLock() on the audio thread is OK, lock() isn&apos;t. We never want to be have the audio thread wait on a lock.

&gt; 
&gt; &gt; Source/WebCore/Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:128
&gt; &gt; +// This function uses m_dataSource without locking. It is safe becuase this function only get called on the audio thread and m_dataSource only gets modified on the
&gt; 
&gt; Typo in because

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762764</commentid>
    <comment_count>5</comment_count>
      <attachid>429402</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 22:10:27 -0700</bug_when>
    <thetext>Created attachment 429402
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762768</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 22:26:52 -0700</bug_when>
    <thetext>For the record, the reason I think the current code is thread-safe is that:
- m_dataSource pointer only gets set on the audio thread (with a lock)
- we always grab the lock when using m_dataSource pointer on the main thread
- We don&apos;t grab the lock when *using* m_dataSource pointer on the audio thread but I believe this is fine given that the pointer only gets set on the same audio thread.

So at least, for the pointer access point of view, I believe we are OK. Then, comes the other question, is it OK to call AudioSampleDataSource::pushSamples() &amp; AudioSampleDataSource::pullSamples() on different threads without synchronization. This part is a bit harder. AudioSampleDataSource is using a CARingBuffer and my understanding is that it is safe to push &amp; push on different threads on a CARingBuffer.

However, AudioSampleDataSource has some additional logic besides using the CARingBuffer and that seems a lot more fragile. Both push &amp; pull seem to be using m_inputSampleOffset &amp; m_lastPushedSampleCount without synchronization for e.g.
I am curious what our media experts think about that.

The patch definitely doesn&apos;t make things less safe. But since I had to use WTF_IGNORES_THREAD_SAFETY_ANALYSIS, it is hard to guarantee that the code was thread-safe in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762819</commentid>
    <comment_count>7</comment_count>
      <attachid>429415</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-22 09:52:37 -0700</bug_when>
    <thetext>Created attachment 429415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762835</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-22 13:10:48 -0700</bug_when>
    <thetext>Committed r277921 (238054@main): &lt;https://commits.webkit.org/238054@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429415.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762836</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-22 13:11:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/78354801&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429389</attachid>
            <date>2021-05-21 19:16:00 -0700</date>
            <delta_ts>2021-05-21 20:17:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226131-20210521191559.patch</filename>
            <type>text/plain</type>
            <size>8546</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjE2NDA3ODFiZTQ2
YjI4OTZlMjhkZTUyMzU5ZGMxYjAwNDJlNi4uZmFhZDE3MzE5YmU4YWQ0MjFmYWYzODY1OTY5NDg3
MzA1MjgwNDU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENoZWNrZWRMb2NrIGlu
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBDaGVja2VkTG9jayBpbiBTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQKKyAg
ICAgICAgU2FmZXR5IEFuYWx5c2lzLiBOb3RlIHRoYXQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKCkg
ZG9lcyBub3QgZ3JhYiB0aGUgbG9jayBiZWZvcmUgdXNpbmcKKyAgICAgICAgbV9kYXRhU291cmNl
LCBvbmx5IHdoZW4gc2V0dGluZyB0aGUgZGF0YSBtZW1iZXIuIEhvd2V2ZXIsIEkgYmVsaWV2ZSBp
dCBpcyBzYWZlIGhlcmUKKyAgICAgICAgc2luY2UgbV9kYXRhU291cmNlIG9ubHkgZ2V0IHNldCBv
biB0aGUgYXVkaW8gdGhyZWFkIHNvIGNoZWNraW5nIGl0IG9uIHRoZSBhdWRpbyB0aHJlYWQKKyAg
ICAgICAgaXMgZmluZS4gRm9yIHRoaXMgcmVhc29uLCBhbmQgYmVjYXVzZSB3ZSBjYW5ub3QgZ3Jh
YiB0aGUgbG9jayBvbiB0aGUgYXVkaW8gdGhyZWFkIGZvcgorICAgICAgICBwZXJmb3JtYW5jZSBy
ZWFzb25zLCBJIGhhdmUgYWRkZWQgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBv
bgorICAgICAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUoKS4gSG93ZXZlciwgSSBoYXZlIG1vdmVk
IHRoZSBsb2dpYyB0byBzZXQgbV9kYXRhU291cmNlIG9uIHRoZQorICAgICAgICBhdWRpbyB0aHJl
YWQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHNvIHRoYXQgaXQgYmVuZWZpdHMgZnJvbSBhbmFs
eXNpcy4gQWxzbywgSSBoYXZlCisgICAgICAgIG1vdmVkIHRoZSBjb2RlIHRoYXQgdXNlcyBtX2Rh
dGFTb3VyY2Ugb24gbWFpbiB0aHJlYWQgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhlCisg
ICAgICAgIHNhbWUgcmVhc29uLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjp1cGRhdGVEYXRhU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OnB1bGxTYW1wbGVz
QW5kQ2FsbERhdGFDYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRDb25kaXRpb24gaW4gbW9y
ZSBwbGFjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAKaW5kZXggNjFi
MjZmMWY5NWJhMDAzMzFiMzkwYzEwZjRmMDlhMjAwOTlkZDQzNS4uZWY2YmQwZmRlYTNhZDk5Yzc4
MTAyODQxMWMzODYxNjBmN2M2ZDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
SW1wbC5jcHAKQEAgLTgwLDQ5ICs4MCw3MSBAQCBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3Vy
Y2VJbXBsOjp+U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbCgpCiAgICAgbV9zb3Vy
Y2UtPnN0b3AoKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBs
OjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKKyNpZiBQTEFURk9STShDT0NPQSkKK2Jvb2wgU3Bl
ZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6dXBkYXRlRGF0YVNvdXJjZShjb25zdCBD
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGF1ZGlvRGVzY3JpcHRpb24pCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIW1fZGF0YVNvdXJjZUxvY2sudHJ5TG9jaygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2Nr
VGFnIHsgfSwgbV9kYXRhU291cmNlTG9jayB9OworCisgICAgYXV0byBkYXRhU291cmNlID0gQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoYXVkaW9EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkg
KiAxLCBtX3NvdXJjZS5nZXQoKSk7CisgICAgaWYgKGRhdGFTb3VyY2UtPnNldElucHV0Rm9ybWF0
KGF1ZGlvRGVzY3JpcHRpb24pKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
KyAgICAgICAgICAgICAgICBtX3N0YXRlVXBkYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25V
cGRhdGU6OmNyZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25F
cnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJVbmFibGUg
dG8gc2V0IGlucHV0IGZvcm1hdCIgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmIChkYXRhU291cmNlLT5zZXRPdXRwdXRGb3JtYXQoYXVkaW9E
ZXNjcmlwdGlvbikpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIG1fc3RhdGVVcGRhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlRXJyb3IobV9jbGllbnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsg
U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIlVuYWJsZSB0byBzZXQg
b3V0cHV0IGZvcm1hdCIgfSkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIG1fZGF0YVNvdXJjZSA9IFdURk1vdmUoZGF0YVNvdXJjZSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6
cHVsbFNhbXBsZXNBbmRDYWxsRGF0YUNhbGxiYWNrKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29u
c3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBhdWRpb0Rlc2NyaXB0aW9uLCBzaXplX3Qgc2Ft
cGxlQ291bnQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gZGF0
YSA9IFdlYkF1ZGlvQnVmZmVyTGlzdCB7IGF1ZGlvRGVzY3JpcHRpb24sIHN0YXRpY19jYXN0PHVp
bnQzMl90PihzYW1wbGVDb3VudCkgfTsKKyAgICB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2RhdGFTb3VyY2VMb2NrIH07CisgICAgICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNhbXBsZXMoKmRh
dGEubGlzdCgpLCBzYW1wbGVDb3VudCwgdGltZS50aW1lVmFsdWUoKSwgMCwgQXVkaW9TYW1wbGVE
YXRhU291cmNlOjpDb3B5KTsKKyAgICB9CisKKyAgICBtX2RhdGFDYWxsYmFjayh0aW1lLCBkYXRh
LCBhdWRpb0Rlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7Cit9CisjZW5kaWYKKworLy8gVGhpcyBm
dW5jdGlvbiB1c2VzIG1fZGF0YVNvdXJjZSB3aXRob3V0IGxvY2tpbmcuIEl0IGlzIHNhZmUgYmVj
dWFzZSB0aGlzIGZ1bmN0aW9uIG9ubHkgZ2V0IGNhbGxlZCBvbiB0aGUgYXVkaW8gdGhyZWFkIGFu
ZCBtX2RhdGFTb3VyY2Ugb25seSBnZXRzIG1vZGlmaWVkIG9uIHRoZQorLy8gYXVkaW8gdGhyZWFk
LiBXZSBkb24ndCB3YW50IHRvIGJlIGxvY2tpbmcgb24gdGhlIGF1ZGlvIHRocmVhZCBmb3IgcGVy
Zm9ybWFuY2UgcmVhc29ucy4KK3ZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1w
bDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxh
dGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5B
TFlTSVMKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIHNj
b3BlOwogCiAgICAgQVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBl
ID09IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwogICAgIGF1
dG8gYXVkaW9EZXNjcmlwdGlvbiA9IHRvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0
aW9uKTsKICAgICBpZiAoIW1fZGF0YVNvdXJjZSB8fCAhbV9kYXRhU291cmNlLT5pbnB1dERlc2Ny
aXB0aW9uKCkgfHwgKm1fZGF0YVNvdXJjZS0+aW5wdXREZXNjcmlwdGlvbigpICE9IGRlc2NyaXB0
aW9uKSB7Ci0gICAgICAgIGF1dG8gZGF0YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDEsIG1fc291cmNlLmdldCgpKTsKLSAg
ICAgICAgaWYgKGRhdGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KGF1ZGlvRGVzY3JpcHRpb24pKSB7
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlVXBkYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNw
ZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJVbmFibGUgdG8gc2V0IGlu
cHV0IGZvcm1hdCIgfSkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KGF1ZGlv
RGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlz
KQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlVXBkYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2du
aXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJV
bmFibGUgdG8gc2V0IG91dHB1dCBmb3JtYXQiIH0pKTsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoYXV0byBsb2Nr
ZXIgPSB0cnlIb2xkTG9jayhtX2RhdGFTb3VyY2VMb2NrKSkKLSAgICAgICAgICAgIG1fZGF0YVNv
dXJjZSA9IFdURk1vdmUoZGF0YVNvdXJjZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCF1
cGRhdGVEYXRhU291cmNlKGF1ZGlvRGVzY3JpcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIG1fZGF0YVNvdXJjZS0+cHVzaFNhbXBsZXModGltZSwgZGF0YSwgc2FtcGxl
Q291bnQpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIHRpbWUsIGF1ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNvdW50XSB7Ci0gICAgICAg
IGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBkYXRh
ID0gV2ViQXVkaW9CdWZmZXJMaXN0IHsgYXVkaW9EZXNjcmlwdGlvbiwgc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHNhbXBsZUNvdW50KSB9OwotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fZGF0YVNvdXJjZUxvY2spOwotICAgICAgICAgICAgbV9kYXRhU291cmNl
LT5wdWxsU2FtcGxlcygqZGF0YS5saXN0KCksIHNhbXBsZUNvdW50LCB0aW1lLnRpbWVWYWx1ZSgp
LCAwLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOwotICAgICAgICB9CiAKLSAgICAgICAg
bV9kYXRhQ2FsbGJhY2sodGltZSwgZGF0YSwgYXVkaW9EZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQp
OworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRp
bWUsIGF1ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNvdW50XSB7CisgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5wdWxsU2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJhY2so
dGltZSwgYXVkaW9EZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwogICAgIH0pOwogI2Vsc2UKICAg
ICBtX2RhdGFDYWxsYmFjayh0aW1lLCBkYXRhLCBkZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25DYXB0dXJlU291cmNlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCmluZGV4IGJjNWMwMmExODkzNDcxNGM3
NzM5MzU4NGUyM2M3M2IzMDFlYjg3NGYuLjczOWNlZTA5ZDIzOGJiZTFhY2UxOTIwZWU1Y2VkNjc5
OGY5MTU0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJT
cGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
d3RmL0NoZWNrZWRMb2NrLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBdWRp
b1NhbXBsZURhdGFTb3VyY2UuaCIKQEAgLTYwLDYgKzYxLDExIEBAIHByaXZhdGU6CiAgICAgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNlcnZlcgogICAgIHZvaWQgYXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRh
JiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CiAKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBib29sIHVwZGF0ZURhdGFTb3VyY2UoY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJik7CisgICAgdm9pZCBwdWxsU2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJh
Y2soY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90IHNhbXBsZUNvdW50KTsKKyNlbmRpZgorCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
T2JzZXJ2ZXIKICAgICB2b2lkIHNvdXJjZVN0YXJ0ZWQoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJj
ZVN0b3BwZWQoKSBmaW5hbDsKQEAgLTcxLDggKzc3LDggQEAgcHJpdmF0ZToKICAgICBSZWY8UmVh
bHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBS
ZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2U7Ci0gICAgTG9jayBtX2Rh
dGFTb3VyY2VMb2NrOworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNv
dXJjZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YVNvdXJjZUxvY2spOyAvLyBPbmx5IG1vZGlm
aWVkIG9uIHRoZSBhdWRpbyB0aHJlYWQgYnV0IG1heSBnZXQgdXNlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCisgICAgQ2hlY2tlZExvY2sgbV9kYXRhU291cmNlTG9jazsKICNlbmRpZgogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429395</attachid>
            <date>2021-05-21 20:17:02 -0700</date>
            <delta_ts>2021-05-21 22:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226131-20210521201701.patch</filename>
            <type>text/plain</type>
            <size>8595</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIwNWNhYjAwNjRmMjM3
YmU4YzU0YTBkMTY1YWFiNGNmMDJlNTA0OC4uZTU5YmQzM2YyNTJlYjViZmEzODk4Y2RjMDkyMTdk
ZDZkMjIxYjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA1LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENoZWNrZWRMb2NrIGlu
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBDaGVja2VkTG9jayBpbiBTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQKKyAg
ICAgICAgU2FmZXR5IEFuYWx5c2lzLiBOb3RlIHRoYXQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKCkg
ZG9lcyBub3QgZ3JhYiB0aGUgbG9jayBiZWZvcmUgdXNpbmcKKyAgICAgICAgbV9kYXRhU291cmNl
LCBvbmx5IHdoZW4gc2V0dGluZyB0aGUgZGF0YSBtZW1iZXIuIEhvd2V2ZXIsIEkgYmVsaWV2ZSBp
dCBpcyBzYWZlIGhlcmUKKyAgICAgICAgc2luY2UgbV9kYXRhU291cmNlIG9ubHkgZ2V0IHNldCBv
biB0aGUgYXVkaW8gdGhyZWFkIHNvIGNoZWNraW5nIGl0IG9uIHRoZSBhdWRpbyB0aHJlYWQKKyAg
ICAgICAgaXMgZmluZS4gRm9yIHRoaXMgcmVhc29uLCBhbmQgYmVjYXVzZSB3ZSBjYW5ub3QgZ3Jh
YiB0aGUgbG9jayBvbiB0aGUgYXVkaW8gdGhyZWFkIGZvcgorICAgICAgICBwZXJmb3JtYW5jZSBy
ZWFzb25zLCBJIGhhdmUgYWRkZWQgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBv
bgorICAgICAgICBhdWRpb1NhbXBsZXNBdmFpbGFibGUoKS4gSG93ZXZlciwgSSBoYXZlIG1vdmVk
IHRoZSBsb2dpYyB0byBzZXQgbV9kYXRhU291cmNlIG9uIHRoZQorICAgICAgICBhdWRpbyB0aHJl
YWQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHNvIHRoYXQgaXQgYmVuZWZpdHMgZnJvbSBhbmFs
eXNpcy4gQWxzbywgSSBoYXZlCisgICAgICAgIG1vdmVkIHRoZSBjb2RlIHRoYXQgdXNlcyBtX2Rh
dGFTb3VyY2Ugb24gbWFpbiB0aHJlYWQgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhlCisg
ICAgICAgIHNhbWUgcmVhc29uLgorCisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjp1cGRhdGVEYXRhU291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OnB1bGxTYW1wbGVz
QW5kQ2FsbERhdGFDYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdl
YkNvcmUgYXMgaXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFu
YWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwCmluZGV4IDk0YzFi
NTU3ZWNhMzk1OWFkODEzMjhkZGQzZjczZjg1ZGU1ZGI1YzQuLmVmNmJkMGZkZWEzYWQ5OWM3ODEw
Mjg0MTFjMzg2MTYwZjdjNmQ5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUlt
cGwuY3BwCkBAIC04MCw0OSArODAsNzEgQEAgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNl
SW1wbDo6flNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwoKQogICAgIG1fc291cmNl
LT5zdG9wKCk7CiB9CiAKLXZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0
aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCisjaWYgUExBVEZPUk0oQ09DT0EpCitib29sIFNwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OnVwZGF0ZURhdGFTb3VyY2UoY29uc3QgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiBhdWRpb0Rlc2NyaXB0aW9uKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2RhdGFTb3VyY2VMb2NrLnRyeUxvY2soKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9ja1Rh
ZyB7IH0sIG1fZGF0YVNvdXJjZUxvY2sgfTsKKworICAgIGF1dG8gZGF0YVNvdXJjZSA9IEF1ZGlv
U2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGF1ZGlvRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICog
MSwgbV9zb3VyY2UuZ2V0KCkpOworICAgIGlmIChkYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChh
dWRpb0Rlc2NyaXB0aW9uKSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgbV9zdGF0ZVVwZGF0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGVFcnJvcihtX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uRXJy
b3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiVW5hYmxlIHRv
IHNldCBpbnB1dCBmb3JtYXQiIH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KGF1ZGlvRGVz
Y3JpcHRpb24pKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlVXBkYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNw
ZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJVbmFibGUgdG8gc2V0IG91
dHB1dCBmb3JtYXQiIH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBtX2RhdGFTb3VyY2UgPSBXVEZNb3ZlKGRhdGFTb3VyY2UpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OnB1
bGxTYW1wbGVzQW5kQ2FsbERhdGFDYWxsYmFjayhjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgYXVkaW9EZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBs
ZUNvdW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIGRhdGEg
PSBXZWJBdWRpb0J1ZmZlckxpc3QgeyBhdWRpb0Rlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oc2FtcGxlQ291bnQpIH07CisgICAgeworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
YXRhU291cmNlTG9jayB9OworICAgICAgICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKCpkYXRh
Lmxpc3QoKSwgc2FtcGxlQ291bnQsIHRpbWUudGltZVZhbHVlKCksIDAsIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6Q29weSk7CisgICAgfQorCisgICAgbV9kYXRhQ2FsbGJhY2sodGltZSwgZGF0YSwg
YXVkaW9EZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOworfQorI2VuZGlmCisKKy8vIFRoaXMgZnVu
Y3Rpb24gdXNlcyBtX2RhdGFTb3VyY2Ugd2l0aG91dCBsb2NraW5nLiBJdCBpcyBzYWZlIGJlY3Vh
c2UgdGhpcyBmdW5jdGlvbiBvbmx5IGdldCBjYWxsZWQgb24gdGhlIGF1ZGlvIHRocmVhZCBhbmQg
bV9kYXRhU291cmNlIG9ubHkgZ2V0cyBtb2RpZmllZCBvbiB0aGUKKy8vIGF1ZGlvIHRocmVhZC4g
V2UgZG9uJ3Qgd2FudCB0byBiZSBsb2NraW5nIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMuCit2b2lkIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6
OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRm
b3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlw
dGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBzY29w
ZTsKIAogICAgIEFTU0VSVChkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSA9
PSBQbGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKTsKICAgICBhdXRv
IGF1ZGlvRGVzY3JpcHRpb24gPSB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihkZXNjcmlwdGlv
bik7CiAgICAgaWYgKCFtX2RhdGFTb3VyY2UgfHwgIW1fZGF0YVNvdXJjZS0+aW5wdXREZXNjcmlw
dGlvbigpIHx8ICptX2RhdGFTb3VyY2UtPmlucHV0RGVzY3JpcHRpb24oKSAhPSBkZXNjcmlwdGlv
bikgewotICAgICAgICBhdXRvIGRhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNy
ZWF0ZShkZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAxLCBtX3NvdXJjZS5nZXQoKSk7Ci0gICAg
ICAgIGlmIChkYXRhU291cmNlLT5zZXRJbnB1dEZvcm1hdChhdWRpb0Rlc2NyaXB0aW9uKSkgewot
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gewotICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZVVwZGF0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVh
dGVFcnJvcihtX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiVW5hYmxlIHRvIHNldCBpbnB1
dCBmb3JtYXQiIH0pKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKGRhdGFTb3VyY2UtPnNldE91dHB1dEZvcm1hdChhdWRpb0Rl
c2NyaXB0aW9uKSkgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewotICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
LSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZVVwZGF0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihtX2NsaWVudElkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVkaW9DYXB0dXJlLCAiVW5h
YmxlIHRvIHNldCBvdXRwdXQgZm9ybWF0IiB9KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGF1dG8gbG9ja2Vy
ID0gdHJ5SG9sZExvY2sobV9kYXRhU291cmNlTG9jaykpCi0gICAgICAgICAgICBtX2RhdGFTb3Vy
Y2UgPSBXVEZNb3ZlKGRhdGFTb3VyY2UpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmICghdXBk
YXRlRGF0YVNvdXJjZShhdWRpb0Rlc2NyaXB0aW9uKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBtX2RhdGFTb3VyY2UtPnB1c2hTYW1wbGVzKHRpbWUsIGRhdGEsIHNhbXBsZUNv
dW50KTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCB0aW1lLCBhdWRpb0Rlc2NyaXB0aW9uLCBzYW1wbGVDb3VudF0gewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8gZGF0YSA9
IFdlYkF1ZGlvQnVmZmVyTGlzdCB7IGF1ZGlvRGVzY3JpcHRpb24sIHN0YXRpY19jYXN0PHVpbnQz
Ml90PihzYW1wbGVDb3VudCkgfTsKLSAgICAgICAgewotICAgICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZGF0YVNvdXJjZUxvY2sgfTsKLSAgICAgICAgICAgIG1fZGF0YVNvdXJjZS0+cHVsbFNh
bXBsZXMoKmRhdGEubGlzdCgpLCBzYW1wbGVDb3VudCwgdGltZS50aW1lVmFsdWUoKSwgMCwgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKLSAgICAgICAgfQogCi0gICAgICAgIG1fZGF0YUNh
bGxiYWNrKHRpbWUsIGRhdGEsIGF1ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aW1lLCBhdWRp
b0Rlc2NyaXB0aW9uLCBzYW1wbGVDb3VudF0geworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAg
ICAgICAgICB3ZWFrVGhpcy0+cHVsbFNhbXBsZXNBbmRDYWxsRGF0YUNhbGxiYWNrKHRpbWUsIGF1
ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKICAgICB9KTsKICNlbHNlCiAgICAgbV9kYXRh
Q2FsbGJhY2sodGltZSwgZGF0YSwgZGVzY3JpcHRpb24sIHNhbXBsZUNvdW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVy
ZVNvdXJjZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaAppbmRleCBiYzVjMDJhMTg5MzQ3MTRjNzczOTM1ODRl
MjNjNzNiMzAxZWI4NzRmLi43MzljZWUwOWQyMzhiYmUxYWNlMTkyMGVlNWNlZDY3OThmOTE1NGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkTG9jay5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXVkaW9TYW1wbGVE
YXRhU291cmNlLmgiCkBAIC02MCw2ICs2MSwxMSBAQCBwcml2YXRlOgogICAgIC8vIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OkF1ZGlvU2FtcGxlT2JzZXJ2ZXIKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwogCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgYm9vbCB1cGRhdGVEYXRhU291cmNlKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbiYpOworICAgIHZvaWQgcHVsbFNhbXBsZXNBbmRDYWxsRGF0YUNhbGxiYWNrKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCBzYW1w
bGVDb3VudCk7CisjZW5kaWYKKwogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVy
CiAgICAgdm9pZCBzb3VyY2VTdGFydGVkKCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VTdG9wcGVk
KCkgZmluYWw7CkBAIC03MSw4ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgUmVmPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IG1fc291cmNlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9kYXRhU291cmNlOwotICAgIExvY2sgbV9kYXRhU291cmNl
TG9jazsKKyAgICBSZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2UgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFTb3VyY2VMb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0
aGUgYXVkaW8gdGhyZWFkIGJ1dCBtYXkgZ2V0IHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAg
IENoZWNrZWRMb2NrIG1fZGF0YVNvdXJjZUxvY2s7CiAjZW5kaWYKIH07CiAK
</data>
<flag name="review"
          id="450576"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429402</attachid>
            <date>2021-05-21 22:10:27 -0700</date>
            <delta_ts>2021-05-22 09:52:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>226131_SpeechRecognition.patch</filename>
            <type>text/plain</type>
            <size>8396</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYjA1Y2FiMDA2NGYuLmU1OWJkMzNmMjUyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgVXNlIENoZWNrZWRMb2NrIGluIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNv
dXJjZUltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjEzMQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVz
ZSBDaGVja2VkTG9jayBpbiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsIHRvIGJl
bmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQKKyAgICAgICAgU2FmZXR5IEFuYWx5c2lzLiBOb3RlIHRo
YXQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKCkgZG9lcyBub3QgZ3JhYiB0aGUgbG9jayBiZWZvcmUg
dXNpbmcKKyAgICAgICAgbV9kYXRhU291cmNlLCBvbmx5IHdoZW4gc2V0dGluZyB0aGUgZGF0YSBt
ZW1iZXIuIEhvd2V2ZXIsIEkgYmVsaWV2ZSBpdCBpcyBzYWZlIGhlcmUKKyAgICAgICAgc2luY2Ug
bV9kYXRhU291cmNlIG9ubHkgZ2V0IHNldCBvbiB0aGUgYXVkaW8gdGhyZWFkIHNvIGNoZWNraW5n
IGl0IG9uIHRoZSBhdWRpbyB0aHJlYWQKKyAgICAgICAgaXMgZmluZS4gRm9yIHRoaXMgcmVhc29u
LCBhbmQgYmVjYXVzZSB3ZSBjYW5ub3QgZ3JhYiB0aGUgbG9jayBvbiB0aGUgYXVkaW8gdGhyZWFk
IGZvcgorICAgICAgICBwZXJmb3JtYW5jZSByZWFzb25zLCBJIGhhdmUgYWRkZWQgV1RGX0lHTk9S
RVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUyBvbgorICAgICAgICBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoKS4gSG93ZXZlciwgSSBoYXZlIG1vdmVkIHRoZSBsb2dpYyB0byBzZXQgbV9kYXRhU291cmNl
IG9uIHRoZQorICAgICAgICBhdWRpbyB0aHJlYWQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHNv
IHRoYXQgaXQgYmVuZWZpdHMgZnJvbSBhbmFseXNpcy4gQWxzbywgSSBoYXZlCisgICAgICAgIG1v
dmVkIHRoZSBjb2RlIHRoYXQgdXNlcyBtX2RhdGFTb3VyY2Ugb24gbWFpbiB0aHJlYWQgdG8gYSBz
ZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhlCisgICAgICAgIHNhbWUgcmVhc29uLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjp1
cGRhdGVEYXRhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ2Fw
dHVyZVNvdXJjZUltcGw6OnB1bGxTYW1wbGVzQW5kQ2FsbERhdGFDYWxsYmFjayk6CisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oOgor
CiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNvbXBhdGlibGUg
d2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVy
ZVNvdXJjZUltcGwuY3BwCmluZGV4IDk0YzFiNTU3ZWNhMy4uZWY2YmQwZmRlYTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1
cmVTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcApAQCAtODAsNDkgKzgwLDcxIEBAIFNw
ZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6On5TcGVlY2hSZWNvZ25pdGlvbkNhcHR1
cmVTb3VyY2VJbXBsKCkKICAgICBtX3NvdXJjZS0+c3RvcCgpOwogfQogCi12b2lkIFNwZWVjaFJl
Y29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBN
ZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IHNhbXBsZUNvdW50KQorI2lm
IFBMQVRGT1JNKENPQ09BKQorYm9vbCBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBs
Ojp1cGRhdGVEYXRhU291cmNlKGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgYXVkaW9E
ZXNjcmlwdGlvbikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICgh
bV9kYXRhU291cmNlTG9jay50cnlMb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IExvY2tlciBsb2NrZXIgeyBBZG9wdExvY2tUYWcgeyB9LCBtX2RhdGFTb3VyY2VMb2NrIH07CisK
KyAgICBhdXRvIGRhdGFTb3VyY2UgPSBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OmNyZWF0ZShhdWRp
b0Rlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDEsIG1fc291cmNlLmdldCgpKTsKKyAgICBpZiAo
ZGF0YVNvdXJjZS0+c2V0SW5wdXRGb3JtYXQoYXVkaW9EZXNjcmlwdGlvbikpIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewor
ICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIG1fc3RhdGVVcGRhdGVD
YWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IobV9jbGllbnRJZGVu
dGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5
cGU6OkF1ZGlvQ2FwdHVyZSwgIlVuYWJsZSB0byBzZXQgaW5wdXQgZm9ybWF0IiB9KSk7CisgICAg
ICAgIH0pOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRhdGFTb3Vy
Y2UtPnNldE91dHB1dEZvcm1hdChhdWRpb0Rlc2NyaXB0aW9uKSkgeworICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgbV9zdGF0ZVVwZGF0ZUNhbGxiYWNr
KFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihtX2NsaWVudElkZW50aWZpZXIs
IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QXVk
aW9DYXB0dXJlLCAiVW5hYmxlIHRvIHNldCBvdXRwdXQgZm9ybWF0IiB9KSk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbV9kYXRhU291cmNlID0gV1RG
TW92ZShkYXRhU291cmNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjpwdWxsU2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJhY2so
Y29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGF1
ZGlvRGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworCisgICAgYXV0byBkYXRhID0gV2ViQXVkaW9CdWZmZXJMaXN0IHsgYXVkaW9E
ZXNjcmlwdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNhbXBsZUNvdW50KSB9OworICAgIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YVNvdXJjZUxvY2sgfTsKKyAgICAgICAgbV9k
YXRhU291cmNlLT5wdWxsU2FtcGxlcygqZGF0YS5saXN0KCksIHNhbXBsZUNvdW50LCB0aW1lLnRp
bWVWYWx1ZSgpLCAwLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpOworICAgIH0KKworICAg
IG1fZGF0YUNhbGxiYWNrKHRpbWUsIGRhdGEsIGF1ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNvdW50
KTsKK30KKyNlbmRpZgorCisvLyBUaGlzIGZ1bmN0aW9uIHVzZXMgbV9kYXRhU291cmNlIHdpdGhv
dXQgbG9ja2luZy4gSXQgaXMgc2FmZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBnZXQgY2Fs
bGVkIG9uIHRoZSBhdWRpbyB0aHJlYWQgYW5kIG1fZGF0YVNvdXJjZSBvbmx5IGdldHMgbW9kaWZp
ZWQgb24gdGhlCisvLyBhdWRpbyB0aHJlYWQuIFdlIGRvbid0IHdhbnQgdG8gYmUgbG9ja2luZyBv
biB0aGUgYXVkaW8gdGhyZWFkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgordm9pZCBTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkgV1RG
X0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwogeworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlv
bnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgc2NvcGU7CiAKICAgICBBU1NFUlQoZGVzY3JpcHRpb24u
cGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRp
b1N0cmVhbUJhc2ljVHlwZSk7CiAgICAgYXV0byBhdWRpb0Rlc2NyaXB0aW9uID0gdG9DQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pOwogICAgIGlmICghbV9kYXRhU291cmNlIHx8
ICFtX2RhdGFTb3VyY2UtPmlucHV0RGVzY3JpcHRpb24oKSB8fCAqbV9kYXRhU291cmNlLT5pbnB1
dERlc2NyaXB0aW9uKCkgIT0gZGVzY3JpcHRpb24pIHsKLSAgICAgICAgYXV0byBkYXRhU291cmNl
ID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoZGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgp
ICogMSwgbV9zb3VyY2UuZ2V0KCkpOwotICAgICAgICBpZiAoZGF0YVNvdXJjZS0+c2V0SW5wdXRG
b3JtYXQoYXVkaW9EZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKLSAgICAgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGVVcGRhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IobV9jbGllbnRJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlv
Q2FwdHVyZSwgIlVuYWJsZSB0byBzZXQgaW5wdXQgZm9ybWF0IiB9KSk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkYXRhU291
cmNlLT5zZXRPdXRwdXRGb3JtYXQoYXVkaW9EZXNjcmlwdGlvbikpIHsKLSAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKLSAg
ICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGVV
cGRhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IobV9jbGll
bnRJZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25F
cnJvclR5cGU6OkF1ZGlvQ2FwdHVyZSwgIlVuYWJsZSB0byBzZXQgb3V0cHV0IGZvcm1hdCIgfSkp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChhdXRvIGxvY2tlciA9IHRyeUhvbGRMb2NrKG1fZGF0YVNvdXJjZUxv
Y2spKQotICAgICAgICAgICAgbV9kYXRhU291cmNlID0gV1RGTW92ZShkYXRhU291cmNlKTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBpZiAoIXVwZGF0ZURhdGFTb3VyY2UoYXVkaW9EZXNjcmlwdGlv
bikpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9kYXRhU291cmNlLT5wdXNo
U2FtcGxlcyh0aW1lLCBkYXRhLCBzYW1wbGVDb3VudCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGltZSwgYXVkaW9EZXNjcmlwdGlv
biwgc2FtcGxlQ291bnRdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBhdXRvIGRhdGEgPSBXZWJBdWRpb0J1ZmZlckxpc3QgeyBhdWRpb0Rl
c2NyaXB0aW9uLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2FtcGxlQ291bnQpIH07Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFTb3VyY2VMb2NrIH07Ci0gICAg
ICAgICAgICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKCpkYXRhLmxpc3QoKSwgc2FtcGxlQ291
bnQsIHRpbWUudGltZVZhbHVlKCksIDAsIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Q29weSk7Ci0g
ICAgICAgIH0KIAotICAgICAgICBtX2RhdGFDYWxsYmFjayh0aW1lLCBkYXRhLCBhdWRpb0Rlc2Ny
aXB0aW9uLCBzYW1wbGVDb3VudCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKSwgdGltZSwgYXVkaW9EZXNjcmlwdGlvbiwgc2FtcGxlQ291bnRdIHsK
KyAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgd2Vha1RoaXMtPnB1bGxTYW1wbGVz
QW5kQ2FsbERhdGFDYWxsYmFjayh0aW1lLCBhdWRpb0Rlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7
CiAgICAgfSk7CiAjZWxzZQogICAgIG1fZGF0YUNhbGxiYWNrKHRpbWUsIGRhdGEsIGRlc2NyaXB0
aW9uLCBzYW1wbGVDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgKaW5k
ZXggYmM1YzAyYTE4OTM0Li43MzljZWUwOWQyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVT
b3VyY2VJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFT
b3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKQEAgLTYwLDYgKzYxLDEx
IEBAIHByaXZhdGU6CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1wbGVPYnNl
cnZlcgogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNp
emVfdCkgZmluYWw7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBib29sIHVwZGF0ZURhdGFT
b3VyY2UoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CisgICAgdm9pZCBwdWxsU2Ft
cGxlc0FuZENhbGxEYXRhQ2FsbGJhY2soY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyNlbmRpZgorCiAgICAgLy8g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHNvdXJjZVN0YXJ0ZWQoKSBm
aW5hbDsKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5hbDsKQEAgLTcxLDggKzc3LDggQEAg
cHJpdmF0ZToKICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX2RhdGFT
b3VyY2U7Ci0gICAgTG9jayBtX2RhdGFTb3VyY2VMb2NrOworICAgIFJlZlB0cjxBdWRpb1NhbXBs
ZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YVNvdXJj
ZUxvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBhdWRpbyB0aHJlYWQgYnV0IG1heSBnZXQg
dXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgQ2hlY2tlZExvY2sgbV9kYXRhU291cmNlTG9j
azsKICNlbmRpZgogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429415</attachid>
            <date>2021-05-22 09:52:37 -0700</date>
            <delta_ts>2021-05-22 13:10:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226131-20210522095236.patch</filename>
            <type>text/plain</type>
            <size>7889</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4YWQ5YjhiMjg5M2Zi
ZGI3MDRlNTdhNzMzNTRmYThkMDM5MjdhZC4uZjVmZjU1ODM3YmM2M2M0ZWQ4YTllZDcxNTc5NjEx
OTAwNWFkYjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA1LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIENoZWNrZWRMb2NrIGlu
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjEzMQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBDaGVja2VkTG9jayBpbiBTcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsIHRvIGJlbmVmaXQgZnJvbSBDbGFuZyBUaHJlYWQKKyAgICAg
ICAgU2FmZXR5IEFuYWx5c2lzLiBOb3RlIHRoYXQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKCkgZG9l
cyBub3QgZ3JhYiB0aGUgbG9jayBiZWZvcmUgdXNpbmcKKyAgICAgICAgbV9kYXRhU291cmNlLCBv
bmx5IHdoZW4gc2V0dGluZyB0aGUgZGF0YSBtZW1iZXIuIEl0IGlzIHVuY2xlYXIgd2h5IGl0IGlz
IHNhZmUgc28gSQorICAgICAgICB1c2VkIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlT
SVMgYW5kIGFkZGVkIGEgRklYTUUgY29tbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6dXBkYXRlRGF0YVNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjpw
dWxsU2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaDoKKwogMjAyMS0wNS0yMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRl
ciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbC5jcHAKaW5kZXggOTRjMWI1NTdlY2EzOTU5YWQ4MTMyOGRkZDNmNzNmODVkZTVk
YjVjNC4uMTg0NDAyMWU2ZjFhYzQ0ZmU2MzI1YzYyOGJhZTZmOGUxN2ZiYTY3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
UmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAKQEAgLTgwLDQ5ICs4MCw3MCBAQCBTcGVl
Y2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjp+U3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbCgpCiAgICAgbV9zb3VyY2UtPnN0b3AoKTsKIH0KIAotdm9pZCBTcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVk
aWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBzYW1wbGVDb3VudCkKKyNpZiBQ
TEFURk9STShDT0NPQSkKK2Jvb2wgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6
dXBkYXRlRGF0YVNvdXJjZShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGF1ZGlvRGVz
Y3JpcHRpb24pCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIW1f
ZGF0YVNvdXJjZUxvY2sudHJ5TG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBM
b2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrVGFnIHsgfSwgbV9kYXRhU291cmNlTG9jayB9OworCisg
ICAgYXV0byBkYXRhU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUoYXVkaW9E
ZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAxLCBtX3NvdXJjZS5nZXQoKSk7CisgICAgaWYgKGRh
dGFTb3VyY2UtPnNldElucHV0Rm9ybWF0KGF1ZGlvRGVzY3JpcHRpb24pKSB7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBtX3N0YXRlVXBkYXRlQ2Fs
bGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpBdWRpb0NhcHR1cmUsICJVbmFibGUgdG8gc2V0IGlucHV0IGZvcm1hdCIgfSkpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChkYXRhU291cmNl
LT5zZXRPdXRwdXRGb3JtYXQoYXVkaW9EZXNjcmlwdGlvbikpIHsKKyAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgICAgICAg
ICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIG1fc3RhdGVVcGRhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IobV9jbGllbnRJZGVudGlmaWVyLCBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkF1ZGlv
Q2FwdHVyZSwgIlVuYWJsZSB0byBzZXQgb3V0cHV0IGZvcm1hdCIgfSkpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1fZGF0YVNvdXJjZSA9IFdURk1v
dmUoZGF0YVNvdXJjZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlZWNoUmVjb2du
aXRpb25DYXB0dXJlU291cmNlSW1wbDo6cHVsbFNhbXBsZXNBbmRDYWxsRGF0YUNhbGxiYWNrKGNv
bnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBhdWRp
b0Rlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKworICAgIGF1dG8gZGF0YSA9IFdlYkF1ZGlvQnVmZmVyTGlzdCB7IGF1ZGlvRGVz
Y3JpcHRpb24sIHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1wbGVDb3VudCkgfTsKKyAgICB7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFTb3VyY2VMb2NrIH07CisgICAgICAgIG1fZGF0
YVNvdXJjZS0+cHVsbFNhbXBsZXMoKmRhdGEubGlzdCgpLCBzYW1wbGVDb3VudCwgdGltZS50aW1l
VmFsdWUoKSwgMCwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKKyAgICB9CisKKyAgICBt
X2RhdGFDYWxsYmFjayh0aW1lLCBkYXRhLCBhdWRpb0Rlc2NyaXB0aW9uLCBzYW1wbGVDb3VudCk7
Cit9CisjZW5kaWYKKworLy8gRklYTUU6IEl0IGlzIHVuY2xlYXIgd2h5IGl0IGlzIHNhZmUgdG8g
dXNlIG1fZGF0YVNvdXJjZSB3aXRob3V0IGxvY2tpbmcgaW4gdGhpcyBmdW5jdGlvbi4KK3ZvaWQg
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxl
KGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3Qgc2FtcGxlQ291
bnQpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKIHsKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEaXNhYmxlTWFsbG9jUmVz
dHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIHNjb3BlOwogCiAgICAgQVNTRVJUKGRlc2Ny
aXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246
OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwogICAgIGF1dG8gYXVkaW9EZXNjcmlwdGlvbiA9IHRv
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKICAgICBpZiAoIW1fZGF0YVNv
dXJjZSB8fCAhbV9kYXRhU291cmNlLT5pbnB1dERlc2NyaXB0aW9uKCkgfHwgKm1fZGF0YVNvdXJj
ZS0+aW5wdXREZXNjcmlwdGlvbigpICE9IGRlc2NyaXB0aW9uKSB7Ci0gICAgICAgIGF1dG8gZGF0
YVNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKGRlc2NyaXB0aW9uLnNhbXBs
ZVJhdGUoKSAqIDEsIG1fc291cmNlLmdldCgpKTsKLSAgICAgICAgaWYgKGRhdGFTb3VyY2UtPnNl
dElucHV0Rm9ybWF0KGF1ZGlvRGVzY3JpcHRpb24pKSB7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlVXBkYXRlQ2Fs
bGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKG1fY2xpZW50SWRlbnRp
ZmllciwgU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBl
OjpBdWRpb0NhcHR1cmUsICJVbmFibGUgdG8gc2V0IGlucHV0IGZvcm1hdCIgfSkpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
ZGF0YVNvdXJjZS0+c2V0T3V0cHV0Rm9ybWF0KGF1ZGlvRGVzY3JpcHRpb24pKSB7Ci0gICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
XSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICBt
X3N0YXRlVXBkYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9y
KG1fY2xpZW50SWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpBdWRpb0NhcHR1cmUsICJVbmFibGUgdG8gc2V0IG91dHB1dCBmb3Jt
YXQiIH0pKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBpZiAoYXV0byBsb2NrZXIgPSB0cnlIb2xkTG9jayhtX2RhdGFT
b3VyY2VMb2NrKSkKLSAgICAgICAgICAgIG1fZGF0YVNvdXJjZSA9IFdURk1vdmUoZGF0YVNvdXJj
ZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKCF1cGRhdGVEYXRhU291cmNlKGF1ZGlvRGVz
Y3JpcHRpb24pKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZGF0YVNvdXJj
ZS0+cHVzaFNhbXBsZXModGltZSwgZGF0YSwgc2FtcGxlQ291bnQpOwotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRpbWUsIGF1ZGlvRGVz
Y3JpcHRpb24sIHNhbXBsZUNvdW50XSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byBkYXRhID0gV2ViQXVkaW9CdWZmZXJMaXN0IHsg
YXVkaW9EZXNjcmlwdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNhbXBsZUNvdW50KSB9Owot
ICAgICAgICB7Ci0gICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhU291cmNlTG9jayB9
OwotICAgICAgICAgICAgbV9kYXRhU291cmNlLT5wdWxsU2FtcGxlcygqZGF0YS5saXN0KCksIHNh
bXBsZUNvdW50LCB0aW1lLnRpbWVWYWx1ZSgpLCAwLCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNv
cHkpOwotICAgICAgICB9CiAKLSAgICAgICAgbV9kYXRhQ2FsbGJhY2sodGltZSwgZGF0YSwgYXVk
aW9EZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRpbWUsIGF1ZGlvRGVzY3JpcHRpb24sIHNhbXBsZUNv
dW50XSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5wdWxs
U2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJhY2sodGltZSwgYXVkaW9EZXNjcmlwdGlvbiwgc2FtcGxl
Q291bnQpOwogICAgIH0pOwogI2Vsc2UKICAgICBtX2RhdGFDYWxsYmFjayh0aW1lLCBkYXRhLCBk
ZXNjcmlwdGlvbiwgc2FtcGxlQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1w
bC5oCmluZGV4IGJjNWMwMmExODkzNDcxNGM3NzM5MzU4NGUyM2M3M2IzMDFlYjg3NGYuLjczOWNl
ZTA5ZDIzOGJiZTFhY2UxOTIwZWU1Y2VkNjc5OGY5MTU0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNh
cHR1cmVTb3VyY2VJbXBsLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGll
bnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRMb2NrLmg+CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICNpbmNsdWRlICJBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCIKQEAgLTYwLDYg
KzYxLDExIEBAIHByaXZhdGU6CiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW9TYW1w
bGVPYnNlcnZlcgogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCkgZmluYWw7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBib29sIHVwZGF0
ZURhdGFTb3VyY2UoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJik7CisgICAgdm9pZCBw
dWxsU2FtcGxlc0FuZENhbGxEYXRhQ2FsbGJhY2soY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90IHNhbXBsZUNvdW50KTsKKyNlbmRpZgorCiAg
ICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6T2JzZXJ2ZXIKICAgICB2b2lkIHNvdXJjZVN0YXJ0
ZWQoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZVN0b3BwZWQoKSBmaW5hbDsKQEAgLTcxLDggKzc3
LDggQEAgcHJpdmF0ZToKICAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBt
X2RhdGFTb3VyY2U7Ci0gICAgTG9jayBtX2RhdGFTb3VyY2VMb2NrOworICAgIFJlZlB0cjxBdWRp
b1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0
YVNvdXJjZUxvY2spOyAvLyBPbmx5IG1vZGlmaWVkIG9uIHRoZSBhdWRpbyB0aHJlYWQgYnV0IG1h
eSBnZXQgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgQ2hlY2tlZExvY2sgbV9kYXRhU291
cmNlTG9jazsKICNlbmRpZgogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>