<?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>225081</bug_id>
          
          <creation_ts>2021-04-26 16:28:35 -0700</creation_ts>
          <short_desc>Use ImageBuffer scaling in RemoteLayerBackingStore, rather than handling scale in the class</short_desc>
          <delta_ts>2022-05-04 22:38:35 -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>Other</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=240100</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="Sam Weinig">sam</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>kkinnunen</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754426</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-26 16:28:35 -0700</bug_when>
    <thetext>Use ImageBuffer scaling in RemoteLayerBackingStore, rather than handling scale in the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755128</commentid>
    <comment_count>1</comment_count>
      <attachid>427288</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 12:43:13 -0700</bug_when>
    <thetext>Created attachment 427288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755208</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 16:03:08 -0700</bug_when>
    <thetext>Interesting! The bot breakage I can reproduce, but only with accelerated drawing off (which I of course did not test locally)... I will investigate!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755264</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 17:54:07 -0700</bug_when>
    <thetext>Mystifying. We make a software buffer with resolutionScale=2 but when it comes back it&apos;s got a CTM with scale 1. But only on iOS, and only software buffers, IOSurface works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755272</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 18:05:46 -0700</bug_when>
    <thetext>OK, here&apos;s why:

ImageBufferShareableBitmapBackend::create adopts a GraphicsContext created by ShareableBitmap::createGraphicsContext.

ShareableBitmap doesn&apos;t know about scale; it&apos;s just a bag of bytes.

So, if we use ImageBuffer&apos;s setupContext to apply the root transform (the flip and device scale), we get the scale as we&apos;d like, but then we&apos;ve double flipped (because ShareableBitmap::createGraphicsContext DOES flip).

There are many ways to fix this, I&apos;m not sure which is best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755279</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-28 18:30:25 -0700</bug_when>
    <thetext>A possible solution:

1. Add a new parameter ShareableBitmap::createGraphicsContext(float scaleFactor = 1)
2. Add the following call at the end of ShareableBitmap::createGraphicsContext()
   CGContextSetBaseCTM(bitmapContext.get(), CGAffineTransformScale(CGContextGetBaseCTM(bitmapContext.get()), scaleFactor, scaleFactor));
3. Change ImageBufferShareableBitmapBackend::create() to call bitmap-&gt;createGraphicsContext(parameters.resolutionScale)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755281</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 18:36:48 -0700</bug_when>
    <thetext>Yeah, &quot;teach ShareableBitmap about scale&quot; is definitely one of the options.

The other easy one is &quot;make ImageBufferShareableBitmapBackend apply its scale when it adopts the context&quot;.

*Ideally* setupContext would just like... do the right thing, and we&apos;d have enough bits on each of the backends to know what we need. But that&apos;s a bigger refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755290</commentid>
    <comment_count>7</comment_count>
      <attachid>427324</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 19:23:40 -0700</bug_when>
    <thetext>Created attachment 427324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755291</commentid>
    <comment_count>8</comment_count>
      <attachid>427324</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-04-28 19:31:12 -0700</bug_when>
    <thetext>Comment on attachment 427324
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:131
&gt; +    m_context-&gt;applyDeviceScaleFactor(resolutionScale());

I think this is fine. Splitting the context setup between here and ShareableBitmap::createGraphicsContext() seems inconsistent with IOSurface and CGBitamp backends. So maybe in the future we need to call setupContext() for all CG contexts instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755292</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-28 19:31:44 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #8)
&gt; Comment on attachment 427324 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427324&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:131
&gt; &gt; +    m_context-&gt;applyDeviceScaleFactor(resolutionScale());
&gt; 
&gt; I think this is fine. Splitting the context setup between here and
&gt; ShareableBitmap::createGraphicsContext() seems inconsistent with IOSurface
&gt; and CGBitamp backends. So maybe in the future we need to call setupContext()
&gt; for all CG contexts instead.

Agreed, there is definitely some cleanup that can be done, with more typing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755324</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-29 02:27:55 -0700</bug_when>
    <thetext>Seems like there&apos;s oooonneeee broken test left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756088</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-02 19:16:39 -0700</bug_when>
    <thetext>Just to ask the really dumb question here, but what about going the other way, and removing ImageBuffer scaling entirely?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756358</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-03 16:29:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/77477683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756376</commentid>
    <comment_count>13</comment_count>
      <attachid>427621</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-03 16:59:13 -0700</bug_when>
    <thetext>Created attachment 427621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756377</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-03 17:00:03 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #11)
&gt; Just to ask the really dumb question here, but what about going the other
&gt; way, and removing ImageBuffer scaling entirely?

That is a much scarier prospect. Not crazy, but would require more typing and care for sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756411</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-03 19:06:23 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #14)
&gt; (In reply to Sam Weinig from comment #11)
&gt; &gt; Just to ask the really dumb question here, but what about going the other
&gt; &gt; way, and removing ImageBuffer scaling entirely?
&gt; 
&gt; That is a much scarier prospect. Not crazy, but would require more typing
&gt; and care for sure.

Definitely. I just don&apos;t recall the reason we made scale a property of ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756413</commentid>
    <comment_count>16</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-05-03 19:16:38 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #15)
&gt; (In reply to Tim Horton from comment #14)
&gt; &gt; (In reply to Sam Weinig from comment #11)
&gt; &gt; &gt; Just to ask the really dumb question here, but what about going the other
&gt; &gt; &gt; way, and removing ImageBuffer scaling entirely?
&gt; &gt; 
&gt; &gt; That is a much scarier prospect. Not crazy, but would require more typing
&gt; &gt; and care for sure.
&gt; 
&gt; Definitely. I just don&apos;t recall the reason we made scale a property of
&gt; ImageBuffer.

I think the scaling is used when creating ImageBuffers for Retina display. We want to have the right pixel resolution for the backend. But at the same time we draw to the context in logical coordinates. See ImageBufferCGBackend::setupContext().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756414</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-03 19:18:29 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #16)
&gt; (In reply to Sam Weinig from comment #15)
&gt; &gt; (In reply to Tim Horton from comment #14)
&gt; &gt; &gt; (In reply to Sam Weinig from comment #11)
&gt; &gt; &gt; &gt; Just to ask the really dumb question here, but what about going the other
&gt; &gt; &gt; &gt; way, and removing ImageBuffer scaling entirely?
&gt; &gt; &gt; 
&gt; &gt; &gt; That is a much scarier prospect. Not crazy, but would require more typing
&gt; &gt; &gt; and care for sure.
&gt; &gt; 
&gt; &gt; Definitely. I just don&apos;t recall the reason we made scale a property of
&gt; &gt; ImageBuffer.
&gt; 
&gt; I think the scaling is used when creating ImageBuffers for Retina display.
&gt; We want to have the right pixel resolution for the backend. But at the same
&gt; time we draw to the context in logical coordinates. See
&gt; ImageBufferCGBackend::setupContext().

Sam&apos;s point is that this could be something that *clients* of ImageBuffer worry about, instead of ImageBuffer itself (just like e.g. IOSurface).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756417</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-05-03 19:25:05 -0700</bug_when>
    <thetext>This will make things a little bit more difficult. For example putImageData() and getImageData() have deal with logical coordinates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756431</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-03 21:08:31 -0700</bug_when>
    <thetext>Committed r276945 (237278@main): &lt;https://commits.webkit.org/237278@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427621.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427288</attachid>
            <date>2021-04-28 12:43:13 -0700</date>
            <delta_ts>2021-04-28 19:23:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225081-20210428124312.patch</filename>
            <type>text/plain</type>
            <size>7806</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5YWEwNWY3MDc1ZDE5MTU2
OTA1NjI2NTIzY2JlYjBmMjQyOTU4NDcuLjBkNzlhZmRkNDU2NGE0YTYyNjM0YjEzMzI1NmY1MWY3
NWM4ZThiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDQtMjggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEltYWdlQnVmZmVy
IHNjYWxpbmcgaW4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUsIHJhdGhlciB0aGFuIGhhbmRsaW5n
IHNjYWxlIGluIHRoZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJv
bnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNraW5n
U3RvcmVTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgSW1hZ2VCdWZm
ZXIncyBzY2FsaW5nIHN1cHBvcnQgaW5zdGVhZCBvZiBzY2FsaW5nIG91cnNlbHZlcy4KKyAgICAg
ICAgVGhpcyB3aWxsIGJlIGhlbHBmdWwgZm9yIGZ1dHVyZSBwYXRjaGVzIHdoZXJlIHRoZSBiYWNr
aW5nIHN0b3JlJ3MgSW1hZ2VCdWZmZXIKKyAgICAgICAgbmVlZHMgdG8ga25vdyB0aGUgcHJlc2Vu
dGF0aW9uIHNpemUsIG5vdCBqdXN0IHRoZSBiYWNraW5nIHN0b3JlIHNpemUuCisgICAgICAgIFdl
IGFsc28gZG8gdGhlIGJhY2stPmZyb250IGNvcHkgaW4gc2NhbGVkIHNwYWNlIG5vdywgd2hpY2gg
c2ltcGxpZmllcyB0aGUgY29kZSBhIGJpdC4KKwogMjAyMS0wNC0yNyAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gRG9uJ3QgdXNlIEZPUldB
UkRJTkdfSEVBREVSU19ESVIgZm9yIEdUSyBXZWJLaXQgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaAppbmRleCA3MTE3YmVjMjVjZjNiNGFkNzcwZmNiOWJlNTgwNWQ5NzJhMDIwN2I2
Li42NTg1MThiYmE1ZjVhYTg2N2NlOTJiY2I3MjdmNGE2ZTkxM2UwYTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaApAQCAtOTksNyArOTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dh
cFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCiAgICAgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tpbmdTdG9yZVNpemUoKSBj
b25zdDsKIAogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbV9sYXllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDVlNWE4N2U0NGM0OGQzOWZkM2M4ZDdmNTU1MWVhOGM2
MmRlNTViMTQuLjBlMGIxZTY1MDY1NzlhZTFiYTc4ZjNlOWRmN2Q1MGFlODJlZmRiNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTE0NiwxMyArMTQ2LDYgQEAgdm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6c2V0TmVlZHNEaXNwbGF5KCkKICAgICBzZXROZWVkc0Rpc3Bs
YXkoV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBXZWJDb3JlOjpleHBhbmRl
ZEludFNpemUobV9zaXplKSkpOwogfQogCi1XZWJDb3JlOjpJbnRTaXplIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpiYWNraW5nU3RvcmVTaXplKCkgY29uc3QKLXsKLSAgICBXZWJDb3JlOjpGbG9h
dFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fc2NhbGUp
OwotICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShzY2FsZWRTaXplKTsKLX0KLQogV2ViQ29yZTo6
UGl4ZWxGb3JtYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnBpeGVsRm9ybWF0KCkgY29uc3QK
IHsKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKQEAgLTE5OSwxMSArMTkyLDExIEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgIGF1
dG8gcmVuZGVyaW5nTW9kZSA9IG1fYWNjZWxlcmF0ZXNEcmF3aW5nID8gV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkOwogCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJl
bmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKQotICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihiYWNraW5nU3RvcmVTaXpl
KCksIHJlbmRlcmluZ01vZGUsIDEsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgcmVuZGVyaW5nTW9kZSwgbV9zY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKICAgICBlbHNlIGlm
IChyZW5kZXJpbmdNb2RlID09IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQot
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNy
ZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxs
cHRyKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxV
bmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpLCBudWxscHRyKTsKIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSgpCkBAIC0yMTksOSArMjEyLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSgpCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGls
ZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVz
IGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwg
ZmFsc2UpOwogCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBleHBhbmRlZFNjYWxlZFNpemUgPSBiYWNr
aW5nU3RvcmVTaXplKCk7Ci0KLSAgICBpZiAobV9kaXJ0eVJlZ2lvbi5pc0VtcHR5KCkgfHwgZXhw
YW5kZWRTY2FsZWRTaXplLmlzRW1wdHkoKSkKKyAgICBpZiAobV9kaXJ0eVJlZ2lvbi5pc0VtcHR5
KCkgfHwgbV9zaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5lZWRUb0VuY29kZUJhY2tp
bmdTdG9yZTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbGF5ZXJCb3VuZHMoV2ViQ29yZTo6SW50
UG9pbnQoKSwgV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKG1fc2l6ZSkpOwpAQCAtMjMzLDIwICsy
MjQsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAg
IG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAgfQogCi0gICAgV2ViQ29y
ZTo6SW50UmVjdCBleHBhbmRlZFNjYWxlZExheWVyQm91bmRzKFdlYkNvcmU6OkludFBvaW50KCks
IGV4cGFuZGVkU2NhbGVkU2l6ZSk7Ci0KICAgICBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCk7CiAg
ICAgaWYgKCFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLQogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBz
Y2FsZWRTaXplID0gbV9zaXplOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9zY2FsZSk7Ci0gICAg
V2ViQ29yZTo6SW50UmVjdCBzY2FsZWRMYXllckJvdW5kcyhXZWJDb3JlOjpJbnRQb2ludCgpLCBX
ZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShzY2FsZWRTaXplKSk7Ci0KICAgICAvLyBJZiB3ZSBoYXZl
IGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWludCByZWN0cyB0byBwYWludCBhbmQgdGhl
eSBjb3ZlciBsZXNzCiAgICAgLy8gdGhhbiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkIG9m
IHRoZSB0b3RhbCBkaXJ0eSBhcmVhLCB3ZSdsbCByZXBhaW50IGVhY2ggcmVjdCBzZXBhcmF0ZWx5
LgogICAgIC8vIE90aGVyd2lzZSwgcmVwYWludCB0aGUgZW50aXJlIGJvdW5kaW5nIGJveCBvZiB0
aGUgZGlydHkgcmVnaW9uLgpAQCAtMjU4LDQzICsyNDIsMzEgQEAgYm9vbCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKGRpcnR5Qm91
bmRzKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogZmluZCBhIGNvbnNpc3RlbnQgd2F5IHRvIHNj
YWxlIGFuZCBzbmFwIGRpcnR5IGFuZCBDRyBjbGlwIHJlY3RzLgotICAgIGZvciAoY29uc3QgYXV0
byYgcmVjdCA6IGRpcnR5UmVjdHMpIHsKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjYWxl
ZFJlY3QocmVjdCk7Ci0gICAgICAgIHNjYWxlZFJlY3Quc2NhbGUobV9zY2FsZSk7Ci0gICAgICAg
IHNjYWxlZFJlY3QgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOwotICAg
ICAgICBzY2FsZWRSZWN0LnNjYWxlKDEgLyBtX3NjYWxlKTsKLSAgICAgICAgbV9wYWludGluZ1Jl
Y3RzLmFwcGVuZChzY2FsZWRSZWN0KTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiByZWN0
IDogZGlydHlSZWN0cykKKyAgICAgICAgbV9wYWludGluZ1JlY3RzLmFwcGVuZChyZWN0KTsKIAog
ICAgIGlmICghbV9kaXJ0eVJlZ2lvbi5jb250YWlucyhsYXllckJvdW5kcykpIHsKICAgICAgICAg
QVNTRVJUKG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlcik7CiAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCptX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIsIHsgMCwgMCB9LCB7IFdlYkNvcmU6
OkNvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgIH0KIAotICAgIGlmIChtX3BhaW50aW5n
UmVjdHMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjYWxlZFBh
aW50aW5nUmVjdCA9IG1fcGFpbnRpbmdSZWN0c1swXTsKLSAgICAgICAgc2NhbGVkUGFpbnRpbmdS
ZWN0LnNjYWxlKG1fc2NhbGUpOwotICAgICAgICBjb250ZXh0LmNsaXAoc2NhbGVkUGFpbnRpbmdS
ZWN0KTsKLSAgICB9IGVsc2UgeworICAgIGlmIChtX3BhaW50aW5nUmVjdHMuc2l6ZSgpID09IDEp
CisgICAgICAgIGNvbnRleHQuY2xpcChtX3BhaW50aW5nUmVjdHNbMF0pOworICAgIGVsc2Ugewog
ICAgICAgICBXZWJDb3JlOjpQYXRoIGNsaXBQYXRoOwotICAgICAgICBmb3IgKGF1dG8gcmVjdCA6
IG1fcGFpbnRpbmdSZWN0cykgewotICAgICAgICAgICAgcmVjdC5zY2FsZShtX3NjYWxlKTsKKyAg
ICAgICAgZm9yIChhdXRvIHJlY3QgOiBtX3BhaW50aW5nUmVjdHMpCiAgICAgICAgICAgICBjbGlw
UGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICB9CiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgo
Y2xpcFBhdGgpOwogICAgIH0KIAogICAgIGlmICghbV9pc09wYXF1ZSkKLSAgICAgICAgY29udGV4
dC5jbGVhclJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMpOworICAgICAgICBjb250ZXh0LmNsZWFyUmVj
dChsYXllckJvdW5kcyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1faXNPcGFxdWUpCi0g
ICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIFdlYkNvcmU6OlNSR0JB
PHVpbnQ4X3Q+IHsgMjU1LCA0NywgMTQ2IH0pOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGxh
eWVyQm91bmRzLCBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7IDI1NSwgNDcsIDE0NiB9KTsKICNl
bmRpZgogCi0gICAgY29udGV4dC5zY2FsZShtX3NjYWxlKTsKLSAgICAKICAgICAvLyBGSVhNRTog
Q2xhcmlmeSB0aGF0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyBpcyBq
dXN0IGFib3V0IGltYWdlIGRlY29kaW5nLgogICAgIGF1dG8gZmxhZ3MgPSBtX2xheWVyLT5jb250
ZXh0KCkgJiYgbV9sYXllci0+Y29udGV4dCgpLT5uZXh0UmVuZGVyaW5nVXBkYXRlUmVxdWlyZXNT
eW5jaHJvbm91c0ltYWdlRGVjb2RpbmcoKSA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNu
YXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludE5vcm1hbDsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427324</attachid>
            <date>2021-04-28 19:23:40 -0700</date>
            <delta_ts>2021-05-03 16:59:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225081-20210428192339.patch</filename>
            <type>text/plain</type>
            <size>9324</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5YWEwNWY3MDc1ZDE5MTU2
OTA1NjI2NTIzY2JlYjBmMjQyOTU4NDcuLmFjMTk0NzY3YmJkOWIxNjljMDg0NTA1MmEwMjI0Mjdh
YzQyZDM0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDQtMjggIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEltYWdlQnVmZmVy
IHNjYWxpbmcgaW4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUsIHJhdGhlciB0aGFuIGhhbmRsaW5n
IHNjYWxlIGluIHRoZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJv
bnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNraW5n
U3RvcmVTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgSW1hZ2VCdWZm
ZXIncyBzY2FsaW5nIHN1cHBvcnQgaW5zdGVhZCBvZiBzY2FsaW5nIG91cnNlbHZlcy4KKyAgICAg
ICAgVGhpcyB3aWxsIGJlIGhlbHBmdWwgZm9yIGZ1dHVyZSBwYXRjaGVzIHdoZXJlIHRoZSBiYWNr
aW5nIHN0b3JlJ3MgSW1hZ2VCdWZmZXIKKyAgICAgICAgbmVlZHMgdG8ga25vdyB0aGUgcHJlc2Vu
dGF0aW9uIHNpemUsIG5vdCBqdXN0IHRoZSBiYWNraW5nIHN0b3JlIHNpemUuCisgICAgICAgIFdl
IGFsc28gZG8gdGhlIGJhY2stPmZyb250IGNvcHkgaW4gc2NhbGVkIHNwYWNlIG5vdywgd2hpY2gg
c2ltcGxpZmllcyB0aGUgY29kZSBhIGJpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAgICAgQXBwbHkgdGhlIGRldmljZSBzY2FsZSBmYWN0
b3IgdG8gdGhlIEdyYXBoaWNzQ29udGV4dCB0aGF0IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZAorICAgICAgICBhZG9wdHMgZnJvbSBTaGFyZWFibGVCaXRtYXAuIFdlIGRvbid0IG5l
ZWQgdG8gZmxpcCBiZWNhdXNlIFNoYXJlYWJsZUJpdG1hcCBkb2VzIHRoYXQsCisgICAgICAgIGJ1
dCBpdCBkb2Vzbid0IGtub3cgYW55dGhpbmcgYWJvdXQgc2NhbGVzIGF0IGFsbC4KKwogMjAyMS0w
NC0yNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtD
TWFrZV0gRG9uJ3QgdXNlIEZPUldBUkRJTkdfSEVBREVSU19ESVIgZm9yIEdUSyBXZWJLaXQgaGVh
ZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA3MTE3YmVjMjVjZjNiNGFkNzcw
ZmNiOWJlNTgwNWQ5NzJhMDIwN2I2Li42NTg1MThiYmE1ZjVhYTg2N2NlOTJiY2I3MjdmNGE2ZTkx
M2UwYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtOTksNyArOTksNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCiAgICAgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdDsKLSAgICBXZWJDb3JlOjpJbnRTaXpl
IGJhY2tpbmdTdG9yZVNpemUoKSBjb25zdDsKIAogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSog
bV9sYXllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDVlNWE4N2U0NGM0
OGQzOWZkM2M4ZDdmNTU1MWVhOGM2MmRlNTViMTQuLjBlMGIxZTY1MDY1NzlhZTFiYTc4ZjNlOWRm
N2Q1MGFlODJlZmRiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTE0Niwx
MyArMTQ2LDYgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0TmVlZHNEaXNwbGF5
KCkKICAgICBzZXROZWVkc0Rpc3BsYXkoV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2lu
dCgpLCBXZWJDb3JlOjpleHBhbmRlZEludFNpemUobV9zaXplKSkpOwogfQogCi1XZWJDb3JlOjpJ
bnRTaXplIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNraW5nU3RvcmVTaXplKCkgY29uc3QK
LXsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKLSAgICBzY2Fs
ZWRTaXplLnNjYWxlKG1fc2NhbGUpOwotICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShzY2FsZWRT
aXplKTsKLX0KLQogV2ViQ29yZTo6UGl4ZWxGb3JtYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnBpeGVsRm9ybWF0KCkgY29uc3QKIHsKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKQEAgLTE5
OSwxMSArMTkyLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlk
RnJvbnRCdWZmZXIoKQogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IG1fYWNjZWxlcmF0ZXNEcmF3
aW5nID8gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3Nl
OjpET00pKQotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29u
dGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1
ZmZlcihiYWNraW5nU3RvcmVTaXplKCksIHJlbmRlcmluZ01vZGUsIDEsIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgcmVuZGVyaW5nTW9k
ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZv
cm1hdCgpKTsKICAgICBlbHNlIGlmIChyZW5kZXJpbmdNb2RlID09IFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0g
V2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShiYWNraW5nU3RvcmVTaXplKCksIDEsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7Cisg
ICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdl
QnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3Jl
YXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0
ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgp
LCAxLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCks
IG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKIH0KIAogYm9vbCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCkBAIC0yMTksOSArMjEyLDcgQEAgYm9vbCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJv
bnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdo
b2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCiAgICAgc2V0QnVmZmVyVm9sYXRpbGl0
eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOwogCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBleHBh
bmRlZFNjYWxlZFNpemUgPSBiYWNraW5nU3RvcmVTaXplKCk7Ci0KLSAgICBpZiAobV9kaXJ0eVJl
Z2lvbi5pc0VtcHR5KCkgfHwgZXhwYW5kZWRTY2FsZWRTaXplLmlzRW1wdHkoKSkKKyAgICBpZiAo
bV9kaXJ0eVJlZ2lvbi5pc0VtcHR5KCkgfHwgbV9zaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbGF5
ZXJCb3VuZHMoV2ViQ29yZTo6SW50UG9pbnQoKSwgV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKG1f
c2l6ZSkpOwpAQCAtMjMzLDIwICsyMjQsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7
CiAgICAgfQogCi0gICAgV2ViQ29yZTo6SW50UmVjdCBleHBhbmRlZFNjYWxlZExheWVyQm91bmRz
KFdlYkNvcmU6OkludFBvaW50KCksIGV4cGFuZGVkU2NhbGVkU2l6ZSk7Ci0KICAgICBzd2FwVG9W
YWxpZEZyb250QnVmZmVyKCk7CiAgICAgaWYgKCFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCA9IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLQogICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbV9zaXplOwotICAgIHNjYWxlZFNpemUu
c2NhbGUobV9zY2FsZSk7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBzY2FsZWRMYXllckJvdW5kcyhX
ZWJDb3JlOjpJbnRQb2ludCgpLCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShzY2FsZWRTaXplKSk7
Ci0KICAgICAvLyBJZiB3ZSBoYXZlIGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWludCBy
ZWN0cyB0byBwYWludCBhbmQgdGhleSBjb3ZlciBsZXNzCiAgICAgLy8gdGhhbiB3ZWJMYXllcldh
c3RlZFNwYWNlVGhyZXNob2xkIG9mIHRoZSB0b3RhbCBkaXJ0eSBhcmVhLCB3ZSdsbCByZXBhaW50
IGVhY2ggcmVjdCBzZXBhcmF0ZWx5LgogICAgIC8vIE90aGVyd2lzZSwgcmVwYWludCB0aGUgZW50
aXJlIGJvdW5kaW5nIGJveCBvZiB0aGUgZGlydHkgcmVnaW9uLgpAQCAtMjU4LDQzICsyNDIsMzEg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIGRpcnR5
UmVjdHMuYXBwZW5kKGRpcnR5Qm91bmRzKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogZmluZCBh
IGNvbnNpc3RlbnQgd2F5IHRvIHNjYWxlIGFuZCBzbmFwIGRpcnR5IGFuZCBDRyBjbGlwIHJlY3Rz
LgotICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IGRpcnR5UmVjdHMpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IHNjYWxlZFJlY3QocmVjdCk7Ci0gICAgICAgIHNjYWxlZFJlY3Quc2Nh
bGUobV9zY2FsZSk7Ci0gICAgICAgIHNjYWxlZFJlY3QgPSBXZWJDb3JlOjplbmNsb3NpbmdJbnRS
ZWN0KHNjYWxlZFJlY3QpOwotICAgICAgICBzY2FsZWRSZWN0LnNjYWxlKDEgLyBtX3NjYWxlKTsK
LSAgICAgICAgbV9wYWludGluZ1JlY3RzLmFwcGVuZChzY2FsZWRSZWN0KTsKLSAgICB9CisgICAg
Zm9yIChjb25zdCBhdXRvJiByZWN0IDogZGlydHlSZWN0cykKKyAgICAgICAgbV9wYWludGluZ1Jl
Y3RzLmFwcGVuZChyZWN0KTsKIAogICAgIGlmICghbV9kaXJ0eVJlZ2lvbi5jb250YWlucyhsYXll
ckJvdW5kcykpIHsKICAgICAgICAgQVNTRVJUKG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlcik7CiAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIs
IHsgMCwgMCB9LCB7IFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgIH0K
IAotICAgIGlmIChtX3BhaW50aW5nUmVjdHMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHNjYWxlZFBhaW50aW5nUmVjdCA9IG1fcGFpbnRpbmdSZWN0c1swXTsKLSAg
ICAgICAgc2NhbGVkUGFpbnRpbmdSZWN0LnNjYWxlKG1fc2NhbGUpOwotICAgICAgICBjb250ZXh0
LmNsaXAoc2NhbGVkUGFpbnRpbmdSZWN0KTsKLSAgICB9IGVsc2UgeworICAgIGlmIChtX3BhaW50
aW5nUmVjdHMuc2l6ZSgpID09IDEpCisgICAgICAgIGNvbnRleHQuY2xpcChtX3BhaW50aW5nUmVj
dHNbMF0pOworICAgIGVsc2UgewogICAgICAgICBXZWJDb3JlOjpQYXRoIGNsaXBQYXRoOwotICAg
ICAgICBmb3IgKGF1dG8gcmVjdCA6IG1fcGFpbnRpbmdSZWN0cykgewotICAgICAgICAgICAgcmVj
dC5zY2FsZShtX3NjYWxlKTsKKyAgICAgICAgZm9yIChhdXRvIHJlY3QgOiBtX3BhaW50aW5nUmVj
dHMpCiAgICAgICAgICAgICBjbGlwUGF0aC5hZGRSZWN0KHJlY3QpOwotICAgICAgICB9CiAgICAg
ICAgIGNvbnRleHQuY2xpcFBhdGgoY2xpcFBhdGgpOwogICAgIH0KIAogICAgIGlmICghbV9pc09w
YXF1ZSkKLSAgICAgICAgY29udGV4dC5jbGVhclJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMpOworICAg
ICAgICBjb250ZXh0LmNsZWFyUmVjdChsYXllckJvdW5kcyk7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgaWYgKG1faXNPcGFxdWUpCi0gICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJC
b3VuZHMsIFdlYkNvcmU6OlNSR0JBPHVpbnQ4X3Q+IHsgMjU1LCA0NywgMTQ2IH0pOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGxheWVyQm91bmRzLCBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7
IDI1NSwgNDcsIDE0NiB9KTsKICNlbmRpZgogCi0gICAgY29udGV4dC5zY2FsZShtX3NjYWxlKTsK
LSAgICAKICAgICAvLyBGSVhNRTogQ2xhcmlmeSB0aGF0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQ
YWludFNuYXBzaG90dGluZyBpcyBqdXN0IGFib3V0IGltYWdlIGRlY29kaW5nLgogICAgIGF1dG8g
ZmxhZ3MgPSBtX2xheWVyLT5jb250ZXh0KCkgJiYgbV9sYXllci0+Y29udGV4dCgpLT5uZXh0UmVu
ZGVyaW5nVXBkYXRlUmVxdWlyZXNTeW5jaHJvbm91c0ltYWdlRGVjb2RpbmcoKSA/IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQ
YWludE5vcm1hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAppbmRleCAxNjJkMDNiZDQ4N2U0MGMxMWU5ODliMzk5ZWMyODI4OWY1OTE5
YmQ4Li4xYzNjYzczZDE3NmUzYWE4YjhmM2Q2ZjU1ZTUyZDBiNzJhMWRlMDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMjQsNiAr
MTI0LDExIEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAgICAgLCBtX2JpdG1hcChXVEZNb3Zl
KGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKIHsKKyAgICAvLyBT
aGFyZWFibGVCaXRtYXAgZW5zdXJlcyB0aGF0IHRoZSBjb29yZGluYXRlIHNwYWNlIGluIHRoZSBj
b250ZXh0IHRoYXQgd2UncmUgYWRvcHRpbmcKKyAgICAvLyBoYXMgYSB0b3AtbGVmdCBvcmlnaW4s
IHNvIHdlIGRvbid0IGV2ZXIgbmVlZCB0byBmbGlwIGhlcmUsIHNvIHdlIGRvbid0IGNhbGwgc2V0
dXBDb250ZXh0KCkuCisgICAgLy8gSG93ZXZlciwgU2hhcmVhYmxlQml0bWFwIGRvZXMgbm90IGhh
dmUgYSBub3Rpb24gb2Ygc2NhbGUsIHNvIHdlIG11c3QgYXBwbHkgdGhlIGRldmljZQorICAgIC8v
IHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCBvdXJzZWx2ZXMuCisgICAgbV9jb250ZXh0LT5h
cHBseURldmljZVNjYWxlRmFjdG9yKHJlc29sdXRpb25TY2FsZSgpKTsKIH0KIAogSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427621</attachid>
            <date>2021-05-03 16:59:13 -0700</date>
            <delta_ts>2021-05-03 21:08:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225081-20210503165912.patch</filename>
            <type>text/plain</type>
            <size>10323</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0NGU2MTRkOTEyNDNhNjIy
YzQ2ODAyNmRkYTU3MWY2OWYwZTRkMmIuLmUzNDIwY2VkZjhhZDQ3YjMyNzE0NzUyMWJlZDFkMGRi
MGFkY2RiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMDQtMjkgIFRpbSBIb3J0
b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIEltYWdlQnVmZmVy
IHNjYWxpbmcgaW4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUsIHJhdGhlciB0aGFuIGhhbmRsaW5n
IHNjYWxlIGluIHRoZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI1MDgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FpZCBBYm91LUhhbGxh
d2EuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlk
RnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpiYWNr
aW5nU3RvcmVTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgSW1hZ2VC
dWZmZXIncyBzY2FsaW5nIHN1cHBvcnQgaW5zdGVhZCBvZiBzY2FsaW5nIG91cnNlbHZlcy4KKyAg
ICAgICAgVGhpcyB3aWxsIGJlIGhlbHBmdWwgZm9yIGZ1dHVyZSBwYXRjaGVzIHdoZXJlIHRoZSBi
YWNraW5nIHN0b3JlJ3MgSW1hZ2VCdWZmZXIKKyAgICAgICAgbmVlZHMgdG8ga25vdyB0aGUgcHJl
c2VudGF0aW9uIHNpemUsIG5vdCBqdXN0IHRoZSBiYWNraW5nIHN0b3JlIHNpemUuCisgICAgICAg
IFdlIGFsc28gZG8gdGhlIGJhY2stPmZyb250IGNvcHkgaW4gc2NhbGVkIHNwYWNlIG5vdywgd2hp
Y2ggc2ltcGxpZmllcyB0aGUgY29kZSBhIGJpdC4KKyAgICAgICAgCisgICAgICAgIFdlIGhhdmUg
dG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHJlY3QgZm9y
IHRoZSBjb3B5LCBiZWNhdXNlCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVm
ZmVyJ3MgaW1wbGljaXQgc291cmNlIHJlY3QgaXMgY29tcHV0ZWQgdXNpbmcKKyAgICAgICAgSW1h
Z2VCdWZmZXI6OmxvZ2ljYWxTaXplKCksIHdoaWNoIGlzIGEgKnRydW5jYXRlZCogSW50U2l6ZS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKToKKyAgICAg
ICAgQXBwbHkgdGhlIGRldmljZSBzY2FsZSBmYWN0b3IgdG8gdGhlIEdyYXBoaWNzQ29udGV4dCB0
aGF0IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZAorICAgICAgICBhZG9wdHMgZnJv
bSBTaGFyZWFibGVCaXRtYXAuIFdlIGRvbid0IG5lZWQgdG8gZmxpcCBiZWNhdXNlIFNoYXJlYWJs
ZUJpdG1hcCBkb2VzIHRoYXQsCisgICAgICAgIGJ1dCBpdCBkb2Vzbid0IGtub3cgYW55dGhpbmcg
YWJvdXQgc2NhbGVzIGF0IGFsbC4KKwogMjAyMS0wNC0yOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIHVubmVlZGVkIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IDNjZmMwZjAxODMxMzE4NWIwOTA2MWM5MDJhYjMxMjA0NjRjMjQyOGEuLmM3OGFm
N2UyNWRkYjU0MTQzY2ViNTlhMTFmZmZjMjNhYWEzNDcxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zOTAsNyArMzkw
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZm
ZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAgICAgdm9pZCBkcmF3Q29uc3VtaW5n
SW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmgKaW5kZXggNzExN2JlYzI1Y2YzYjRhZDc3MGZjYjliZTU4MDVkOTcyYTAyMDdi
Ni4uNjU4NTE4YmJhNWY1YWE4NjdjZTkyYmNiNzI3ZjRhNmU5MTNlMGExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmgKQEAgLTk5LDcgKzk5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKIAogICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KCkgY29uc3Q7Ci0gICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNraW5nU3RvcmVTaXplKCkg
Y29uc3Q7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbGF5ZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQppbmRleCA1ZTVhODdlNDRjNDhkMzlmZDNjOGQ3ZjU1NTFlYThj
NjJkZTU1YjE0Li44YTEwZjE1YTFkZmJlMDcwMjMwZDIwYzYzMDM5ZDFiMDUyMjI5ZjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0xNDYsMTMgKzE0Niw2IEBAIHZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlzcGxheSgpCiAgICAgc2V0TmVlZHNEaXNw
bGF5KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKG1fc2l6ZSkpKTsKIH0KIAotV2ViQ29yZTo6SW50U2l6ZSBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlU2l6ZSgpIGNvbnN0Ci17Ci0gICAgV2ViQ29yZTo6Rmxv
YXRTaXplIHNjYWxlZFNpemUgPSBtX3NpemU7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX3NjYWxl
KTsKLSAgICByZXR1cm4gcm91bmRlZEludFNpemUoc2NhbGVkU2l6ZSk7Ci19Ci0KIFdlYkNvcmU6
OlBpeGVsRm9ybWF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwaXhlbEZvcm1hdCgpIGNvbnN0
CiB7CiAjaWYgSEFWRShJT1NVUkZBQ0VfUkdCMTApCkBAIC0xOTksMTEgKzE5MiwxMSBAQCB2b2lk
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKICAgICBh
dXRvIHJlbmRlcmluZ01vZGUgPSBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFdlYkNvcmU6OlJlbmRl
cmluZ01vZGU6OkFjY2VsZXJhdGVkIDogV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZDsKIAogICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVS
ZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSkKLSAgICAgICAgbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoYmFja2luZ1N0b3JlU2l6
ZSgpLCByZW5kZXJpbmdNb2RlLCAxLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0g
bV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5j
cmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIHJlbmRlcmluZ01vZGUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgZWxzZSBp
ZiAocmVuZGVyaW5nTW9kZSA9PSBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkK
LSAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1h
Z2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+Ojpj
cmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZElt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVs
bHB0cik7CiAgICAgZWxzZQotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCYWNrZW5kPjo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3Jt
YXQoKSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3Bs
YXkoKQpAQCAtMjE5LDkgKzIxMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRp
c3BsYXkoKQogICAgIC8vIE1ha2UgdGhlIHByZXZpb3VzIGZyb250IGJ1ZmZlciBub24tdm9sYXRp
bGUgZWFybHksIHNvIHRoYXQgd2UgY2FuIGRpcnR5IHRoZSB3aG9sZSBsYXllciBpZiBpdCBjb21l
cyBiYWNrIGVtcHR5LgogICAgIHNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZTo6RnJvbnQs
IGZhbHNlKTsKIAotICAgIFdlYkNvcmU6OkludFNpemUgZXhwYW5kZWRTY2FsZWRTaXplID0gYmFj
a2luZ1N0b3JlU2l6ZSgpOwotCi0gICAgaWYgKG1fZGlydHlSZWdpb24uaXNFbXB0eSgpIHx8IGV4
cGFuZGVkU2NhbGVkU2l6ZS5pc0VtcHR5KCkpCisgICAgaWYgKG1fZGlydHlSZWdpb24uaXNFbXB0
eSgpIHx8IG1fc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuZWVkVG9FbmNvZGVCYWNr
aW5nU3RvcmU7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IGxheWVyQm91bmRzKFdlYkNvcmU6Oklu
dFBvaW50KCksIFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShtX3NpemUpKTsKQEAgLTIzMywyMCAr
MjI0LDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAg
ICBtX2RpcnR5UmVnaW9uLnVuaXRlKGluZGljYXRvclJlY3QpOwogICAgIH0KIAotICAgIFdlYkNv
cmU6OkludFJlY3QgZXhwYW5kZWRTY2FsZWRMYXllckJvdW5kcyhXZWJDb3JlOjpJbnRQb2ludCgp
LCBleHBhbmRlZFNjYWxlZFNpemUpOwotCiAgICAgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwog
ICAgIGlmICghbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0KICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUg
c2NhbGVkU2l6ZSA9IG1fc2l6ZTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1fc2NhbGUpOwotICAg
IFdlYkNvcmU6OkludFJlY3Qgc2NhbGVkTGF5ZXJCb3VuZHMoV2ViQ29yZTo6SW50UG9pbnQoKSwg
V2ViQ29yZTo6cm91bmRlZEludFNpemUoc2NhbGVkU2l6ZSkpOwotCiAgICAgLy8gSWYgd2UgaGF2
ZSBsZXNzIHRoYW4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQgcmVjdHMgdG8gcGFpbnQgYW5kIHRo
ZXkgY292ZXIgbGVzcwogICAgIC8vIHRoYW4gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCBv
ZiB0aGUgdG90YWwgZGlydHkgYXJlYSwgd2UnbGwgcmVwYWludCBlYWNoIHJlY3Qgc2VwYXJhdGVs
eS4KICAgICAvLyBPdGhlcndpc2UsIHJlcGFpbnQgdGhlIGVudGlyZSBib3VuZGluZyBib3ggb2Yg
dGhlIGRpcnR5IHJlZ2lvbi4KQEAgLTI2OSwzMiArMjUzLDI2IEBAIGJvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAgaWYgKCFtX2RpcnR5UmVnaW9uLmNvbnRhaW5z
KGxheWVyQm91bmRzKSkgewogICAgICAgICBBU1NFUlQobV9iYWNrQnVmZmVyLmltYWdlQnVmZmVy
KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fYmFja0J1ZmZlci5pbWFnZUJ1
ZmZlciwgeyAwLCAwIH0sIHsgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3I6OkNvcHkgfSk7Cisg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIs
IHsgezAsIDB9LCBtX3NpemUgfSwgeyB7MCwgMH0sIG1fc2l6ZSB9LCB7IFdlYkNvcmU6OkNvbXBv
c2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogICAgIH0KIAotICAgIGlmIChtX3BhaW50aW5nUmVjdHMu
c2l6ZSgpID09IDEpIHsKLSAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjYWxlZFBhaW50aW5n
UmVjdCA9IG1fcGFpbnRpbmdSZWN0c1swXTsKLSAgICAgICAgc2NhbGVkUGFpbnRpbmdSZWN0LnNj
YWxlKG1fc2NhbGUpOwotICAgICAgICBjb250ZXh0LmNsaXAoc2NhbGVkUGFpbnRpbmdSZWN0KTsK
LSAgICB9IGVsc2UgeworICAgIGlmIChtX3BhaW50aW5nUmVjdHMuc2l6ZSgpID09IDEpCisgICAg
ICAgIGNvbnRleHQuY2xpcChtX3BhaW50aW5nUmVjdHNbMF0pOworICAgIGVsc2UgewogICAgICAg
ICBXZWJDb3JlOjpQYXRoIGNsaXBQYXRoOwotICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IG1fcGFp
bnRpbmdSZWN0cykgewotICAgICAgICAgICAgcmVjdC5zY2FsZShtX3NjYWxlKTsKKyAgICAgICAg
Zm9yIChhdXRvIHJlY3QgOiBtX3BhaW50aW5nUmVjdHMpCiAgICAgICAgICAgICBjbGlwUGF0aC5h
ZGRSZWN0KHJlY3QpOwotICAgICAgICB9CiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgoY2xpcFBh
dGgpOwogICAgIH0KIAogICAgIGlmICghbV9pc09wYXF1ZSkKLSAgICAgICAgY29udGV4dC5jbGVh
clJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMpOworICAgICAgICBjb250ZXh0LmNsZWFyUmVjdChsYXll
ckJvdW5kcyk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1faXNPcGFxdWUpCi0gICAgICAg
IGNvbnRleHQuZmlsbFJlY3Qoc2NhbGVkTGF5ZXJCb3VuZHMsIFdlYkNvcmU6OlNSR0JBPHVpbnQ4
X3Q+IHsgMjU1LCA0NywgMTQ2IH0pOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGxheWVyQm91
bmRzLCBXZWJDb3JlOjpTUkdCQTx1aW50OF90PiB7IDI1NSwgNDcsIDE0NiB9KTsKICNlbmRpZgog
Ci0gICAgY29udGV4dC5zY2FsZShtX3NjYWxlKTsKLSAgICAKICAgICAvLyBGSVhNRTogQ2xhcmlm
eSB0aGF0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyBpcyBqdXN0IGFi
b3V0IGltYWdlIGRlY29kaW5nLgogICAgIGF1dG8gZmxhZ3MgPSBtX2xheWVyLT5jb250ZXh0KCkg
JiYgbV9sYXllci0+Y29udGV4dCgpLT5uZXh0UmVuZGVyaW5nVXBkYXRlUmVxdWlyZXNTeW5jaHJv
bm91c0ltYWdlRGVjb2RpbmcoKSA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90
dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludE5vcm1hbDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCAxNjJkMDNi
ZDQ4N2U0MGMxMWU5ODliMzk5ZWMyODI4OWY1OTE5YmQ4Li4xYzNjYzczZDE3NmUzYWE4YjhmM2Q2
ZjU1ZTUyZDBiNzJhMWRlMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0
IFBhcmFtCiAgICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQo
V1RGTW92ZShjb250ZXh0KSkKIHsKKyAgICAvLyBTaGFyZWFibGVCaXRtYXAgZW5zdXJlcyB0aGF0
IHRoZSBjb29yZGluYXRlIHNwYWNlIGluIHRoZSBjb250ZXh0IHRoYXQgd2UncmUgYWRvcHRpbmcK
KyAgICAvLyBoYXMgYSB0b3AtbGVmdCBvcmlnaW4sIHNvIHdlIGRvbid0IGV2ZXIgbmVlZCB0byBm
bGlwIGhlcmUsIHNvIHdlIGRvbid0IGNhbGwgc2V0dXBDb250ZXh0KCkuCisgICAgLy8gSG93ZXZl
ciwgU2hhcmVhYmxlQml0bWFwIGRvZXMgbm90IGhhdmUgYSBub3Rpb24gb2Ygc2NhbGUsIHNvIHdl
IG11c3QgYXBwbHkgdGhlIGRldmljZQorICAgIC8vIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4
dCBvdXJzZWx2ZXMuCisgICAgbV9jb250ZXh0LT5hcHBseURldmljZVNjYWxlRmFjdG9yKHJlc29s
dXRpb25TY2FsZSgpKTsKIH0KIAogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkg
Y29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>