<?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>224758</bug_id>
          
          <creation_ts>2021-04-19 07:49:04 -0700</creation_ts>
          <short_desc>Fix races in LibWebRTCCodecs introduced in r276214</short_desc>
          <delta_ts>2021-04-23 03:01:28 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          <blocked>224704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>lingcherd_ho</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751769</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 07:49:04 -0700</bug_when>
    <thetext>Fix races in LibWebRTCCodecs introduced in r276214.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751773</commentid>
    <comment_count>1</comment_count>
      <attachid>426418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 07:52:47 -0700</bug_when>
    <thetext>Created attachment 426418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751796</commentid>
    <comment_count>2</comment_count>
      <attachid>426418</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-19 08:42:16 -0700</bug_when>
    <thetext>Comment on attachment 426418
Patch

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:262
&gt; +    ensureGPUProcessConnectionAndDispatchToThread([this, decoderIdentifier = decoder.identifier] {

Maybe add a comment in ensureGPUProcessConnectionAndDispatchToThread that the m_connection lock needs to be kept for the dispatchToThread call in ensureGPUProcessConnectionAndDispatchToThread/ensureOnMainRunLoop.

Also, let&apos;s look at the following case:
- createEncoder goes to main thread as connection is null.
- initializeEncoder goes to main thread as connection is null.
- createEncoder callback is in main thread, creates the connection, goes to the codec queue.
- releaseEncoder goes to the codec queue as connection is no longer null.
- initializeEncoder callback is in the main thread and goes to the codec queue.

We probably can have initializeEncoder happening after releaseEncoder in the codec queue.

We could accept the raciness of initializeEncoder, and add a if(auto* encoder...) in its implementation.
We could also store a goThroughMainThread state in encoder/decoder structures, less subtle and probably stronger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751798</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 08:53:33 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #2)
&gt; Comment on attachment 426418 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426418&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:262
&gt; &gt; +    ensureGPUProcessConnectionAndDispatchToThread([this, decoderIdentifier = decoder.identifier] {
&gt; 
&gt; Maybe add a comment in ensureGPUProcessConnectionAndDispatchToThread that
&gt; the m_connection lock needs to be kept for the dispatchToThread call in
&gt; ensureGPUProcessConnectionAndDispatchToThread/ensureOnMainRunLoop.
&gt; 
&gt; Also, let&apos;s look at the following case:
&gt; - createEncoder goes to main thread as connection is null.
&gt; - initializeEncoder goes to main thread as connection is null.
&gt; - createEncoder callback is in main thread, creates the connection, goes to
&gt; the codec queue.
&gt; - releaseEncoder goes to the codec queue as connection is no longer null.
&gt; - initializeEncoder callback is in the main thread and goes to the codec
&gt; queue.
&gt; 
&gt; We probably can have initializeEncoder happening after releaseEncoder in the
&gt; codec queue.
&gt; 
&gt; We could accept the raciness of initializeEncoder, and add a if(auto*
&gt; encoder...) in its implementation.

Even that wouldn&apos;t be safe I think. You could imagine createDecoder getting called first, then createEncoder, then initializeEncoder in your scenario. initializeEncoder would get received before createEncoder which would be bad.

&gt; We could also store a goThroughMainThread state in encoder/decoder
&gt; structures, less subtle and probably stronger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751810</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 09:18:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to youenn fablet from comment #2)
&gt; &gt; Comment on attachment 426418 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=426418&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:262
&gt; &gt; &gt; +    ensureGPUProcessConnectionAndDispatchToThread([this, decoderIdentifier = decoder.identifier] {
&gt; &gt; 
&gt; &gt; Maybe add a comment in ensureGPUProcessConnectionAndDispatchToThread that
&gt; &gt; the m_connection lock needs to be kept for the dispatchToThread call in
&gt; &gt; ensureGPUProcessConnectionAndDispatchToThread/ensureOnMainRunLoop.
&gt; &gt; 
&gt; &gt; Also, let&apos;s look at the following case:
&gt; &gt; - createEncoder goes to main thread as connection is null.
&gt; &gt; - initializeEncoder goes to main thread as connection is null.
&gt; &gt; - createEncoder callback is in main thread, creates the connection, goes to
&gt; &gt; the codec queue.
&gt; &gt; - releaseEncoder goes to the codec queue as connection is no longer null.
&gt; &gt; - initializeEncoder callback is in the main thread and goes to the codec
&gt; &gt; queue.
&gt; &gt; 
&gt; &gt; We probably can have initializeEncoder happening after releaseEncoder in the
&gt; &gt; codec queue.
&gt; &gt; 
&gt; &gt; We could accept the raciness of initializeEncoder, and add a if(auto*
&gt; &gt; encoder...) in its implementation.
&gt; 
&gt; Even that wouldn&apos;t be safe I think. You could imagine createDecoder getting
&gt; called first, then createEncoder, then initializeEncoder in your scenario.
&gt; initializeEncoder would get received before createEncoder which would be bad.

I have a proposal that would address that. I am polishing the patch and will upload shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751814</commentid>
    <comment_count>5</comment_count>
      <attachid>426433</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 09:24:42 -0700</bug_when>
    <thetext>Created attachment 426433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751831</commentid>
    <comment_count>6</comment_count>
      <attachid>426433</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-19 09:42:54 -0700</bug_when>
    <thetext>Comment on attachment 426433
Patch

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

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:202
&gt; +    if (m_connection) {

I would put that first since this is the fast path.

&gt; Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:213
&gt; +            dispatchToThread(m_tasksToDispatchAfterEstablishingConnection.takeFirst());

Seems like we could use a Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751836</commentid>
    <comment_count>7</comment_count>
      <attachid>426437</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-19 09:53:36 -0700</bug_when>
    <thetext>Created attachment 426437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751861</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-19 10:53:11 -0700</bug_when>
    <thetext>Committed r276263 (236745@main): &lt;https://commits.webkit.org/236745@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426437.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753541</commentid>
    <comment_count>9</comment_count>
    <who name="Ling Ho">lingcherd_ho</who>
    <bug_when>2021-04-23 03:01:28 -0700</bug_when>
    <thetext>rdar://76852677</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426418</attachid>
            <date>2021-04-19 07:52:47 -0700</date>
            <delta_ts>2021-04-19 09:24:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224758-20210419075246.patch</filename>
            <type>text/plain</type>
            <size>3845</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzYWM4MTBiMzU0MmZkM2Q1
YzVjOTc5OTg1ZTAzMDgzMzYwMmU3YjkuLmRlNGIwNTQ3YjRiMzAzZDA0YzM4YjY1NmE1NWQxYTJh
MTNiZTgxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggcmFjZXMgaW4gTGliV2ViUlRD
Q29kZWNzIGludHJvZHVjZWQgaW4gcjI3NjIxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgcjI3NjIxNCwgTGliV2ViUlRDQ29kZWNzJ3MgY3Jl
YXRlRGVjb2RlcigpIC8gY3JlYXRlRW5jb2RlcigpIG1heSBob3AgdG8gdGhlIG1haW4KKyAgICAg
ICAgdGhyZWFkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIEdQVVByb2Nlc3Mu
IElmIHJlbGVhc2VEZWNvZGVyKCkgLyByZWxlYXNlRW5jb2RlcigpCisgICAgICAgIHdlcmUgdG8g
Z2V0IGNhbGxlZCB2ZXJ5IHNob3J0bHkgYWZ0ZXIsIHRoZXkgbWF5IHdpbiB0aGUgcmFjZSBhbmQg
aGF2ZSBubyBkZWNvZGVyIC8gZW5jb2RlcgorICAgICAgICB0byByZWxlYXNlLCBzaW5jZSB0aGV5
IGFyZSBkaXNwYXRjaGVkIGRpcmVjdGx5IHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4gVG8gYWRk
cmVzcyB0aGUgaXNzdWUsCisgICAgICAgIHdlIG5vdyBjYWxsIGVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZCgpIGluIHJlbGVhc2VEZWNvZGVyKCksIHJlbGVhc2VF
bmNvZGVyKCkKKyAgICAgICAgYW5kIGluaXRpYWxpemVFbmNvZGVyKCkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjczo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENDb2RlY3M6OmluaXRpYWxpemVFbmNvZGVyKToKKwogMjAyMS0wNC0xOCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBMaWJXZWJSVENDb2RlY3NQcm94
eSB0byB1c2UgYSBMb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBkMTRkOGM0OTVmMDU4ZTZmNDU5YWEw
MDg4YzVkZjQ3ODIxY2MxMTQ5Li45YmQ1NTU1ZWQ4YzkyMjNmYmQ5MjkyMWE2ZDRiOTkwZDY4YjAw
ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJX
ZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBMaWJXZWJSVENDb2RlY3M6
OkRlY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3JlYXRlRGVjb2RlcihUeXBlIHR5cGUpCiBpbnQz
Ml90IExpYldlYlJUQ0NvZGVjczo6cmVsZWFzZURlY29kZXIoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBBU1NFUlQoIWRlY29kZXIuZGVjb2RlZEltYWdlQ2FsbGJhY2spOwotICAgIGRpc3BhdGNo
VG9UaHJlYWQoW3RoaXMsIGRlY29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci5pZGVudGlmaWVyXSB7
CisgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlz
LCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0gewogICAgICAgICBBU1NF
UlQobV9kZWNvZGVycy5jb250YWlucyhkZWNvZGVySWRlbnRpZmllcikpOwogICAgICAgICBpZiAo
YXV0byBkZWNvZGVyID0gbV9kZWNvZGVycy50YWtlKGRlY29kZXJJZGVudGlmaWVyKSkgewogICAg
ICAgICAgICAgZGVjb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29k
ZWNzUHJveHk6OlJlbGVhc2VEZWNvZGVyIHsgZGVjb2RlcklkZW50aWZpZXIgfSwgMCk7CkBAIC0z
ODIsNyArMzgyLDcgQEAgTGliV2ViUlRDQ29kZWNzOjpFbmNvZGVyKiBMaWJXZWJSVENDb2RlY3M6
OmNyZWF0ZUVuY29kZXIoVHlwZSB0eXBlLCBjb25zdCBzdGQ6Om0KIGludDMyX3QgTGliV2ViUlRD
Q29kZWNzOjpyZWxlYXNlRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyKQogewogICAgIEFTU0VSVCgh
ZW5jb2Rlci5lbmNvZGVkSW1hZ2VDYWxsYmFjayk7Ci0gICAgZGlzcGF0Y2hUb1RocmVhZChbdGhp
cywgZW5jb2RlcklkZW50aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXJdIHsKKyAgICBlbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVu
dGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7CiAgICAgICAgIEFTU0VSVChtX2VuY29kZXJz
LmNvbnRhaW5zKGVuY29kZXJJZGVudGlmaWVyKSk7CiAgICAgICAgIGF1dG8gZW5jb2RlciA9IG1f
ZW5jb2RlcnMudGFrZShlbmNvZGVySWRlbnRpZmllcik7CiAgICAgICAgIGVuY29kZXItPmNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpSZWxlYXNlRW5jb2Rl
ciB7IGVuY29kZXJJZGVudGlmaWVyIH0sIDApOwpAQCAtMzkzLDcgKzM5Myw3IEBAIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyKQogCiBpbnQz
Ml90IExpYldlYlJUQ0NvZGVjczo6aW5pdGlhbGl6ZUVuY29kZXIoRW5jb2RlciYgZW5jb2Rlciwg
dWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGhlaWdodCwgdW5zaWduZWQgc3RhcnRCaXRSYXRlLCB1
bnNpZ25lZCBtYXhCaXRSYXRlLCB1bnNpZ25lZCBtaW5CaXRSYXRlLCB1aW50MzJfdCBtYXhGcmFt
ZVJhdGUpCiB7Ci0gICAgZGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZpZXIg
PSBlbmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0
UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSgpIG11dGFibGUgeworICAgIGVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50
aWZpZXIgPSBlbmNvZGVyLmlkZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwg
bWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVSYXRlXSgpIG11dGFibGUgewogICAgICAg
ICBhdXRvKiBlbmNvZGVyID0gbV9lbmNvZGVycy5nZXQoZW5jb2RlcklkZW50aWZpZXIpOwogICAg
ICAgICBlbmNvZGVyLT5pbml0aWFsaXphdGlvbkRhdGEgPSBFbmNvZGVySW5pdGlhbGl6YXRpb25E
YXRhIHsgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRl
LCBtYXhGcmFtZVJhdGUgfTsKICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OkluaXRpYWxpemVFbmNvZGVyIHsgZW5jb2Rlcklk
ZW50aWZpZXIsIHdpZHRoLCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0
UmF0ZSwgbWF4RnJhbWVSYXRlIH0sIDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426433</attachid>
            <date>2021-04-19 09:24:42 -0700</date>
            <delta_ts>2021-04-19 09:53:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224758-20210419092442.patch</filename>
            <type>text/plain</type>
            <size>5962</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwOTYzOWYxNWI3ODk3Zjhm
YmMzYTQ5MjYxZjRlZDU5MDk1OTY3Y2QuLmI0ZjgzMGYxMjhlZjQxOWRlYTA1OTEzYmU0YWE1ODJj
MTIwMWRiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggcmFjZXMgaW4gTGliV2ViUlRD
Q29kZWNzIGludHJvZHVjZWQgaW4gcjI3NjIxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgcjI3NjIxNCwgTGliV2ViUlRDQ29kZWNzJ3MgY3Jl
YXRlRGVjb2RlcigpIC8gY3JlYXRlRW5jb2RlcigpIG1heSBob3AgdG8gdGhlIG1haW4KKyAgICAg
ICAgdGhyZWFkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIEdQVVByb2Nlc3Mu
IElmIHJlbGVhc2VEZWNvZGVyKCkgLyByZWxlYXNlRW5jb2RlcigpCisgICAgICAgIHdlcmUgdG8g
Z2V0IGNhbGxlZCB2ZXJ5IHNob3J0bHkgYWZ0ZXIsIHRoZXkgbWF5IHdpbiB0aGUgcmFjZSBhbmQg
aGF2ZSBubyBkZWNvZGVyIC8gZW5jb2RlcgorICAgICAgICB0byByZWxlYXNlLCBzaW5jZSB0aGV5
IGFyZSBkaXNwYXRjaGVkIGRpcmVjdGx5IHRvIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4gVG8gYWRk
cmVzcyB0aGUgaXNzdWUsCisgICAgICAgIHdlIG5vdyBjYWxsIGVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZCgpIGluIHJlbGVhc2VEZWNvZGVyKCksIHJlbGVhc2VF
bmNvZGVyKCkKKyAgICAgICAgYW5kIGluaXRpYWxpemVFbmNvZGVyKCkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Okxp
YldlYlJUQ0NvZGVjczo6cmVsZWFzZUVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJS
VENDb2RlY3M6OmluaXRpYWxpemVFbmNvZGVyKToKKwogMjAyMS0wNC0xOSAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSAtV3RocmVhZC1zYWZl
dHksIGFkZCBhdHRyaWJ1dGVzIHRvIGN1c3RvbSBsb2NrIGNsYXNzZXMsIGFuZCBwcm92aWRlIG1h
Y3JvcyB0byBkZWNsYXJlIGd1YXJkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKaW5kZXggZDE0ZDhjNDk1ZjA1OGU2
ZjQ1OWFhMDA4OGM1ZGY0NzgyMWNjMTE0OS4uM2NlZTcxODU3ZDZlZGE0ZGM5NjEzNGEyNzk0ZmIy
OGY5ZTlkNjAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTGliV2ViUlRDQ29kZWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwCkBAIC0xOTEsMTUgKzE5MSwyNiBAQCB2b2lkIExp
YldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Pbk1haW5UaHJlYWQoTG9j
a2VyPExvY2s+JiBsb2NrZQogdm9pZCBMaWJXZWJSVENDb2RlY3M6OmVuc3VyZUdQVVByb2Nlc3ND
b25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsK
ICAgICBtX25lZWRzR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gPSB0cnVlOwotICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsKLSAgICAgICAgaWYgKG1f
Y29ubmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiBkaXNwYXRjaFRvVGhyZWFkKFdURk1vdmUo
dGFzaykpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nvbm5lY3Rpb25Mb2NrKTsK
KyAgICBpZiAoIW1fdGFza3NUb0Rpc3BhdGNoQWZ0ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uLmlz
RW1wdHkoKSkgeworICAgICAgICBtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJsaXNoaW5nQ29u
bmVjdGlvbi5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBGYXN0IHBhdGggd2hlbiB3ZSBhbHJlYWR5IGhhdmUgYSBjb25uZWN0aW9uLgorICAg
IGlmIChtX2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChXVEZNb3ZlKHRh
c2spKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFt0
aGlzLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKKworICAgIC8vIFdlIGRvbid0
IGhhdmUgYSBjb25uZWN0aW9uIHRvIHRoZSBHUFVQcm9jZXNzIHlldCwgd2UgbmVlZCB0byBob3Ag
dG8gdGhlIG1haW4gdGhyZWFkIHRvIGluaXRpYXRlIGl0LgorICAgIG1fdGFza3NUb0Rpc3BhdGNo
QWZ0ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBj
YWxsT25NYWluUnVuTG9vcChbdGhpc10gewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fY29ubmVjdGlvbkxvY2spOwogICAgICAgICBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9u
TWFpblRocmVhZChsb2NrZXIpOwotICAgICAgICBkaXNwYXRjaFRvVGhyZWFkKFdURk1vdmUodGFz
aykpOworICAgICAgICB3aGlsZSAoIW1fdGFza3NUb0Rpc3BhdGNoQWZ0ZXJFc3RhYmxpc2hpbmdD
b25uZWN0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQobV90YXNr
c1RvRGlzcGF0Y2hBZnRlckVzdGFibGlzaGluZ0Nvbm5lY3Rpb24udGFrZUZpcnN0KCkpOwogICAg
IH0pOwogfQogCkBAIC0yNTksNyArMjcwLDcgQEAgTGliV2ViUlRDQ29kZWNzOjpEZWNvZGVyKiBM
aWJXZWJSVENDb2RlY3M6OmNyZWF0ZURlY29kZXIoVHlwZSB0eXBlKQogaW50MzJfdCBMaWJXZWJS
VENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJU
KCFkZWNvZGVyLmRlY29kZWRJbWFnZUNhbGxiYWNrKTsKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0
aGlzLCBkZWNvZGVySWRlbnRpZmllciA9IGRlY29kZXIuaWRlbnRpZmllcl0geworICAgIGVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZGVjb2Rlcklk
ZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZpZXJdIHsKICAgICAgICAgQVNTRVJUKG1fZGVjb2Rl
cnMuY29udGFpbnMoZGVjb2RlcklkZW50aWZpZXIpKTsKICAgICAgICAgaWYgKGF1dG8gZGVjb2Rl
ciA9IG1fZGVjb2RlcnMudGFrZShkZWNvZGVySWRlbnRpZmllcikpIHsKICAgICAgICAgICAgIGRl
Y29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVjc1Byb3h5OjpS
ZWxlYXNlRGVjb2RlciB7IGRlY29kZXJJZGVudGlmaWVyIH0sIDApOwpAQCAtMzgyLDcgKzM5Myw3
IEBAIExpYldlYlJUQ0NvZGVjczo6RW5jb2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVFbmNv
ZGVyKFR5cGUgdHlwZSwgY29uc3Qgc3RkOjptCiBpbnQzMl90IExpYldlYlJUQ0NvZGVjczo6cmVs
ZWFzZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlcikKIHsKICAgICBBU1NFUlQoIWVuY29kZXIuZW5j
b2RlZEltYWdlQ2FsbGJhY2spOwotICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJ
ZGVudGlmaWVyID0gZW5jb2Rlci5pZGVudGlmaWVyXSB7CisgICAgZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciA9IGVu
Y29kZXIuaWRlbnRpZmllcl0gewogICAgICAgICBBU1NFUlQobV9lbmNvZGVycy5jb250YWlucyhl
bmNvZGVySWRlbnRpZmllcikpOwogICAgICAgICBhdXRvIGVuY29kZXIgPSBtX2VuY29kZXJzLnRh
a2UoZW5jb2RlcklkZW50aWZpZXIpOwogICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQcm94eTo6UmVsZWFzZUVuY29kZXIgeyBlbmNvZGVy
SWRlbnRpZmllciB9LCAwKTsKQEAgLTM5Myw3ICs0MDQsNyBAQCBpbnQzMl90IExpYldlYlJUQ0Nv
ZGVjczo6cmVsZWFzZUVuY29kZXIoRW5jb2RlciYgZW5jb2RlcikKIAogaW50MzJfdCBMaWJXZWJS
VENDb2RlY3M6OmluaXRpYWxpemVFbmNvZGVyKEVuY29kZXImIGVuY29kZXIsIHVpbnQxNl90IHdp
ZHRoLCB1aW50MTZfdCBoZWlnaHQsIHVuc2lnbmVkIHN0YXJ0Qml0UmF0ZSwgdW5zaWduZWQgbWF4
Qml0UmF0ZSwgdW5zaWduZWQgbWluQml0UmF0ZSwgdWludDMyX3QgbWF4RnJhbWVSYXRlKQogewot
ICAgIGRpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5jb2Rlci5p
ZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJp
dFJhdGUsIG1heEZyYW1lUmF0ZV0oKSBtdXRhYmxlIHsKKyAgICBlbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGVuY29kZXJJZGVudGlmaWVyID0gZW5j
b2Rlci5pZGVudGlmaWVyLCB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUs
IG1pbkJpdFJhdGUsIG1heEZyYW1lUmF0ZV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byogZW5j
b2RlciA9IG1fZW5jb2RlcnMuZ2V0KGVuY29kZXJJZGVudGlmaWVyKTsKICAgICAgICAgZW5jb2Rl
ci0+aW5pdGlhbGl6YXRpb25EYXRhID0gRW5jb2RlckluaXRpYWxpemF0aW9uRGF0YSB7IHdpZHRo
LCBoZWlnaHQsIHN0YXJ0Qml0UmF0ZSwgbWF4Qml0UmF0ZSwgbWluQml0UmF0ZSwgbWF4RnJhbWVS
YXRlIH07CiAgICAgICAgIGVuY29kZXItPmNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OkxpYldl
YlJUQ0NvZGVjc1Byb3h5OjpJbml0aWFsaXplRW5jb2RlciB7IGVuY29kZXJJZGVudGlmaWVyLCB3
aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1heEZy
YW1lUmF0ZSB9LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTGliV2ViUlRDQ29kZWNzLmgKaW5kZXggZDNiOTAyZTBjNWQ5MTgwMGI3YzM0ZTgyZWZj
NmMxZDdhNzBlMTc3Yi4uYTk3MDE2ZDdjZjNmZWJhOTAyZWRjNDIxYWM3YzJkZWNkNGMxZWQ3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2ViUlRD
Q29kZWNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTGliV2Vi
UlRDQ29kZWNzLmgKQEAgLTE0NSw2ICsxNDUsOCBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2Nv
bm5lY3Rpb25Mb2NrOwogICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
KyAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX3Rhc2tzVG9EaXNwYXRjaEFmdGVyRXN0YWJs
aXNoaW5nQ29ubmVjdGlvbjsKKwogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9uVlQ+IG1faW1hZ2VUcmFu
c2ZlclNlc3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y+IG1fcGl4ZWxCdWZmZXJDb25mb3JtZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426437</attachid>
            <date>2021-04-19 09:53:36 -0700</date>
            <delta_ts>2021-04-19 10:53:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224758-20210419095335.patch</filename>
            <type>text/plain</type>
            <size>5856</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgwOTYzOWYxNWI3ODk3Zjhm
YmMzYTQ5MjYxZjRlZDU5MDk1OTY3Y2QuLjYzNDZiOGE4YWJlMTFmZTM3ODQ1NGU4ZjcyZDhiZDBh
ZDVmMzVlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMTkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggcmFjZXMgaW4gTGliV2ViUlRD
Q29kZWNzIGludHJvZHVjZWQgaW4gcjI3NjIxNAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5u
IEZhYmxldC4KKworICAgICAgICBBZnRlciByMjc2MjE0LCBMaWJXZWJSVENDb2RlY3MncyBjcmVh
dGVEZWNvZGVyKCkgLyBjcmVhdGVFbmNvZGVyKCkgbWF5IGhvcCB0byB0aGUgbWFpbgorICAgICAg
ICB0aHJlYWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgR1BVUHJvY2Vzcy4g
SWYgcmVsZWFzZURlY29kZXIoKSAvIHJlbGVhc2VFbmNvZGVyKCkKKyAgICAgICAgd2VyZSB0byBn
ZXQgY2FsbGVkIHZlcnkgc2hvcnRseSBhZnRlciwgdGhleSBtYXkgd2luIHRoZSByYWNlIGFuZCBo
YXZlIG5vIGRlY29kZXIgLyBlbmNvZGVyCisgICAgICAgIHRvIHJlbGVhc2UsIHNpbmNlIHRoZXkg
YXJlIGRpc3BhdGNoZWQgZGlyZWN0bHkgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkLiBUbyBhZGRy
ZXNzIHRoZSBpc3N1ZSwKKyAgICAgICAgd2Ugbm93IGNhbGwgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKCkgaW4gcmVsZWFzZURlY29kZXIoKSwgcmVsZWFzZUVu
Y29kZXIoKQorICAgICAgICBhbmQgaW5pdGlhbGl6ZUVuY29kZXIoKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpMaWJXZWJSVENDb2RlY3M6OnJlbGVhc2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6TGli
V2ViUlRDQ29kZWNzOjpyZWxlYXNlRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OkxpYldlYlJU
Q0NvZGVjczo6aW5pdGlhbGl6ZUVuY29kZXIpOgorCiAyMDIxLTA0LTE5ICBLaW1tbyBLaW5udW5l
biAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIC1XdGhyZWFkLXNhZmV0
eSwgYWRkIGF0dHJpYnV0ZXMgdG8gY3VzdG9tIGxvY2sgY2xhc3NlcywgYW5kIHByb3ZpZGUgbWFj
cm9zIHRvIGRlY2xhcmUgZ3VhcmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLmNwcAppbmRleCBkMTRkOGM0OTVmMDU4ZTZm
NDU5YWEwMDg4YzVkZjQ3ODIxY2MxMTQ5Li5iMjExZDQ3ZGUyMzRjNDcwOWQ0NjQ4OWI4OGFiMDU4
OWJhNWI2MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9MaWJXZWJSVENDb2RlY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL0xpYldlYlJUQ0NvZGVjcy5jcHAKQEAgLTE5MSwxNSArMTkxLDI1IEBAIHZvaWQgTGli
V2ViUlRDQ29kZWNzOjplbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9uTWFpblRocmVhZChMb2Nr
ZXI8TG9jaz4mIGxvY2tlCiB2b2lkIExpYldlYlJUQ0NvZGVjczo6ZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewog
ICAgIG1fbmVlZHNHUFVQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7Ci0gICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29ubmVjdGlvbkxvY2spOwotICAgICAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BhdGNoVG9UaHJlYWQoV1RGTW92ZSh0
YXNrKSk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29ubmVjdGlvbkxvY2spOwor
CisgICAgLy8gRmFzdCBwYXRoIHdoZW4gd2UgYWxyZWFkeSBoYXZlIGEgY29ubmVjdGlvbi4KKyAg
ICBpZiAobV9jb25uZWN0aW9uKSB7CisgICAgICAgIGRpc3BhdGNoVG9UaHJlYWQoV1RGTW92ZSh0
YXNrKSk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZW5zdXJlT25NYWluUnVuTG9vcChb
dGhpcywgdGFzayA9IFdURk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisKKyAgICAvLyBXZSBkb24n
dCBoYXZlIGEgY29ubmVjdGlvbiB0byB0aGUgR1BVUHJvY2VzcyB5ZXQsIHdlIG5lZWQgdG8gaG9w
IHRvIHRoZSBtYWluIHRocmVhZCB0byBpbml0aWF0ZSBpdC4KKyAgICBtX3Rhc2tzVG9EaXNwYXRj
aEFmdGVyRXN0YWJsaXNoaW5nQ29ubmVjdGlvbi5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAg
aWYgKG1fdGFza3NUb0Rpc3BhdGNoQWZ0ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uLnNpemUoKSAh
PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbdGhpc10gewog
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29ubmVjdGlvbkxvY2spOwogICAgICAg
ICBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbk9uTWFpblRocmVhZChsb2NrZXIpOwotICAgICAg
ICBkaXNwYXRjaFRvVGhyZWFkKFdURk1vdmUodGFzaykpOworICAgICAgICBmb3IgKGF1dG8mIHRh
c2sgOiBzdGQ6OmV4Y2hhbmdlKG1fdGFza3NUb0Rpc3BhdGNoQWZ0ZXJFc3RhYmxpc2hpbmdDb25u
ZWN0aW9uLCB7IH0pKQorICAgICAgICAgICAgZGlzcGF0Y2hUb1RocmVhZChXVEZNb3ZlKHRhc2sp
KTsKICAgICB9KTsKIH0KIApAQCAtMjU5LDcgKzI2OSw3IEBAIExpYldlYlJUQ0NvZGVjczo6RGVj
b2RlciogTGliV2ViUlRDQ29kZWNzOjpjcmVhdGVEZWNvZGVyKFR5cGUgdHlwZSkKIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjpyZWxlYXNlRGVjb2RlcihEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IEFTU0VSVCghZGVjb2Rlci5kZWNvZGVkSW1hZ2VDYWxsYmFjayk7Ci0gICAgZGlzcGF0Y2hUb1Ro
cmVhZChbdGhpcywgZGVjb2RlcklkZW50aWZpZXIgPSBkZWNvZGVyLmlkZW50aWZpZXJdIHsKKyAg
ICBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbkFuZERpc3BhdGNoVG9UaHJlYWQoW3RoaXMsIGRl
Y29kZXJJZGVudGlmaWVyID0gZGVjb2Rlci5pZGVudGlmaWVyXSB7CiAgICAgICAgIEFTU0VSVCht
X2RlY29kZXJzLmNvbnRhaW5zKGRlY29kZXJJZGVudGlmaWVyKSk7CiAgICAgICAgIGlmIChhdXRv
IGRlY29kZXIgPSBtX2RlY29kZXJzLnRha2UoZGVjb2RlcklkZW50aWZpZXIpKSB7CiAgICAgICAg
ICAgICBkZWNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpMaWJXZWJSVENDb2RlY3NQ
cm94eTo6UmVsZWFzZURlY29kZXIgeyBkZWNvZGVySWRlbnRpZmllciB9LCAwKTsKQEAgLTM4Miw3
ICszOTIsNyBAQCBMaWJXZWJSVENDb2RlY3M6OkVuY29kZXIqIExpYldlYlJUQ0NvZGVjczo6Y3Jl
YXRlRW5jb2RlcihUeXBlIHR5cGUsIGNvbnN0IHN0ZDo6bQogaW50MzJfdCBMaWJXZWJSVENDb2Rl
Y3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXImIGVuY29kZXIpCiB7CiAgICAgQVNTRVJUKCFlbmNv
ZGVyLmVuY29kZWRJbWFnZUNhbGxiYWNrKTsKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBl
bmNvZGVySWRlbnRpZmllciA9IGVuY29kZXIuaWRlbnRpZmllcl0geworICAgIGVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uQW5kRGlzcGF0Y2hUb1RocmVhZChbdGhpcywgZW5jb2RlcklkZW50aWZp
ZXIgPSBlbmNvZGVyLmlkZW50aWZpZXJdIHsKICAgICAgICAgQVNTRVJUKG1fZW5jb2RlcnMuY29u
dGFpbnMoZW5jb2RlcklkZW50aWZpZXIpKTsKICAgICAgICAgYXV0byBlbmNvZGVyID0gbV9lbmNv
ZGVycy50YWtlKGVuY29kZXJJZGVudGlmaWVyKTsKICAgICAgICAgZW5jb2Rlci0+Y29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6TGliV2ViUlRDQ29kZWNzUHJveHk6OlJlbGVhc2VFbmNvZGVyIHsg
ZW5jb2RlcklkZW50aWZpZXIgfSwgMCk7CkBAIC0zOTMsNyArNDAzLDcgQEAgaW50MzJfdCBMaWJX
ZWJSVENDb2RlY3M6OnJlbGVhc2VFbmNvZGVyKEVuY29kZXImIGVuY29kZXIpCiAKIGludDMyX3Qg
TGliV2ViUlRDQ29kZWNzOjppbml0aWFsaXplRW5jb2RlcihFbmNvZGVyJiBlbmNvZGVyLCB1aW50
MTZfdCB3aWR0aCwgdWludDE2X3QgaGVpZ2h0LCB1bnNpZ25lZCBzdGFydEJpdFJhdGUsIHVuc2ln
bmVkIG1heEJpdFJhdGUsIHVuc2lnbmVkIG1pbkJpdFJhdGUsIHVpbnQzMl90IG1heEZyYW1lUmF0
ZSkKIHsKLSAgICBkaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmllciA9IGVu
Y29kZXIuaWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRl
LCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGVdKCkgbXV0YWJsZSB7CisgICAgZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25BbmREaXNwYXRjaFRvVGhyZWFkKFt0aGlzLCBlbmNvZGVySWRlbnRpZmll
ciA9IGVuY29kZXIuaWRlbnRpZmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhC
aXRSYXRlLCBtaW5CaXRSYXRlLCBtYXhGcmFtZVJhdGVdKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8qIGVuY29kZXIgPSBtX2VuY29kZXJzLmdldChlbmNvZGVySWRlbnRpZmllcik7CiAgICAgICAg
IGVuY29kZXItPmluaXRpYWxpemF0aW9uRGF0YSA9IEVuY29kZXJJbml0aWFsaXphdGlvbkRhdGEg
eyB3aWR0aCwgaGVpZ2h0LCBzdGFydEJpdFJhdGUsIG1heEJpdFJhdGUsIG1pbkJpdFJhdGUsIG1h
eEZyYW1lUmF0ZSB9OwogICAgICAgICBlbmNvZGVyLT5jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpMaWJXZWJSVENDb2RlY3NQcm94eTo6SW5pdGlhbGl6ZUVuY29kZXIgeyBlbmNvZGVySWRlbnRp
Zmllciwgd2lkdGgsIGhlaWdodCwgc3RhcnRCaXRSYXRlLCBtYXhCaXRSYXRlLCBtaW5CaXRSYXRl
LCBtYXhGcmFtZVJhdGUgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9MaWJXZWJSVENDb2RlY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL0xpYldlYlJUQ0NvZGVjcy5oCmluZGV4IGQzYjkwMmUwYzVkOTE4MDBiN2Mz
NGU4MmVmYzZjMWQ3YTcwZTE3N2IuLmZiYjRkOTFhNGQwNjliYWNkNjY1ZmEzYzllMWVjYzM0MzZk
NzU2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL0xp
YldlYlJUQ0NvZGVjcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L0xpYldlYlJUQ0NvZGVjcy5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHJpdmF0ZToKIAogICAgIExv
Y2sgbV9jb25uZWN0aW9uTG9jazsKICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3NUb0Rpc3BhdGNoQWZ0
ZXJFc3RhYmxpc2hpbmdDb25uZWN0aW9uOworCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW1hZ2VUcmFuc2ZlclNlc3Npb25WVD4gbV9p
bWFnZVRyYW5zZmVyU2Vzc2lvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGl4ZWxC
dWZmZXJDb25mb3JtZXJDVj4gbV9waXhlbEJ1ZmZlckNvbmZvcm1lcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>