<?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>209715</bug_id>
          
          <creation_ts>2020-03-28 20:41:28 -0700</creation_ts>
          <short_desc>scrollIntoView() erroneously scrolls non-containing block scrollers</short_desc>
          <delta_ts>2020-03-30 17:08:33 -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>Scrolling</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635303</commentid>
    <comment_count>0</comment_count>
      <attachid>394857</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-28 20:41:28 -0700</bug_when>
    <thetext>Created attachment 394857
Testcase

RenderLayer::scrollRectToVisible() walks the parent chain and calls scrollIntoView() on each enclosing layer. But this is wrong, because not all parent layers are in the containing block chain.

Attached testcase shows the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635304</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-28 20:43:28 -0700</bug_when>
    <thetext>Needs to share code with scroll latching ancestor finding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635626</commentid>
    <comment_count>2</comment_count>
      <attachid>394941</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 11:46:33 -0700</bug_when>
    <thetext>Created attachment 394941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635698</commentid>
    <comment_count>3</comment_count>
      <attachid>394941</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 13:47:32 -0700</bug_when>
    <thetext>Comment on attachment 394941
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:1922
&gt; +    for (RenderLayer* nextLayer = enclosingContainingBlockLayer(*this, crossFrameBoundaries);nextLayer; nextLayer = enclosingContainingBlockLayer(*nextLayer, crossFrameBoundaries)) {

Missing space after semicolon. Also, why not use auto instead of type name here?

&gt; Source/WebCore/rendering/RenderLayer.cpp:2896
&gt; +                    auto* enclosingLayer = ownerElement-&gt;renderer()-&gt;enclosingLayer();
&gt; +                    if (enclosingLayer)

Why not put this inside the if?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635733</commentid>
    <comment_count>4</comment_count>
      <attachid>394963</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 14:36:25 -0700</bug_when>
    <thetext>Created attachment 394963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635736</commentid>
    <comment_count>5</comment_count>
      <attachid>394964</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 14:38:49 -0700</bug_when>
    <thetext>Created attachment 394964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635746</commentid>
    <comment_count>6</comment_count>
      <attachid>394966</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 14:45:35 -0700</bug_when>
    <thetext>Created attachment 394966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635752</commentid>
    <comment_count>7</comment_count>
      <attachid>394966</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-30 14:50:47 -0700</bug_when>
    <thetext>Comment on attachment 394966
Patch

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

&gt; Source/WebKitLegacy/win/WebView.cpp:2041
&gt; +        if (m_gestureTargetNode &amp;&amp; m_gestureTargetNode-&gt;renderer() &amp;&amp; m_gestureTargetNode-&gt;renderer()-&gt;enclosingLayer()) {
&gt; +            if (auto* layer = m_gestureTargetNode-&gt;renderer()-&gt;enclosingLayer())

Seems like a double null check on enclosingLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635760</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 14:59:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 394966 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=394966&amp;action=review
&gt; 
&gt; &gt; Source/WebKitLegacy/win/WebView.cpp:2041
&gt; &gt; +        if (m_gestureTargetNode &amp;&amp; m_gestureTargetNode-&gt;renderer() &amp;&amp; m_gestureTargetNode-&gt;renderer()-&gt;enclosingLayer()) {
&gt; &gt; +            if (auto* layer = m_gestureTargetNode-&gt;renderer()-&gt;enclosingLayer())
&gt; 
&gt; Seems like a double null check on enclosingLayer.

Oops yeah. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635765</commentid>
    <comment_count>9</comment_count>
      <attachid>394971</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-30 15:04:43 -0700</bug_when>
    <thetext>Created attachment 394971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635861</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-30 17:03:30 -0700</bug_when>
    <thetext>Committed r259248: &lt;https://trac.webkit.org/changeset/259248&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394971.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635863</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 17:08:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/61081100&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>394857</attachid>
            <date>2020-03-28 20:41:28 -0700</date>
            <delta_ts>2020-03-28 20:41:28 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>nested-scroll-into-view-containing-block.html</filename>
            <type>text/html</type>
            <size>1536</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxzdHlsZT4KICAgICAgICAuc2Nyb2xs
ZXIgewogICAgICAgICAgICB3aWR0aDogMzAwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CiAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7
CiAgICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkIGdyYXk7CiAgICAgICAgICAgIG1hcmdpbjog
MTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpOwog
ICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAg
ICAuY29udGVudHMgewogICAgICAgICAgICB3aWR0aDogMjAwJTsKICAgICAgICAgICAgaGVpZ2h0
OiAzMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdy
YWRpZW50KHNpbHZlciwgd2hpdGUgMjUwcHgpOwogICAgICAgIH0KCiAgICAgICAgLm91dGVyLnNj
cm9sbGVyIHsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbm5lci5z
Y3JvbGxlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgbWFy
Z2luLXRvcDogMjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsKICAgICAgICAg
ICAgd2lkdGg6IDQwMHB4CiAgICAgICAgfQogICAgICAgIAogICAgICAgICNyZXZlYWwgewogICAg
ICAgICAgICBtYXJnaW4tdG9wOiA0MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
YXF1YW1hcmluZTsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgYm9yZGVy
LXJhZGl1czogNXB4OwogICAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0PgogICAgICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gewogICAgICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKICAgICAgICAgICAgICAgIGxldCByZXZlYWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmV2ZWFsJyk7CiAgICAgICAgICAgICAgICByZXZlYWwuc2Nyb2xsSW50b1Zp
ZXcoKTsKICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgfSwgZmFsc2UpOwogICAgPC9zY3Jp
cHQ+CjwvaGVhZD4KPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJvdXRlciBzY3JvbGxlciI+CiAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgogICAgICAgICAgICBjb250ZW50cwogICAgICAgICAg
ICA8ZGl2IGNsYXNzPSJpbm5lciBzY3JvbGxlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50cyI+CiAgICAgICAgICAgICAgICAgICAgY29udGVudHMKICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJyZXZlYWwiPgogICAgICAgICAgICAgICAgICAgICAgICBSZXZlYWwgbWUK
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg
ICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394941</attachid>
            <date>2020-03-30 11:46:33 -0700</date>
            <delta_ts>2020-03-30 14:36:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209715-20200330114632.patch</filename>
            <type>text/plain</type>
            <size>15305</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyYWI2ZWQxOGI2ZjNm
YTBjMzZkMTQ4ZGViNzU3ZjE0M2E3YTM3OC4uMmQxMzM5MDdkNzA3NjYyNzE0ZmYxNmMxYmU3OWE0
ZWU3NzA4ZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHNjcm9sbEludG9W
aWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgd291bGQganVzdCB3YWxrIHVwIHRoZSBwYXJlbnQg
UmVuZGVyTGF5ZXIgY2hhaW4KKyAgICAgICAgdHJ5aW5nIHRvIHNjcm9sbCBlYWNoIG9uZS4gSG93
ZXZlciwgdGhpcyB3b3VsZCBoaXQgb3ZlcmZsb3c6c2Nyb2xsIHdoaWNoIHdhc24ndCBpbiB0aGUK
KyAgICAgICAgY29udGFpbmluZyBibG9jayBjaGFpbiwgZXJyb25lb3VzbHkgc2Nyb2xsaW5nIHVu
cmVsYXRlZCBzY3JvbGxlcnMuCisKKyAgICAgICAgRml4IGJ5IGFkZGluZyBSZW5kZXJMYXllcjo6
ZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgYW5kIGNhbGxpbmcKKyAgICAg
ICAgaXQgZnJvbSBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkuIEFsc28g
ZXh0ZW5kIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpCisgICAgICAgIHRvIG1ha2UgZXhwbGlj
aXQgJ2luY2x1ZGUgc2VsZicgYW5kIGZyYW1lLWJvdW5kYXJ5IGNyb3NzaW5nLgorCisgICAgICAg
IEluIGZ1dHVyZSwgc2Nyb2xsQnlSZWN1cnNpdmVseSgpIHNob3VsZCByZWFsbHkgYmUgdmlydHVh
bCBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIGltcGxlbWVudGVkCisgICAgICAgIG9uIGl0cyBzdWJj
bGFzc2VzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGlu
dG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCisKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBsYXRm
b3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0xheWVySW5D
b250YWluaW5nQmxvY2tPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdD
b250YWluaW5nQmxvY2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcmVudExheWVyQ3Jvc3NGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjAtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSBzaG91bGQg
dXNlIFdlYWtQdHI8RWxlbWVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCA1YTg5NTQ4ZDIyY2ZiOTliZDVjNzcxN2JlOWU2ODM0N2VjMjU1NWUwLi5j
MTcxYzYzMDI3ZjM3ODc3OGE5YjljYzFlMDYwZGM4MGVlNWRiN2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxMYXRj
aGluZywgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZl
bnRzKCkgLSBldmVudCIgPDwgd2hlZWxFdmVudCA8PCAiIGZvdW5kIHNjcm9sbGFibGVDb250YWlu
ZXIiIDw8IFZhbHVlT3JOdWxsKHNjcm9sbGFibGVDb250YWluZXIuZ2V0KCkpIDw8ICIgc2Nyb2xs
YWJsZUFyZWEgIiA8PCAoc2Nyb2xsYWJsZUFyZWEgPyBzY3JvbGxhYmxlQXJlYS5nZXQoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsKICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgcGFnZSAmJiBwYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25p
dG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGJi
ZDcwYzg3MTJmZDc2NTJmMTVjYzIyMWFmNDVmMzg4OGEwNWMxNC4uMGEwZmY4MDViNDliMWNhZTdk
YzBjZmY3ZmEyYWRkNDY0ZWMxZmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0xODc2LDYgKzE4NzYsMTYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBvc2l0aW9uVHlwZSBwb3NpdGlvbikgY28K
ICAgICByZXR1cm4gY3VycjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3Np
bmdMYXllckluQ29udGFpbmluZ0Jsb2NrT3JkZXIoKSBjb25zdAoreworICAgIGZvciAoY29uc3Qg
YXV0byogY3VycmVudEJsb2NrID0gcmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKTsgY3VycmVu
dEJsb2NrICYmICFpczxSZW5kZXJWaWV3PigqY3VycmVudEJsb2NrKTsgY3VycmVudEJsb2NrID0g
Y3VycmVudEJsb2NrLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICBpZiAoYXV0byogbGF5
ZXIgPSBjdXJyZW50QmxvY2stPmxheWVyKCkpCisgICAgICAgICAgICByZXR1cm4gbGF5ZXI7Cisg
ICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyBSZW5kZXJMYXllciogZW5j
bG9zaW5nRnJhbWVSZW5kZXJMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCiB7CiAgICAg
YXV0byogb3duZXJFbGVtZW50ID0gbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVudCgpLm93bmVyRWxl
bWVudCgpOwpAQCAtMTg4OSwxOCArMTg5OSwyOCBAQCBzdGF0aWMgUmVuZGVyTGF5ZXIqIGVuY2xv
c2luZ0ZyYW1lUmVuZGVyTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogICAgIHJldHVy
biBvd25lclJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpOwogfQogCi1zdGF0aWMgUmVuZGVyTGF5
ZXIqIHBhcmVudExheWVyQ3Jvc3NGcmFtZShjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCitzdGF0
aWMgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVyKGNvbnN0IFJlbmRl
ckxheWVyJiBsYXllciwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXMgY3Jvc3NGcmFtZUJvdW5kYXJpZXMp
CiB7Ci0gICAgaWYgKGF1dG8qIHBhcmVudCA9IGxheWVyLnBhcmVudCgpKQotICAgICAgICByZXR1
cm4gcGFyZW50OworICAgIGlmIChhdXRvKiBhbmNlc3RvciA9IGxheWVyLmVuY2xvc2luZ0xheWVy
SW5Db250YWluaW5nQmxvY2tPcmRlcigpKQorICAgICAgICByZXR1cm4gYW5jZXN0b3I7CisKKyAg
ICBpZiAoY3Jvc3NGcmFtZUJvdW5kYXJpZXMgPT0gQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6Ok5vKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBlbmNsb3NpbmdGcmFtZVJlbmRl
ckxheWVyKGxheWVyKTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdT
Y3JvbGxhYmxlTGF5ZXIoKSBjb25zdAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3Np
bmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdCBpbmNsdWRlU2VsZiwgQ3Jvc3NGcmFt
ZUJvdW5kYXJpZXMgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpIGNvbnN0CiB7Ci0gICAgZm9yIChSZW5k
ZXJMYXllciogbmV4dExheWVyID0gcGFyZW50TGF5ZXJDcm9zc0ZyYW1lKCp0aGlzKTsgbmV4dExh
eWVyOyBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNyb3NzRnJhbWUoKm5leHRMYXllcikpIHsKLSAg
ICAgICAgaWYgKGlzPFJlbmRlckJveD4obmV4dExheWVyLT5yZW5kZXJlcigpKSAmJiBkb3duY2Fz
dDxSZW5kZXJCb3g+KG5leHRMYXllci0+cmVuZGVyZXIoKSkuY2FuQmVTY3JvbGxlZEFuZEhhc1Nj
cm9sbGFibGVBcmVhKCkpCisgICAgYXV0byBpc0NvbnNpZGVyZWRTY3JvbGxhYmxlID0gW10oY29u
c3QgUmVuZGVyTGF5ZXImIGxheWVyKSB7CisgICAgICAgIHJldHVybiBpczxSZW5kZXJCb3g+KGxh
eWVyLnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckJveD4obGF5ZXIucmVuZGVyZXIoKSku
Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCk7CisgICAgfTsKKworICAgIGlmIChp
bmNsdWRlU2VsZiA9PSBJbmNsdWRlU2VsZk9yTm90OjpJbmNsdWRlU2VsZiAmJiBpc0NvbnNpZGVy
ZWRTY3JvbGxhYmxlKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5
ZXIqPih0aGlzKTsKKyAgICAKKyAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBlbmNs
b3NpbmdDb250YWluaW5nQmxvY2tMYXllcigqdGhpcywgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpO25l
eHRMYXllcjsgbmV4dExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKm5leHRM
YXllciwgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpKSB7CisgICAgICAgIGlmIChpc0NvbnNpZGVyZWRT
Y3JvbGxhYmxlKCpuZXh0TGF5ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG5leHRMYXllcjsKICAg
ICB9CiAKQEAgLTI1NjksNyArMjU4OSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVj
dXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVsdGEsIFNjcm9sbGFibGVBcmVhKiogc2NyCiAgICAg
ICAgIC8vIElmIHRoaXMgbGF5ZXIgY2FuJ3QgZG8gdGhlIHNjcm9sbCB3ZSBhc2sgdGhlIG5leHQg
bGF5ZXIgdXAgdGhhdCBjYW4gc2Nyb2xsIHRvIHRyeQogICAgICAgICBJbnRTaXplIHJlbWFpbmlu
Z1Njcm9sbE9mZnNldCA9IG5ld1Njcm9sbE9mZnNldCAtIHNjcm9sbE9mZnNldCgpOwogICAgICAg
ICBpZiAoIXJlbWFpbmluZ1Njcm9sbE9mZnNldC5pc1plcm8oKSAmJiByZW5kZXJlcigpLnBhcmVu
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IGVu
Y2xvc2luZ1Njcm9sbGFibGVMYXllcigpKQorICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2tp
cHMgc2Nyb2xsYWJsZSBmcmFtZXMuCisgICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIHNjcm9s
bGFibGVMYXllciA9IGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90OjpF
eGNsdWRlU2VsZiwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6OlllcykpCiAgICAgICAgICAgICAgICAg
c2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxCeVJlY3Vyc2l2ZWx5KHJlbWFpbmluZ1Njcm9sbE9mZnNl
dCwgc2Nyb2xsZWRBcmVhKTsKIAogICAgICAgICAgICAgcmVuZGVyZXIoKS5mcmFtZSgpLmV2ZW50
SGFuZGxlcigpLnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwpAQCAtMjgxOSwxNSArMjg0MCw5
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVj
dCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bGluZywgc3RyZWFtIDw8ICJMYXllciAiIDw8IHRoaXMgPDwgIiBzY3JvbGxSZWN0VG9WaXNpYmxl
ICIgPDwgYWJzb2x1dGVSZWN0KTsKIAotICAgIFJlbmRlckxheWVyKiBwYXJlbnRMYXllciA9IG51
bGxwdHI7CiAgICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0gYWJzb2x1dGVSZWN0OwotCi0gICAgLy8g
V2UgbWF5IGVuZCB1cCBwcm9wYWdhdGluZyBhIHNjcm9sbCBldmVudC4gSXQgaXMgaW1wb3J0YW50
IHRoYXQgd2Ugc3VzcGVuZCBldmVudHMgdW50aWwgCi0gICAgLy8gdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24gc2luY2UgdGhleSBjb3VsZCBkZWxldGUgdGhlIGxheWVyIG9yIHRoZSBsYXllcidzIHJl
bmRlcmVyKCkuCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSByZW5kZXJlcigpLnZpZXcoKS5m
cmFtZVZpZXcoKTsKLQotICAgIGlmIChyZW5kZXJlcigpLnBhcmVudCgpKQotICAgICAgICBwYXJl
bnRMYXllciA9IHJlbmRlcmVyKCkucGFyZW50KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgYXV0
byogcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5nQmxvY2tMYXllcigqdGhpcywgQ3Jv
c3NGcmFtZUJvdW5kYXJpZXM6Ok5vKTsKIAogICAgIGlmIChhbGxvd3NDdXJyZW50U2Nyb2xsKCkp
IHsKICAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xsIHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0
aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KQEAg
LTI4NTIsNyArMjg2Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUo
Y29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiAgICAgICAgICAgICBs
b2NhbEV4cG9zZVJlY3QubW92ZSgtc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSk7CiAgICAgICAgICAg
ICBuZXdSZWN0ID0gTGF5b3V0UmVjdChib3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFk
KEZsb2F0UmVjdChsb2NhbEV4cG9zZVJlY3QpKSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3go
KSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllciAmJiByZW5kZXJlcigp
LmlzUmVuZGVyVmlldygpKSB7CisgICAgfSBlbHNlIGlmICghcGFyZW50TGF5ZXIpIHsKICAgICAg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3Vt
ZW50KCkub3duZXJFbGVtZW50KCk7CiAKICAgICAgICAgaWYgKG93bmVyRWxlbWVudCAmJiBvd25l
ckVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKQEAgLTI4NzcsNyArMjg5Miw5IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0
LCBib29sIGluc2lkCiAgICAgICAgICAgICAgICAgZnJhbWVWaWV3LnNldFNjcm9sbFBvc2l0aW9u
KHNjcm9sbFBvc2l0aW9uLCBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCwgYW5pbWF0ZWQpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGlu
ZyA9PSBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNh
ZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGFy
ZW50TGF5ZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8qIGVuY2xvc2luZ0xheWVyID0gb3duZXJFbGVtZW50LT5y
ZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOworICAgICAgICAgICAgICAgICAgICBpZiAoZW5j
bG9zaW5nTGF5ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRMYXllciA9IGVuY2xv
c2luZ0xheWVyLT5lbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdDo6SW5j
bHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpObyk7CiAgICAgICAgICAgICAgICAgICAg
IC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgcGFy
ZW50IGZyYW1lJ3MgZG9jdW1lbnQuCiAgICAgICAgICAgICAgICAgICAgIG5ld1JlY3QgPSBmcmFt
ZVZpZXcuY29udGVudHNUb0NvbnRhaW5pbmdWaWV3Q29udGVudHMoZW5jbG9zaW5nSW50UmVjdChu
ZXdSZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgIGluc2lkZUZpeGVkID0gZmFsc2U7IC8vIEZJ
WE1FOiBpZGVhbGx5IG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRl
IHBvc2l0aW9uOmZpeGVkLgpAQCAtMzU4Miw3ICszNTk5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNTY3JvbGxiYXIpCiAKIFNjcm9sbGFibGVB
cmVhKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdAogewotICAg
IGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxh
eWVyKCkpCisgICAgaWYgKFJlbmRlckxheWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdT
Y3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVC
b3VuZGFyaWVzOjpZZXMpKQogICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyOwogCiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCByZXR1cm4gdGhlIGZyYW1lIHZpZXcgaGVyZSAob3IgcG9zc2li
bHkgYW4gYW5jZXN0b3IgZnJhbWUgdmlldywKQEAgLTM1OTcsNyArMzYxNCw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKQogCiBib29sIFJlbmRlckxh
eWVyOjpoYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkKIHsKLSAgICBmb3Ig
KFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNyb3NzRnJhbWUoKnRoaXMpOyBu
ZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVudExheWVyQ3Jvc3NGcmFtZSgqbmV4dExheWVyKSkg
eworICAgIGZvciAoYXV0byogbmV4dExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5
ZXIoKnRoaXMsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpOyBuZXh0TGF5ZXI7IG5leHRMYXll
ciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVyKCpuZXh0TGF5ZXIsIENyb3NzRnJhbWVC
b3VuZGFyaWVzOjpZZXMpKSB7CiAgICAgICAgIGlmIChuZXh0TGF5ZXItPmlzU2Nyb2xsYWJsZU9y
UnViYmVyYmFuZGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY5
NjYsNiArNjk4MywxNCBAQCBJbnRPdXRzZXRzIFJlbmRlckxheWVyOjpmaWx0ZXJPdXRzZXRzKCkg
Y29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHlsZSgpLmZpbHRlck91dHNldHMoKTsKIH0K
IAorc3RhdGljIFJlbmRlckxheWVyKiBwYXJlbnRMYXllckNyb3NzRnJhbWUoY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyKQoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBsYXllci5wYXJlbnQoKSkK
KyAgICAgICAgcmV0dXJuIHBhcmVudDsKKworICAgIHJldHVybiBlbmNsb3NpbmdGcmFtZVJlbmRl
ckxheWVyKGxheWVyKTsKK30KKwogYm9vbCBSZW5kZXJMYXllcjo6aXNUcmFuc3BhcmVudFJlc3Bl
Y3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWlu
aW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggZTU4M2IzNmRkMmUzOGU2ZjIxNmE0NDE0YzA1NDJhYjE3NjVhMjhkMC4uMDFh
NmZlMDE3NGNiOTkwODQyZTMzOWM5MDBmN2JhOWE2ZTQ3MGE3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRp
b25NYXRyaXg7CiAKIGVudW0gQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZG
b3JCb3JkZXJSYWRpdXMsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMgfTsKIGVudW0g
SW5jbHVkZVNlbGZPck5vdCB7IEluY2x1ZGVTZWxmLCBFeGNsdWRlU2VsZiB9OworZW51bSBDcm9z
c0ZyYW1lQm91bmRhcmllcyB7IE5vLCBZZXMgfTsKIAogZW51bSBSZXBhaW50U3RhdHVzIHsKICAg
ICBOZWVkc05vcm1hbFJlcGFpbnQsCkBAIC00NjAsNiArNDYxLDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7
CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbklmTmVlZGVkKCk7CiAKKyAg
ICAvLyBSZXR1cm5zIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsYXllciB0aGF0IGlzIHNjcm9sbGFi
bGUuCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2Vs
Zk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykgY29uc3Q7CisKICAgICB2b2lkIGF2YWlsYWJs
ZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsK
IAogICAgIGVudW0gQXV0b3Njcm9sbFN0YXR1cyB7IE5vdEluUHJvZ3Jlc3MsIEluUHJvZ3Jlc3Mg
fTsKQEAgLTYzMSw5ICs2MzUsOCBAQCBwdWJsaWM6CiAgICAgLy8gR2V0cyB0aGUgbmVhcmVzdCBl
bmNsb3NpbmcgcG9zaXRpb25lZCBhbmNlc3RvciBsYXllciAoYWxzbyBpbmNsdWRlcwogICAgIC8v
IHRoZSA8aHRtbD4gbGF5ZXIgYW5kIHRoZSByb290IGxheWVyKS4KICAgICBSZW5kZXJMYXllciog
ZW5jbG9zaW5nQW5jZXN0b3JGb3JQb3NpdGlvbihQb3NpdGlvblR5cGUpIGNvbnN0OwotCi0gICAg
Ly8gUmV0dXJucyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbGF5ZXIgdGhhdCBpcyBzY3JvbGxhYmxl
LgotICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdDsKKyAg
ICAKKyAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVy
KCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbGF5ZXIgcmVsYXRpdmUgdG8gd2hpY2ggY2xpcHBpbmcg
cmVjdHMgZm9yIHRoaXMgbGF5ZXIgYXJlIGNvbXB1dGVkLgogICAgIFJlbmRlckxheWVyKiBjbGlw
cGluZ1Jvb3RGb3JQYWludGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZkMGYwYWQ5MGFjOTlkM2QyZDY2
NGJjYzE0YjEwNGMxOWE5YjUzYjguLmY1YWFkNTNhZDg5N2NmZmRmM2U2MGExYjFmNmE2MTUxNjZl
YTM1ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9u
ZW91c2x5IHNjcm9sbHMgbm9uLWNvbnRhaW5pbmcgYmxvY2sgc2Nyb2xsZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3MTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L2Nzcy9jc3Nv
bS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3
LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yNyAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaWRld2F5cyBqaWdn
bGVzIHdoZW4gc2Nyb2xsaW5nIHRoZSBzaGVsdmVzIG9uIGJldGEubXVzaWMuYXBwbGUuY29tCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRv
dmlldy1jb250YWluaW5nYmxvY2stY2hhaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWlu
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGM3ZGNmMWFlYzM2OGViNTYwN2FjMmIwMWM2YzI1
OTIyMGQzM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nz
c29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBzY3JvbGxJbnRvVmlldyBzaG91bGQgbm90IHNjcm9s
bCBhbmNlc3RvciBvdmVyZmxvdzpzY3JvbGwgZWxlbWVudHMgdGhhdCBhcmUgbm90IGNvbnRhaW5p
bmcgYmxvY2sgYW5jZXN0b3JzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9j
c3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRh
aW5pbmdibG9jay1jaGFpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZmIzMDdiMzA0MWU5ODczYzc0MTU4
MTE4MjZkMjdjN2RlZjJkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRt
bApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzx0aXRsZT5zY3JvbGxJbnRvVmlldyBzaG91
bGQgb25seSBhZGp1c3Qgc2Nyb2xsZXJzIGluIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluPC90
aXRsZT4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQor
ICAgIAorICAgIC5jb250ZW50cyB7CisgICAgICAgIHdpZHRoOiAyMDAlOworICAgICAgICBoZWln
aHQ6IDMwMCU7CisgICAgfQorCisgICAgI2lubmVyLnNjcm9sbGVyIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICBtYXJnaW4tdG9wOiAyNTBweDsKKyAgICAgICAgbWFyZ2lu
LWxlZnQ6IDEwMHB4OworICAgICAgICB3aWR0aDogNDAwcHgKKyAgICB9CisgICAgCisgICAgI3Jl
dmVhbCB7CisgICAgICAgIG1hcmdpbi10b3A6IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibHVlOworICAgIH0gICAgCis8L3N0eWxlPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAg
ICA8ZGl2IGlkPSJvdXRlciIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudHMiPgorICAgICAgICAgICAgVGhpcyBzaG91bGQgbm90IHNjcm9sbAorICAgICAgICAg
ICAgPGRpdiBpZD0iaW5uZXIiIGNsYXNzPSJpbm5lciBzY3JvbGxlciI+CisgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgorICAgICAgICAgICAgICAgICAgICBjb250ZW50cwor
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXZlYWwiPgorICAgICAgICAgICAgICAgICAg
ICAgICAgUmV2ZWFsIG1lCisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorPC9kaXY+Cis8
L2Rpdj4KKzxzY3JpcHQ+CithZGRfY29tcGxldGlvbl9jYWxsYmFjaygoKSA9PiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikucmVtb3ZlKCkpOworCit0ZXN0KHQgPT4geworICAg
IHZhciByZXZlYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2ZWFsJyk7CisKKyAgICB2
YXIgb3V0ZXJTY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRlcicpOworICAg
IHZhciBpbm5lclNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJyk7Cisg
ICAgdmFyIGluaXRpYWxPdXRlclRvcCA9IG91dGVyU2Nyb2xsZXIuc2Nyb2xsVG9wOworICAgIHZh
ciBpbml0aWFsSW5uZXJUb3AgPSBpbm5lclNjcm9sbGVyLnNjcm9sbFRvcDsKKworICAgIGFzc2Vy
dF9lcXVhbHMoaW5pdGlhbE91dGVyVG9wLCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluaXRpYWxJ
bm5lclRvcCwgMCk7CisKKyAgICByZXZlYWwuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAic3RhcnQi
LCBpbmxpbmU6ICJzdGFydCJ9KTsKKworICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGlubmVyU2Ny
b2xsZXIuc2Nyb2xsVG9wLCA0MTgsIDEpOworICAgIGFzc2VydF9lcXVhbHMob3V0ZXJTY3JvbGxl
ci5zY3JvbGxUb3AsIDApOworfSwgInNjcm9sbEludG9WaWV3IHNob3VsZCBub3Qgc2Nyb2xsIGFu
Y2VzdG9yIG92ZXJmbG93OnNjcm9sbCBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29udGFpbmluZyBi
bG9jayBhbmNlc3RvcnMiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394963</attachid>
            <date>2020-03-30 14:36:25 -0700</date>
            <delta_ts>2020-03-30 14:38:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209715-20200330143625.patch</filename>
            <type>text/plain</type>
            <size>15272</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyYWI2ZWQxOGI2ZjNm
YTBjMzZkMTQ4ZGViNzU3ZjE0M2E3YTM3OC4uMmQxMzM5MDdkNzA3NjYyNzE0ZmYxNmMxYmU3OWE0
ZWU3NzA4ZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHNjcm9sbEludG9W
aWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgd291bGQganVzdCB3YWxrIHVwIHRoZSBwYXJlbnQg
UmVuZGVyTGF5ZXIgY2hhaW4KKyAgICAgICAgdHJ5aW5nIHRvIHNjcm9sbCBlYWNoIG9uZS4gSG93
ZXZlciwgdGhpcyB3b3VsZCBoaXQgb3ZlcmZsb3c6c2Nyb2xsIHdoaWNoIHdhc24ndCBpbiB0aGUK
KyAgICAgICAgY29udGFpbmluZyBibG9jayBjaGFpbiwgZXJyb25lb3VzbHkgc2Nyb2xsaW5nIHVu
cmVsYXRlZCBzY3JvbGxlcnMuCisKKyAgICAgICAgRml4IGJ5IGFkZGluZyBSZW5kZXJMYXllcjo6
ZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgYW5kIGNhbGxpbmcKKyAgICAg
ICAgaXQgZnJvbSBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkuIEFsc28g
ZXh0ZW5kIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpCisgICAgICAgIHRvIG1ha2UgZXhwbGlj
aXQgJ2luY2x1ZGUgc2VsZicgYW5kIGZyYW1lLWJvdW5kYXJ5IGNyb3NzaW5nLgorCisgICAgICAg
IEluIGZ1dHVyZSwgc2Nyb2xsQnlSZWN1cnNpdmVseSgpIHNob3VsZCByZWFsbHkgYmUgdmlydHVh
bCBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIGltcGxlbWVudGVkCisgICAgICAgIG9uIGl0cyBzdWJj
bGFzc2VzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGlu
dG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCisKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBsYXRm
b3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0xheWVySW5D
b250YWluaW5nQmxvY2tPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdD
b250YWluaW5nQmxvY2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcmVudExheWVyQ3Jvc3NGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjAtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSBzaG91bGQg
dXNlIFdlYWtQdHI8RWxlbWVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCA1YTg5NTQ4ZDIyY2ZiOTliZDVjNzcxN2JlOWU2ODM0N2VjMjU1NWUwLi5j
MTcxYzYzMDI3ZjM3ODc3OGE5YjljYzFlMDYwZGM4MGVlNWRiN2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxMYXRj
aGluZywgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZl
bnRzKCkgLSBldmVudCIgPDwgd2hlZWxFdmVudCA8PCAiIGZvdW5kIHNjcm9sbGFibGVDb250YWlu
ZXIiIDw8IFZhbHVlT3JOdWxsKHNjcm9sbGFibGVDb250YWluZXIuZ2V0KCkpIDw8ICIgc2Nyb2xs
YWJsZUFyZWEgIiA8PCAoc2Nyb2xsYWJsZUFyZWEgPyBzY3JvbGxhYmxlQXJlYS5nZXQoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsKICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgcGFnZSAmJiBwYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25p
dG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGJi
ZDcwYzg3MTJmZDc2NTJmMTVjYzIyMWFmNDVmMzg4OGEwNWMxNC4uMzhmNWU3YmEzOWFhYmEyYjFh
YTNlNTA3Yjk1OTRiMDI0MzkzMjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0xODc2LDYgKzE4NzYsMTYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBvc2l0aW9uVHlwZSBwb3NpdGlvbikgY28K
ICAgICByZXR1cm4gY3VycjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3Np
bmdMYXllckluQ29udGFpbmluZ0Jsb2NrT3JkZXIoKSBjb25zdAoreworICAgIGZvciAoY29uc3Qg
YXV0byogY3VycmVudEJsb2NrID0gcmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKTsgY3VycmVu
dEJsb2NrOyBjdXJyZW50QmxvY2sgPSBjdXJyZW50QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGN1cnJlbnRCbG9jay0+bGF5ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBsYXllcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwog
c3RhdGljIFJlbmRlckxheWVyKiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGNvbnN0IFJlbmRl
ckxheWVyJiBsYXllcikKIHsKICAgICBhdXRvKiBvd25lckVsZW1lbnQgPSBsYXllci5yZW5kZXJl
cigpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CkBAIC0xODg5LDE4ICsxODk5LDI4IEBAIHN0
YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nRnJhbWVSZW5kZXJMYXllcihjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIpCiAgICAgcmV0dXJuIG93bmVyUmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCk7
CiB9CiAKLXN0YXRpYyBSZW5kZXJMYXllciogcGFyZW50TGF5ZXJDcm9zc0ZyYW1lKGNvbnN0IFJl
bmRlckxheWVyJiBsYXllcikKK3N0YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nQ29udGFpbmlu
Z0Jsb2NrTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBDcm9zc0ZyYW1lQm91bmRhcmll
cyBjcm9zc0ZyYW1lQm91bmRhcmllcykKIHsKLSAgICBpZiAoYXV0byogcGFyZW50ID0gbGF5ZXIu
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgaWYgKGF1dG8qIGFuY2VzdG9y
ID0gbGF5ZXIuZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkpCisgICAgICAg
IHJldHVybiBhbmNlc3RvcjsKKworICAgIGlmIChjcm9zc0ZyYW1lQm91bmRhcmllcyA9PSBDcm9z
c0ZyYW1lQm91bmRhcmllczo6Tm8pCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ZyYW1lUmVuZGVyTGF5ZXIobGF5ZXIpOwogfQogCi1SZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpIGNvbnN0CitSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90
IGluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllcyBjcm9zc0ZyYW1lQm91bmRhcmllcykg
Y29uc3QKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNy
b3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVudExheWVyQ3Jvc3NG
cmFtZSgqbmV4dExheWVyKSkgewotICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihuZXh0TGF5ZXIt
PnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckJveD4obmV4dExheWVyLT5yZW5kZXJlcigp
KS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICBhdXRvIGlzQ29uc2lk
ZXJlZFNjcm9sbGFibGUgPSBbXShjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIHsKKyAgICAgICAg
cmV0dXJuIGlzPFJlbmRlckJveD4obGF5ZXIucmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVy
Qm94PihsYXllci5yZW5kZXJlcigpKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KTsKKyAgICB9OworCisgICAgaWYgKGluY2x1ZGVTZWxmID09IEluY2x1ZGVTZWxmT3JOb3Q6Oklu
Y2x1ZGVTZWxmICYmIGlzQ29uc2lkZXJlZFNjcm9sbGFibGUoKnRoaXMpKQorICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KHRoaXMpOworICAgIAorICAgIGZvciAoUmVuZGVy
TGF5ZXIqIG5leHRMYXllciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVyKCp0aGlzLCBj
cm9zc0ZyYW1lQm91bmRhcmllcyk7IG5leHRMYXllcjsgbmV4dExheWVyID0gZW5jbG9zaW5nQ29u
dGFpbmluZ0Jsb2NrTGF5ZXIoKm5leHRMYXllciwgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpKSB7Cisg
ICAgICAgIGlmIChpc0NvbnNpZGVyZWRTY3JvbGxhYmxlKCpuZXh0TGF5ZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIG5leHRMYXllcjsKICAgICB9CiAKQEAgLTI1NjksNyArMjU4OSw4IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVsdGEsIFNj
cm9sbGFibGVBcmVhKiogc2NyCiAgICAgICAgIC8vIElmIHRoaXMgbGF5ZXIgY2FuJ3QgZG8gdGhl
IHNjcm9sbCB3ZSBhc2sgdGhlIG5leHQgbGF5ZXIgdXAgdGhhdCBjYW4gc2Nyb2xsIHRvIHRyeQog
ICAgICAgICBJbnRTaXplIHJlbWFpbmluZ1Njcm9sbE9mZnNldCA9IG5ld1Njcm9sbE9mZnNldCAt
IHNjcm9sbE9mZnNldCgpOwogICAgICAgICBpZiAoIXJlbWFpbmluZ1Njcm9sbE9mZnNldC5pc1pl
cm8oKSAmJiByZW5kZXJlcigpLnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyTGF5
ZXIqIHNjcm9sbGFibGVMYXllciA9IGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpKQorICAgICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgc2tpcHMgc2Nyb2xsYWJsZSBmcmFtZXMuCisgICAgICAgICAg
ICBpZiAoUmVuZGVyTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IGVuY2xvc2luZ1Njcm9sbGFibGVM
YXllcihJbmNsdWRlU2VsZk9yTm90OjpFeGNsdWRlU2VsZiwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6
OlllcykpCiAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxCeVJlY3Vyc2l2
ZWx5KHJlbWFpbmluZ1Njcm9sbE9mZnNldCwgc2Nyb2xsZWRBcmVhKTsKIAogICAgICAgICAgICAg
cmVuZGVyZXIoKS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJl
cigpOwpAQCAtMjgxOSwxNSArMjg0MCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RU
b1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJMYXllciAiIDw8IHRoaXMg
PDwgIiBzY3JvbGxSZWN0VG9WaXNpYmxlICIgPDwgYWJzb2x1dGVSZWN0KTsKIAotICAgIFJlbmRl
ckxheWVyKiBwYXJlbnRMYXllciA9IG51bGxwdHI7CiAgICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0g
YWJzb2x1dGVSZWN0OwotCi0gICAgLy8gV2UgbWF5IGVuZCB1cCBwcm9wYWdhdGluZyBhIHNjcm9s
bCBldmVudC4gSXQgaXMgaW1wb3J0YW50IHRoYXQgd2Ugc3VzcGVuZCBldmVudHMgdW50aWwgCi0g
ICAgLy8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gc2luY2UgdGhleSBjb3VsZCBkZWxldGUgdGhl
IGxheWVyIG9yIHRoZSBsYXllcidzIHJlbmRlcmVyKCkuCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZp
ZXcgPSByZW5kZXJlcigpLnZpZXcoKS5mcmFtZVZpZXcoKTsKLQotICAgIGlmIChyZW5kZXJlcigp
LnBhcmVudCgpKQotICAgICAgICBwYXJlbnRMYXllciA9IHJlbmRlcmVyKCkucGFyZW50KCktPmVu
Y2xvc2luZ0xheWVyKCk7CisgICAgYXV0byogcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250YWlu
aW5nQmxvY2tMYXllcigqdGhpcywgQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6Ok5vKTsKIAogICAgIGlm
IChhbGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKICAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xsIHRvIHJl
dmVhbCBhbiBvdmVyZmxvdyBsYXllciB0aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13ZWJraXQt
bGluZS1jbGFtcCBwcm9wZXJ0eS4KQEAgLTI4NTIsNyArMjg2Nyw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBi
b29sIGluc2lkCiAgICAgICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92ZSgtc2Nyb2xsT2Zmc2V0
RGlmZmVyZW5jZSk7CiAgICAgICAgICAgICBuZXdSZWN0ID0gTGF5b3V0UmVjdChib3gtPmxvY2Fs
VG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChsb2NhbEV4cG9zZVJlY3QpKSwgVXNl
VHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCFw
YXJlbnRMYXllciAmJiByZW5kZXJlcigpLmlzUmVuZGVyVmlldygpKSB7CisgICAgfSBlbHNlIGlm
ICghcGFyZW50TGF5ZXIpIHsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CiAKICAgICAgICAg
aWYgKG93bmVyRWxlbWVudCAmJiBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKQEAgLTI4Nzcs
NyArMjg5Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3Qg
TGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiAgICAgICAgICAgICAgICAgZnJh
bWVWaWV3LnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBTY3JvbGxDbGFtcGluZzo6
Q2xhbXBlZCwgYW5pbWF0ZWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxk
QWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyA9PSBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xs
aW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVy
KCktPmVuY2xvc2luZ0xheWVyKCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGVuY2xvc2lu
Z0xheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoZW5jbG9zaW5nTGF5ZXIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJlbnRMYXllciA9IGVuY2xvc2luZ0xheWVyLT5lbmNsb3NpbmdTY3JvbGxhYmxlTGF5
ZXIoSW5jbHVkZVNlbGZPck5vdDo6SW5jbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpO
byk7CiAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0aGUgY29v
cmRpbmF0ZSBzcGFjZSBvZiB0aGUgcGFyZW50IGZyYW1lJ3MgZG9jdW1lbnQuCiAgICAgICAgICAg
ICAgICAgICAgIG5ld1JlY3QgPSBmcmFtZVZpZXcuY29udGVudHNUb0NvbnRhaW5pbmdWaWV3Q29u
dGVudHMoZW5jbG9zaW5nSW50UmVjdChuZXdSZWN0KSk7CiAgICAgICAgICAgICAgICAgICAgIGlu
c2lkZUZpeGVkID0gZmFsc2U7IC8vIEZJWE1FOiBpZGVhbGx5IG5lZWQgdG8gZGV0ZXJtaW5lIGlm
IHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkLgpAQCAtMzU4Miw3ICszNTk5
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNT
Y3JvbGxiYXIpCiAKIFNjcm9sbGFibGVBcmVhKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoKSBjb25zdAogewotICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJsZUxheWVy
ID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCisgICAgaWYgKFJlbmRlckxheWVyKiBzY3Jv
bGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdDo6
RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKQogICAgICAgICByZXR1cm4g
c2Nyb2xsYWJsZUxheWVyOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXR1cm4gdGhlIGZy
YW1lIHZpZXcgaGVyZSAob3IgcG9zc2libHkgYW4gYW5jZXN0b3IgZnJhbWUgdmlldywKQEAgLTM1
OTcsNyArMzYxNCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZU9yUnViYmVyYmFu
ZGFibGUoKQogCiBib29sIFJlbmRlckxheWVyOjpoYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJs
ZUFuY2VzdG9yKCkKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBwYXJlbnRM
YXllckNyb3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVudExheWVy
Q3Jvc3NGcmFtZSgqbmV4dExheWVyKSkgeworICAgIGZvciAoYXV0byogbmV4dExheWVyID0gZW5j
bG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKnRoaXMsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZ
ZXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVy
KCpuZXh0TGF5ZXIsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKSB7CiAgICAgICAgIGlmIChu
ZXh0TGF5ZXItPmlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTY5NjYsNiArNjk4MywxNCBAQCBJbnRPdXRzZXRzIFJlbmRl
ckxheWVyOjpmaWx0ZXJPdXRzZXRzKCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS5zdHls
ZSgpLmZpbHRlck91dHNldHMoKTsKIH0KIAorc3RhdGljIFJlbmRlckxheWVyKiBwYXJlbnRMYXll
ckNyb3NzRnJhbWUoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQoreworICAgIGlmIChhdXRvKiBw
YXJlbnQgPSBsYXllci5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKworICAgIHJl
dHVybiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGxheWVyKTsKK30KKwogYm9vbCBSZW5kZXJM
YXllcjo6aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAogewogICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZTU4M2IzNmRkMmUzOGU2ZjIxNmE0
NDE0YzA1NDJhYjE3NjVhMjhkMC4uMDFhNmZlMDE3NGNiOTkwODQyZTMzOWM5MDBmN2JhOWE2ZTQ3
MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTg1LDYgKzg1
LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGVudW0gQm9yZGVyUmFkaXVzQ2xp
cHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMsIERvTm90SW5jbHVkZVNlbGZG
b3JCb3JkZXJSYWRpdXMgfTsKIGVudW0gSW5jbHVkZVNlbGZPck5vdCB7IEluY2x1ZGVTZWxmLCBF
eGNsdWRlU2VsZiB9OworZW51bSBDcm9zc0ZyYW1lQm91bmRhcmllcyB7IE5vLCBZZXMgfTsKIAog
ZW51bSBSZXBhaW50U3RhdHVzIHsKICAgICBOZWVkc05vcm1hbFJlcGFpbnQsCkBAIC00NjAsNiAr
NDYxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKE9w
dGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRTY3JvbGxQ
b3NpdGlvbklmTmVlZGVkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBuZWFyZXN0IGVuY2xvc2lu
ZyBsYXllciB0aGF0IGlzIHNjcm9sbGFibGUuCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1Nj
cm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykgY29u
c3Q7CisKICAgICB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFibGVTaXpl
Q2hhbmdlUmVhc29uKSBvdmVycmlkZTsKIAogICAgIGVudW0gQXV0b3Njcm9sbFN0YXR1cyB7IE5v
dEluUHJvZ3Jlc3MsIEluUHJvZ3Jlc3MgfTsKQEAgLTYzMSw5ICs2MzUsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gR2V0cyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgcG9zaXRpb25lZCBhbmNlc3RvciBsYXll
ciAoYWxzbyBpbmNsdWRlcwogICAgIC8vIHRoZSA8aHRtbD4gbGF5ZXIgYW5kIHRoZSByb290IGxh
eWVyKS4KICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nQW5jZXN0b3JGb3JQb3NpdGlvbihQb3Np
dGlvblR5cGUpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0aGUgbmVhcmVzdCBlbmNsb3Npbmcg
bGF5ZXIgdGhhdCBpcyBzY3JvbGxhYmxlLgotICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTY3Jv
bGxhYmxlTGF5ZXIoKSBjb25zdDsKKyAgICAKKyAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5
ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbGF5ZXIgcmVs
YXRpdmUgdG8gd2hpY2ggY2xpcHBpbmcgcmVjdHMgZm9yIHRoaXMgbGF5ZXIgYXJlIGNvbXB1dGVk
LgogICAgIFJlbmRlckxheWVyKiBjbGlwcGluZ1Jvb3RGb3JQYWludGluZygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGZkMGYwYWQ5MGFjOTlkM2QyZDY2NGJjYzE0YjEwNGMxOWE5YjUzYjguLmY1YWFkNTNhZDg5
N2NmZmRmM2U2MGExYjFmNmE2MTUxNjZlYTM1ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAg
ICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91c2x5IHNjcm9sbHMgbm9uLWNvbnRhaW5pbmcgYmxv
Y2sgc2Nyb2xsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDk3MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdi
bG9jay1jaGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Nzcy9j
c3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBTaWRld2F5cyBqaWdnbGVzIHdoZW4gc2Nyb2xsaW5nIHRoZSBzaGVsdmVzIG9u
IGJldGEubXVzaWMuYXBwbGUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9j
c3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3Zp
ZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGM3ZGNm
MWFlYzM2OGViNTYwN2FjMmIwMWM2YzI1OTIyMGQzM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmlu
Z2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBzY3JvbGxJ
bnRvVmlldyBzaG91bGQgbm90IHNjcm9sbCBhbmNlc3RvciBvdmVyZmxvdzpzY3JvbGwgZWxlbWVu
dHMgdGhhdCBhcmUgbm90IGNvbnRhaW5pbmcgYmxvY2sgYW5jZXN0b3JzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250
YWluaW5nYmxvY2stY2hhaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12
aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFjZmQ1ZjY5OWQ3MTdmNDYzNTk4MmQ3NmUyNTdjZDJjNDc3ODE3YTUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1j
b250YWluaW5nYmxvY2stY2hhaW4uaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgSFRN
TD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzx0
aXRsZT5zY3JvbGxJbnRvVmlldyBzaG91bGQgb25seSBhZGp1c3Qgc2Nyb2xsZXJzIGluIHRoZSBj
b250YWluaW5nIGJsb2NrIGNoYWluPC90aXRsZT4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsZXIgewor
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIG92
ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIAorICAgIC5jb250ZW50cyB7CisgICAgICAgIHdp
ZHRoOiAyMDAlOworICAgICAgICBoZWlnaHQ6IDMwMCU7CisgICAgfQorCisgICAgI2lubmVyLnNj
cm9sbGVyIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBtYXJnaW4tdG9w
OiAyNTBweDsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4OworICAgICAgICB3aWR0aDogNDAw
cHgKKyAgICB9CisgICAgCisgICAgI3JldmVhbCB7CisgICAgICAgIG1hcmdpbi10b3A6IDQwMHB4
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIH0gICAgCis8L3N0eWxlPgor
PGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJvdXRlciIgY2xhc3M9InNjcm9sbGVy
Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgorICAgICAgICAgICAgVGhpcyBzaG91
bGQgbm90IHNjcm9sbAorICAgICAgICAgICAgPGRpdiBpZD0iaW5uZXIiIGNsYXNzPSJpbm5lciBz
Y3JvbGxlciI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgorICAgICAg
ICAgICAgICAgICAgICBjb250ZW50cworICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXZl
YWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgUmV2ZWFsIG1lCisgICAgICAgICAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CithZGRfY29tcGxldGlvbl9j
YWxsYmFjaygoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikucmVtb3Zl
KCkpOworCit0ZXN0KHQgPT4geworICAgIHZhciByZXZlYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmV2ZWFsJyk7CisKKyAgICB2YXIgb3V0ZXJTY3JvbGxlciA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdvdXRlcicpOworICAgIHZhciBpbm5lclNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2lubmVyJyk7CisgICAgdmFyIGluaXRpYWxPdXRlclRvcCA9IG91dGVyU2Ny
b2xsZXIuc2Nyb2xsVG9wOworICAgIHZhciBpbml0aWFsSW5uZXJUb3AgPSBpbm5lclNjcm9sbGVy
LnNjcm9sbFRvcDsKKworICAgIGFzc2VydF9lcXVhbHMoaW5pdGlhbE91dGVyVG9wLCAwKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGluaXRpYWxJbm5lclRvcCwgMCk7CisKKyAgICByZXZlYWwuc2Nyb2xs
SW50b1ZpZXcoe2Jsb2NrOiAic3RhcnQiLCBpbmxpbmU6ICJzdGFydCJ9KTsKKworICAgIGFzc2Vy
dF9hcHByb3hfZXF1YWxzKGlubmVyU2Nyb2xsZXIuc2Nyb2xsVG9wLCA0MTgsIDQpOworICAgIGFz
c2VydF9lcXVhbHMob3V0ZXJTY3JvbGxlci5zY3JvbGxUb3AsIDApOworfSwgInNjcm9sbEludG9W
aWV3IHNob3VsZCBub3Qgc2Nyb2xsIGFuY2VzdG9yIG92ZXJmbG93OnNjcm9sbCBlbGVtZW50cyB0
aGF0IGFyZSBub3QgY29udGFpbmluZyBibG9jayBhbmNlc3RvcnMiKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394964</attachid>
            <date>2020-03-30 14:38:49 -0700</date>
            <delta_ts>2020-03-30 14:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209715-20200330143848.patch</filename>
            <type>text/plain</type>
            <size>15221</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyYWI2ZWQxOGI2ZjNm
YTBjMzZkMTQ4ZGViNzU3ZjE0M2E3YTM3OC4uMmQxMzM5MDdkNzA3NjYyNzE0ZmYxNmMxYmU3OWE0
ZWU3NzA4ZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHNjcm9sbEludG9W
aWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgd291bGQganVzdCB3YWxrIHVwIHRoZSBwYXJlbnQg
UmVuZGVyTGF5ZXIgY2hhaW4KKyAgICAgICAgdHJ5aW5nIHRvIHNjcm9sbCBlYWNoIG9uZS4gSG93
ZXZlciwgdGhpcyB3b3VsZCBoaXQgb3ZlcmZsb3c6c2Nyb2xsIHdoaWNoIHdhc24ndCBpbiB0aGUK
KyAgICAgICAgY29udGFpbmluZyBibG9jayBjaGFpbiwgZXJyb25lb3VzbHkgc2Nyb2xsaW5nIHVu
cmVsYXRlZCBzY3JvbGxlcnMuCisKKyAgICAgICAgRml4IGJ5IGFkZGluZyBSZW5kZXJMYXllcjo6
ZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgYW5kIGNhbGxpbmcKKyAgICAg
ICAgaXQgZnJvbSBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkuIEFsc28g
ZXh0ZW5kIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpCisgICAgICAgIHRvIG1ha2UgZXhwbGlj
aXQgJ2luY2x1ZGUgc2VsZicgYW5kIGZyYW1lLWJvdW5kYXJ5IGNyb3NzaW5nLgorCisgICAgICAg
IEluIGZ1dHVyZSwgc2Nyb2xsQnlSZWN1cnNpdmVseSgpIHNob3VsZCByZWFsbHkgYmUgdmlydHVh
bCBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIGltcGxlbWVudGVkCisgICAgICAgIG9uIGl0cyBzdWJj
bGFzc2VzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGlu
dG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCisKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBsYXRm
b3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0xheWVySW5D
b250YWluaW5nQmxvY2tPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdD
b250YWluaW5nQmxvY2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcmVudExheWVyQ3Jvc3NGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjAtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSBzaG91bGQg
dXNlIFdlYWtQdHI8RWxlbWVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCA1YTg5NTQ4ZDIyY2ZiOTliZDVjNzcxN2JlOWU2ODM0N2VjMjU1NWUwLi5j
MTcxYzYzMDI3ZjM3ODc3OGE5YjljYzFlMDYwZGM4MGVlNWRiN2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxMYXRj
aGluZywgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZl
bnRzKCkgLSBldmVudCIgPDwgd2hlZWxFdmVudCA8PCAiIGZvdW5kIHNjcm9sbGFibGVDb250YWlu
ZXIiIDw8IFZhbHVlT3JOdWxsKHNjcm9sbGFibGVDb250YWluZXIuZ2V0KCkpIDw8ICIgc2Nyb2xs
YWJsZUFyZWEgIiA8PCAoc2Nyb2xsYWJsZUFyZWEgPyBzY3JvbGxhYmxlQXJlYS5nZXQoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsKICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgcGFnZSAmJiBwYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25p
dG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGJi
ZDcwYzg3MTJmZDc2NTJmMTVjYzIyMWFmNDVmMzg4OGEwNWMxNC4uYWEwN2Y2YTQ5MGJjY2FiMDU3
YmYxMDY5ODkzYjNkZjMxNWEzZGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0xODc2LDYgKzE4NzYsMTYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBvc2l0aW9uVHlwZSBwb3NpdGlvbikgY28K
ICAgICByZXR1cm4gY3VycjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3Np
bmdMYXllckluQ29udGFpbmluZ0Jsb2NrT3JkZXIoKSBjb25zdAoreworICAgIGZvciAoY29uc3Qg
YXV0byogY3VycmVudEJsb2NrID0gcmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKTsgY3VycmVu
dEJsb2NrOyBjdXJyZW50QmxvY2sgPSBjdXJyZW50QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGN1cnJlbnRCbG9jay0+bGF5ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBsYXllcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwog
c3RhdGljIFJlbmRlckxheWVyKiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGNvbnN0IFJlbmRl
ckxheWVyJiBsYXllcikKIHsKICAgICBhdXRvKiBvd25lckVsZW1lbnQgPSBsYXllci5yZW5kZXJl
cigpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CkBAIC0xODg5LDE4ICsxODk5LDI4IEBAIHN0
YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nRnJhbWVSZW5kZXJMYXllcihjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIpCiAgICAgcmV0dXJuIG93bmVyUmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCk7
CiB9CiAKLXN0YXRpYyBSZW5kZXJMYXllciogcGFyZW50TGF5ZXJDcm9zc0ZyYW1lKGNvbnN0IFJl
bmRlckxheWVyJiBsYXllcikKK3N0YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nQ29udGFpbmlu
Z0Jsb2NrTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBDcm9zc0ZyYW1lQm91bmRhcmll
cyBjcm9zc0ZyYW1lQm91bmRhcmllcykKIHsKLSAgICBpZiAoYXV0byogcGFyZW50ID0gbGF5ZXIu
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgaWYgKGF1dG8qIGFuY2VzdG9y
ID0gbGF5ZXIuZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkpCisgICAgICAg
IHJldHVybiBhbmNlc3RvcjsKKworICAgIGlmIChjcm9zc0ZyYW1lQm91bmRhcmllcyA9PSBDcm9z
c0ZyYW1lQm91bmRhcmllczo6Tm8pCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ZyYW1lUmVuZGVyTGF5ZXIobGF5ZXIpOwogfQogCi1SZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpIGNvbnN0CitSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90
IGluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllcyBjcm9zc0ZyYW1lQm91bmRhcmllcykg
Y29uc3QKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNy
b3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVudExheWVyQ3Jvc3NG
cmFtZSgqbmV4dExheWVyKSkgewotICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihuZXh0TGF5ZXIt
PnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckJveD4obmV4dExheWVyLT5yZW5kZXJlcigp
KS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICBhdXRvIGlzQ29uc2lk
ZXJlZFNjcm9sbGFibGUgPSBbXShjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIHsKKyAgICAgICAg
cmV0dXJuIGlzPFJlbmRlckJveD4obGF5ZXIucmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVy
Qm94PihsYXllci5yZW5kZXJlcigpKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KTsKKyAgICB9OworCisgICAgaWYgKGluY2x1ZGVTZWxmID09IEluY2x1ZGVTZWxmT3JOb3Q6Oklu
Y2x1ZGVTZWxmICYmIGlzQ29uc2lkZXJlZFNjcm9sbGFibGUoKnRoaXMpKQorICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KHRoaXMpOworICAgIAorICAgIGZvciAoYXV0byog
bmV4dExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKnRoaXMsIGNyb3NzRnJh
bWVCb3VuZGFyaWVzKTsgbmV4dExheWVyOyBuZXh0TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5n
QmxvY2tMYXllcigqbmV4dExheWVyLCBjcm9zc0ZyYW1lQm91bmRhcmllcykpIHsKKyAgICAgICAg
aWYgKGlzQ29uc2lkZXJlZFNjcm9sbGFibGUoKm5leHRMYXllcikpCiAgICAgICAgICAgICByZXR1
cm4gbmV4dExheWVyOwogICAgIH0KIApAQCAtMjU2OSw3ICsyNTg5LDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsYWJs
ZUFyZWEqKiBzY3IKICAgICAgICAgLy8gSWYgdGhpcyBsYXllciBjYW4ndCBkbyB0aGUgc2Nyb2xs
IHdlIGFzayB0aGUgbmV4dCBsYXllciB1cCB0aGF0IGNhbiBzY3JvbGwgdG8gdHJ5CiAgICAgICAg
IEludFNpemUgcmVtYWluaW5nU2Nyb2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0IC0gc2Nyb2xs
T2Zmc2V0KCk7CiAgICAgICAgIGlmICghcmVtYWluaW5nU2Nyb2xsT2Zmc2V0LmlzWmVybygpICYm
IHJlbmRlcmVyKCkucGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogc2Ny
b2xsYWJsZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCisgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBza2lwcyBzY3JvbGxhYmxlIGZyYW1lcy4KKyAgICAgICAgICAgIGlmIChh
dXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNl
bGZPck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKQogICAgICAg
ICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsQnlSZWN1cnNpdmVseShyZW1haW5pbmdT
Y3JvbGxPZmZzZXQsIHNjcm9sbGVkQXJlYSk7CiAKICAgICAgICAgICAgIHJlbmRlcmVyKCkuZnJh
bWUoKS5ldmVudEhhbmRsZXIoKS51cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKQEAgLTI4MTks
MTUgKzI4NDAsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0
IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZAogewogICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiTGF5ZXIgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsUmVj
dFRvVmlzaWJsZSAiIDw8IGFic29sdXRlUmVjdCk7CiAKLSAgICBSZW5kZXJMYXllciogcGFyZW50
TGF5ZXIgPSBudWxscHRyOwogICAgIExheW91dFJlY3QgbmV3UmVjdCA9IGFic29sdXRlUmVjdDsK
LQotICAgIC8vIFdlIG1heSBlbmQgdXAgcHJvcGFnYXRpbmcgYSBzY3JvbGwgZXZlbnQuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIHN1c3BlbmQgZXZlbnRzIHVudGlsIAotICAgIC8vIHRoZSBlbmQg
b2YgdGhlIGZ1bmN0aW9uIHNpbmNlIHRoZXkgY291bGQgZGVsZXRlIHRoZSBsYXllciBvciB0aGUg
bGF5ZXIncyByZW5kZXJlcigpLgogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0KLSAgICBpZiAocmVuZGVyZXIoKS5wYXJlbnQoKSkKLSAg
ICAgICAgcGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLnBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigp
OworICAgIGF1dG8qIHBhcmVudExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIo
KnRoaXMsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpObyk7CiAKICAgICBpZiAoYWxsb3dzQ3VycmVu
dFNjcm9sbCgpKSB7CiAgICAgICAgIC8vIERvbid0IHNjcm9sbCB0byByZXZlYWwgYW4gb3ZlcmZs
b3cgbGF5ZXIgdGhhdCBpcyByZXN0cmljdGVkIGJ5IHRoZSAtd2Via2l0LWxpbmUtY2xhbXAgcHJv
cGVydHkuCkBAIC0yODUyLDcgKzI4NjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0
VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZAogICAg
ICAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmUoLXNjcm9sbE9mZnNldERpZmZlcmVuY2UpOwog
ICAgICAgICAgICAgbmV3UmVjdCA9IExheW91dFJlY3QoYm94LT5sb2NhbFRvQWJzb2x1dGVRdWFk
KEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0KSksIFVzZVRyYW5zZm9ybXMpLmJv
dW5kaW5nQm94KCkpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghcGFyZW50TGF5ZXIgJiYg
cmVuZGVyZXIoKS5pc1JlbmRlclZpZXcoKSkgeworICAgIH0gZWxzZSBpZiAoIXBhcmVudExheWVy
KSB7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogCiAgICAgICAgIGlmIChvd25lckVsZW1l
bnQgJiYgb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKSB7CkBAIC0yODc3LDcgKzI4OTIsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFi
c29sdXRlUmVjdCwgYm9vbCBpbnNpZAogICAgICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRTY3Jv
bGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQsIGFuaW1h
dGVkKTsKIAogICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmcgPT0gU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIHx8IGZy
YW1lVmlldy5zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcmVudExheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdM
YXllcigpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZW5jbG9zaW5nTGF5ZXIgPSBv
d25lckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRMYXllciA9IGVuY2xvc2luZ0xheWVyLT5lbmNsb3NpbmdTY3JvbGxh
YmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdDo6SW5jbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFy
aWVzOjpObyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0
aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgcGFyZW50IGZyYW1lJ3MgZG9jdW1lbnQuCiAgICAg
ICAgICAgICAgICAgICAgIG5ld1JlY3QgPSBmcmFtZVZpZXcuY29udGVudHNUb0NvbnRhaW5pbmdW
aWV3Q29udGVudHMoZW5jbG9zaW5nSW50UmVjdChuZXdSZWN0KSk7CiAgICAgICAgICAgICAgICAg
ICAgIGluc2lkZUZpeGVkID0gZmFsc2U7IC8vIEZJWE1FOiBpZGVhbGx5IG5lZWQgdG8gZGV0ZXJt
aW5lIGlmIHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkLgpAQCAtMzU4Miw3
ICszNTk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9v
bCBoYXNTY3JvbGxiYXIpCiAKIFNjcm9sbGFibGVBcmVhKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
U2Nyb2xsYWJsZUFyZWEoKSBjb25zdAogewotICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJs
ZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCisgICAgaWYgKFJlbmRlckxheWVy
KiBzY3JvbGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZP
ck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKQogICAgICAgICBy
ZXR1cm4gc2Nyb2xsYWJsZUxheWVyOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXR1cm4g
dGhlIGZyYW1lIHZpZXcgaGVyZSAob3IgcG9zc2libHkgYW4gYW5jZXN0b3IgZnJhbWUgdmlldywK
QEAgLTM1OTcsNyArMzYxMyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZU9yUnVi
YmVyYmFuZGFibGUoKQogCiBib29sIFJlbmRlckxheWVyOjpoYXNTY3JvbGxhYmxlT3JSdWJiZXJi
YW5kYWJsZUFuY2VzdG9yKCkKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBw
YXJlbnRMYXllckNyb3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVu
dExheWVyQ3Jvc3NGcmFtZSgqbmV4dExheWVyKSkgeworICAgIGZvciAoYXV0byogbmV4dExheWVy
ID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKnRoaXMsIENyb3NzRnJhbWVCb3VuZGFy
aWVzOjpZZXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9j
a0xheWVyKCpuZXh0TGF5ZXIsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKSB7CiAgICAgICAg
IGlmIChuZXh0TGF5ZXItPmlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY5NjYsNiArNjk4MiwxNCBAQCBJbnRPdXRzZXRz
IFJlbmRlckxheWVyOjpmaWx0ZXJPdXRzZXRzKCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIo
KS5zdHlsZSgpLmZpbHRlck91dHNldHMoKTsKIH0KIAorc3RhdGljIFJlbmRlckxheWVyKiBwYXJl
bnRMYXllckNyb3NzRnJhbWUoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQoreworICAgIGlmIChh
dXRvKiBwYXJlbnQgPSBsYXllci5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKwor
ICAgIHJldHVybiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGxheWVyKTsKK30KKwogYm9vbCBS
ZW5kZXJMYXllcjo6aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAog
ewogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZTU4M2IzNmRkMmUzOGU2
ZjIxNmE0NDE0YzA1NDJhYjE3NjVhMjhkMC4uMDFhNmZlMDE3NGNiOTkwODQyZTMzOWM5MDBmN2Jh
OWE2ZTQ3MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTg1
LDYgKzg1LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGVudW0gQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMsIERvTm90SW5jbHVk
ZVNlbGZGb3JCb3JkZXJSYWRpdXMgfTsKIGVudW0gSW5jbHVkZVNlbGZPck5vdCB7IEluY2x1ZGVT
ZWxmLCBFeGNsdWRlU2VsZiB9OworZW51bSBDcm9zc0ZyYW1lQm91bmRhcmllcyB7IE5vLCBZZXMg
fTsKIAogZW51bSBSZXBhaW50U3RhdHVzIHsKICAgICBOZWVkc05vcm1hbFJlcGFpbnQsCkBAIC00
NjAsNiArNDYxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zdExheW91dFNjcm9sbFBvc2l0
aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRT
Y3JvbGxQb3NpdGlvbklmTmVlZGVkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBuZWFyZXN0IGVu
Y2xvc2luZyBsYXllciB0aGF0IGlzIHNjcm9sbGFibGUuCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xv
c2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmll
cykgY29uc3Q7CisKICAgICB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFi
bGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsKIAogICAgIGVudW0gQXV0b3Njcm9sbFN0YXR1
cyB7IE5vdEluUHJvZ3Jlc3MsIEluUHJvZ3Jlc3MgfTsKQEAgLTYzMSw5ICs2MzUsOCBAQCBwdWJs
aWM6CiAgICAgLy8gR2V0cyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgcG9zaXRpb25lZCBhbmNlc3Rv
ciBsYXllciAoYWxzbyBpbmNsdWRlcwogICAgIC8vIHRoZSA8aHRtbD4gbGF5ZXIgYW5kIHRoZSBy
b290IGxheWVyKS4KICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nQW5jZXN0b3JGb3JQb3NpdGlv
bihQb3NpdGlvblR5cGUpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0aGUgbmVhcmVzdCBlbmNs
b3NpbmcgbGF5ZXIgdGhhdCBpcyBzY3JvbGxhYmxlLgotICAgIFJlbmRlckxheWVyKiBlbmNsb3Np
bmdTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdDsKKyAgICAKKyAgICBSZW5kZXJMYXllciogZW5jbG9z
aW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbGF5
ZXIgcmVsYXRpdmUgdG8gd2hpY2ggY2xpcHBpbmcgcmVjdHMgZm9yIHRoaXMgbGF5ZXIgYXJlIGNv
bXB1dGVkLgogICAgIFJlbmRlckxheWVyKiBjbGlwcGluZ1Jvb3RGb3JQYWludGluZygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGZkMGYwYWQ5MGFjOTlkM2QyZDY2NGJjYzE0YjEwNGMxOWE5YjUzYjguLmY1YWFk
NTNhZDg5N2NmZmRmM2U2MGExYjFmNmE2MTUxNjZlYTM1ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91c2x5IHNjcm9sbHMgbm9uLWNvbnRhaW5p
bmcgYmxvY2sgc2Nyb2xsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDk3MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRh
aW5pbmdibG9jay1jaGFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0
L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1s
OiBBZGRlZC4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaWRld2F5cyBqaWdnbGVzIHdoZW4gc2Nyb2xsaW5nIHRoZSBzaGVs
dmVzIG9uIGJldGEubXVzaWMuYXBwbGUuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xs
aW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OGM3ZGNmMWFlYzM2OGViNTYwN2FjMmIwMWM2YzI1OTIyMGQzM2Y4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29u
dGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBz
Y3JvbGxJbnRvVmlldyBzaG91bGQgbm90IHNjcm9sbCBhbmNlc3RvciBvdmVyZmxvdzpzY3JvbGwg
ZWxlbWVudHMgdGhhdCBhcmUgbm90IGNvbnRhaW5pbmcgYmxvY2sgYW5jZXN0b3JzIAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmll
dy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9j
c3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFjZmQ1ZjY5OWQ3MTdmNDYzNTk4MmQ3NmUyNTdjZDJjNDc3ODE3YTUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRv
dmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbApAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzx0aXRsZT5zY3JvbGxJbnRvVmlldyBzaG91bGQgb25seSBhZGp1c3Qgc2Nyb2xsZXJzIGlu
IHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluPC90aXRsZT4KKzxzdHlsZT4KKyAgICAuc2Nyb2xs
ZXIgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAgIAorICAgIC5jb250ZW50cyB7CisgICAg
ICAgIHdpZHRoOiAyMDAlOworICAgICAgICBoZWlnaHQ6IDMwMCU7CisgICAgfQorCisgICAgI2lu
bmVyLnNjcm9sbGVyIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBtYXJn
aW4tdG9wOiAyNTBweDsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDEwMHB4OworICAgICAgICB3aWR0
aDogNDAwcHgKKyAgICB9CisgICAgCisgICAgI3JldmVhbCB7CisgICAgICAgIG1hcmdpbi10b3A6
IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgIH0gICAgCis8L3N0
eWxlPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGlkPSJvdXRlciIgY2xhc3M9InNj
cm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgorICAgICAgICAgICAgVGhp
cyBzaG91bGQgbm90IHNjcm9sbAorICAgICAgICAgICAgPGRpdiBpZD0iaW5uZXIiIGNsYXNzPSJp
bm5lciBzY3JvbGxlciI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudHMiPgor
ICAgICAgICAgICAgICAgICAgICBjb250ZW50cworICAgICAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJyZXZlYWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgUmV2ZWFsIG1lCisgICAgICAgICAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgIDwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CithZGRfY29tcGxl
dGlvbl9jYWxsYmFjaygoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIiku
cmVtb3ZlKCkpOworCit0ZXN0KHQgPT4geworICAgIHZhciByZXZlYWwgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmV2ZWFsJyk7CisKKyAgICB2YXIgb3V0ZXJTY3JvbGxlciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdvdXRlcicpOworICAgIHZhciBpbm5lclNjcm9sbGVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJyk7CisgICAgdmFyIGluaXRpYWxPdXRlclRvcCA9IG91
dGVyU2Nyb2xsZXIuc2Nyb2xsVG9wOworICAgIHZhciBpbml0aWFsSW5uZXJUb3AgPSBpbm5lclNj
cm9sbGVyLnNjcm9sbFRvcDsKKworICAgIGFzc2VydF9lcXVhbHMoaW5pdGlhbE91dGVyVG9wLCAw
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluaXRpYWxJbm5lclRvcCwgMCk7CisKKyAgICByZXZlYWwu
c2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAic3RhcnQiLCBpbmxpbmU6ICJzdGFydCJ9KTsKKworICAg
IGFzc2VydF9hcHByb3hfZXF1YWxzKGlubmVyU2Nyb2xsZXIuc2Nyb2xsVG9wLCA0MTgsIDQpOwor
ICAgIGFzc2VydF9lcXVhbHMob3V0ZXJTY3JvbGxlci5zY3JvbGxUb3AsIDApOworfSwgInNjcm9s
bEludG9WaWV3IHNob3VsZCBub3Qgc2Nyb2xsIGFuY2VzdG9yIG92ZXJmbG93OnNjcm9sbCBlbGVt
ZW50cyB0aGF0IGFyZSBub3QgY29udGFpbmluZyBibG9jayBhbmNlc3RvcnMiKTsKKzwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394966</attachid>
            <date>2020-03-30 14:45:35 -0700</date>
            <delta_ts>2020-03-30 15:00:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209715-20200330144534.patch</filename>
            <type>text/plain</type>
            <size>16385</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyYWI2ZWQxOGI2ZjNm
YTBjMzZkMTQ4ZGViNzU3ZjE0M2E3YTM3OC4uMmQxMzM5MDdkNzA3NjYyNzE0ZmYxNmMxYmU3OWE0
ZWU3NzA4ZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHNjcm9sbEludG9W
aWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KCkgd291bGQganVzdCB3YWxrIHVwIHRoZSBwYXJlbnQg
UmVuZGVyTGF5ZXIgY2hhaW4KKyAgICAgICAgdHJ5aW5nIHRvIHNjcm9sbCBlYWNoIG9uZS4gSG93
ZXZlciwgdGhpcyB3b3VsZCBoaXQgb3ZlcmZsb3c6c2Nyb2xsIHdoaWNoIHdhc24ndCBpbiB0aGUK
KyAgICAgICAgY29udGFpbmluZyBibG9jayBjaGFpbiwgZXJyb25lb3VzbHkgc2Nyb2xsaW5nIHVu
cmVsYXRlZCBzY3JvbGxlcnMuCisKKyAgICAgICAgRml4IGJ5IGFkZGluZyBSZW5kZXJMYXllcjo6
ZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgYW5kIGNhbGxpbmcKKyAgICAg
ICAgaXQgZnJvbSBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkuIEFsc28g
ZXh0ZW5kIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpCisgICAgICAgIHRvIG1ha2UgZXhwbGlj
aXQgJ2luY2x1ZGUgc2VsZicgYW5kIGZyYW1lLWJvdW5kYXJ5IGNyb3NzaW5nLgorCisgICAgICAg
IEluIGZ1dHVyZSwgc2Nyb2xsQnlSZWN1cnNpdmVseSgpIHNob3VsZCByZWFsbHkgYmUgdmlydHVh
bCBvbiBTY3JvbGxhYmxlQXJlYSwgYW5kIGltcGxlbWVudGVkCisgICAgICAgIG9uIGl0cyBzdWJj
bGFzc2VzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGlu
dG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCisKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBsYXRm
b3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ0xheWVySW5D
b250YWluaW5nQmxvY2tPcmRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdD
b250YWluaW5nQmxvY2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpl
bmNsb3NpbmdTY3JvbGxhYmxlQXJlYSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6aGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcmVudExheWVyQ3Jvc3NGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMjAtMDMtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsTGF0Y2hpbmdTdGF0ZSBzaG91bGQg
dXNlIFdlYWtQdHI8RWxlbWVudD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCA1YTg5NTQ4ZDIyY2ZiOTliZDVjNzcxN2JlOWU2ODM0N2VjMjU1NWUwLi5j
MTcxYzYzMDI3ZjM3ODc3OGE5YjljYzFlMDYwZGM4MGVlNWRiN2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC05NzAsNyArOTcwLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZlbnRzKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxMYXRj
aGluZywgc3RyZWFtIDw8ICJFdmVudEhhbmRsZXI6OnBsYXRmb3JtUHJlcGFyZUZvcldoZWVsRXZl
bnRzKCkgLSBldmVudCIgPDwgd2hlZWxFdmVudCA8PCAiIGZvdW5kIHNjcm9sbGFibGVDb250YWlu
ZXIiIDw8IFZhbHVlT3JOdWxsKHNjcm9sbGFibGVDb250YWluZXIuZ2V0KCkpIDw8ICIgc2Nyb2xs
YWJsZUFyZWEgIiA8PCAoc2Nyb2xsYWJsZUFyZWEgPyBzY3JvbGxhYmxlQXJlYS5nZXQoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsKICAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgJiYgcGFnZSAmJiBwYWdlLT5pc01v
bml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25p
dG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNGJi
ZDcwYzg3MTJmZDc2NTJmMTVjYzIyMWFmNDVmMzg4OGEwNWMxNC4uYWEwN2Y2YTQ5MGJjY2FiMDU3
YmYxMDY5ODkzYjNkZjMxNWEzZGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0xODc2LDYgKzE4NzYsMTYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdBbmNlc3RvckZvclBvc2l0aW9uKFBvc2l0aW9uVHlwZSBwb3NpdGlvbikgY28K
ICAgICByZXR1cm4gY3VycjsKIH0KIAorUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3Np
bmdMYXllckluQ29udGFpbmluZ0Jsb2NrT3JkZXIoKSBjb25zdAoreworICAgIGZvciAoY29uc3Qg
YXV0byogY3VycmVudEJsb2NrID0gcmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKTsgY3VycmVu
dEJsb2NrOyBjdXJyZW50QmxvY2sgPSBjdXJyZW50QmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBsYXllciA9IGN1cnJlbnRCbG9jay0+bGF5ZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybiBsYXllcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwog
c3RhdGljIFJlbmRlckxheWVyKiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGNvbnN0IFJlbmRl
ckxheWVyJiBsYXllcikKIHsKICAgICBhdXRvKiBvd25lckVsZW1lbnQgPSBsYXllci5yZW5kZXJl
cigpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7CkBAIC0xODg5LDE4ICsxODk5LDI4IEBAIHN0
YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nRnJhbWVSZW5kZXJMYXllcihjb25zdCBSZW5kZXJM
YXllciYgbGF5ZXIpCiAgICAgcmV0dXJuIG93bmVyUmVuZGVyZXItPmVuY2xvc2luZ0xheWVyKCk7
CiB9CiAKLXN0YXRpYyBSZW5kZXJMYXllciogcGFyZW50TGF5ZXJDcm9zc0ZyYW1lKGNvbnN0IFJl
bmRlckxheWVyJiBsYXllcikKK3N0YXRpYyBSZW5kZXJMYXllciogZW5jbG9zaW5nQ29udGFpbmlu
Z0Jsb2NrTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBDcm9zc0ZyYW1lQm91bmRhcmll
cyBjcm9zc0ZyYW1lQm91bmRhcmllcykKIHsKLSAgICBpZiAoYXV0byogcGFyZW50ID0gbGF5ZXIu
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBwYXJlbnQ7CisgICAgaWYgKGF1dG8qIGFuY2VzdG9y
ID0gbGF5ZXIuZW5jbG9zaW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkpCisgICAgICAg
IHJldHVybiBhbmNlc3RvcjsKKworICAgIGlmIChjcm9zc0ZyYW1lQm91bmRhcmllcyA9PSBDcm9z
c0ZyYW1lQm91bmRhcmllczo6Tm8pCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ZyYW1lUmVuZGVyTGF5ZXIobGF5ZXIpOwogfQogCi1SZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpIGNvbnN0CitSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90
IGluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllcyBjcm9zc0ZyYW1lQm91bmRhcmllcykg
Y29uc3QKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNy
b3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVudExheWVyQ3Jvc3NG
cmFtZSgqbmV4dExheWVyKSkgewotICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihuZXh0TGF5ZXIt
PnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckJveD4obmV4dExheWVyLT5yZW5kZXJlcigp
KS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICBhdXRvIGlzQ29uc2lk
ZXJlZFNjcm9sbGFibGUgPSBbXShjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIHsKKyAgICAgICAg
cmV0dXJuIGlzPFJlbmRlckJveD4obGF5ZXIucmVuZGVyZXIoKSkgJiYgZG93bmNhc3Q8UmVuZGVy
Qm94PihsYXllci5yZW5kZXJlcigpKS5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEo
KTsKKyAgICB9OworCisgICAgaWYgKGluY2x1ZGVTZWxmID09IEluY2x1ZGVTZWxmT3JOb3Q6Oklu
Y2x1ZGVTZWxmICYmIGlzQ29uc2lkZXJlZFNjcm9sbGFibGUoKnRoaXMpKQorICAgICAgICByZXR1
cm4gY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KHRoaXMpOworICAgIAorICAgIGZvciAoYXV0byog
bmV4dExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKnRoaXMsIGNyb3NzRnJh
bWVCb3VuZGFyaWVzKTsgbmV4dExheWVyOyBuZXh0TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5n
QmxvY2tMYXllcigqbmV4dExheWVyLCBjcm9zc0ZyYW1lQm91bmRhcmllcykpIHsKKyAgICAgICAg
aWYgKGlzQ29uc2lkZXJlZFNjcm9sbGFibGUoKm5leHRMYXllcikpCiAgICAgICAgICAgICByZXR1
cm4gbmV4dExheWVyOwogICAgIH0KIApAQCAtMjU2OSw3ICsyNTg5LDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJbnRTaXplJiBkZWx0YSwgU2Nyb2xsYWJs
ZUFyZWEqKiBzY3IKICAgICAgICAgLy8gSWYgdGhpcyBsYXllciBjYW4ndCBkbyB0aGUgc2Nyb2xs
IHdlIGFzayB0aGUgbmV4dCBsYXllciB1cCB0aGF0IGNhbiBzY3JvbGwgdG8gdHJ5CiAgICAgICAg
IEludFNpemUgcmVtYWluaW5nU2Nyb2xsT2Zmc2V0ID0gbmV3U2Nyb2xsT2Zmc2V0IC0gc2Nyb2xs
T2Zmc2V0KCk7CiAgICAgICAgIGlmICghcmVtYWluaW5nU2Nyb2xsT2Zmc2V0LmlzWmVybygpICYm
IHJlbmRlcmVyKCkucGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogc2Ny
b2xsYWJsZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCisgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBza2lwcyBzY3JvbGxhYmxlIGZyYW1lcy4KKyAgICAgICAgICAgIGlmIChh
dXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNl
bGZPck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKQogICAgICAg
ICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsQnlSZWN1cnNpdmVseShyZW1haW5pbmdT
Y3JvbGxPZmZzZXQsIHNjcm9sbGVkQXJlYSk7CiAKICAgICAgICAgICAgIHJlbmRlcmVyKCkuZnJh
bWUoKS5ldmVudEhhbmRsZXIoKS51cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKQEAgLTI4MTks
MTUgKzI4NDAsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0
IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZAogewogICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiTGF5ZXIgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsUmVj
dFRvVmlzaWJsZSAiIDw8IGFic29sdXRlUmVjdCk7CiAKLSAgICBSZW5kZXJMYXllciogcGFyZW50
TGF5ZXIgPSBudWxscHRyOwogICAgIExheW91dFJlY3QgbmV3UmVjdCA9IGFic29sdXRlUmVjdDsK
LQotICAgIC8vIFdlIG1heSBlbmQgdXAgcHJvcGFnYXRpbmcgYSBzY3JvbGwgZXZlbnQuIEl0IGlz
IGltcG9ydGFudCB0aGF0IHdlIHN1c3BlbmQgZXZlbnRzIHVudGlsIAotICAgIC8vIHRoZSBlbmQg
b2YgdGhlIGZ1bmN0aW9uIHNpbmNlIHRoZXkgY291bGQgZGVsZXRlIHRoZSBsYXllciBvciB0aGUg
bGF5ZXIncyByZW5kZXJlcigpLgogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0KLSAgICBpZiAocmVuZGVyZXIoKS5wYXJlbnQoKSkKLSAg
ICAgICAgcGFyZW50TGF5ZXIgPSByZW5kZXJlcigpLnBhcmVudCgpLT5lbmNsb3NpbmdMYXllcigp
OworICAgIGF1dG8qIHBhcmVudExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIo
KnRoaXMsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpObyk7CiAKICAgICBpZiAoYWxsb3dzQ3VycmVu
dFNjcm9sbCgpKSB7CiAgICAgICAgIC8vIERvbid0IHNjcm9sbCB0byByZXZlYWwgYW4gb3ZlcmZs
b3cgbGF5ZXIgdGhhdCBpcyByZXN0cmljdGVkIGJ5IHRoZSAtd2Via2l0LWxpbmUtY2xhbXAgcHJv
cGVydHkuCkBAIC0yODUyLDcgKzI4NjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0
VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZAogICAg
ICAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmUoLXNjcm9sbE9mZnNldERpZmZlcmVuY2UpOwog
ICAgICAgICAgICAgbmV3UmVjdCA9IExheW91dFJlY3QoYm94LT5sb2NhbFRvQWJzb2x1dGVRdWFk
KEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0KSksIFVzZVRyYW5zZm9ybXMpLmJv
dW5kaW5nQm94KCkpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghcGFyZW50TGF5ZXIgJiYg
cmVuZGVyZXIoKS5pc1JlbmRlclZpZXcoKSkgeworICAgIH0gZWxzZSBpZiAoIXBhcmVudExheWVy
KSB7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0gcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogCiAgICAgICAgIGlmIChvd25lckVsZW1l
bnQgJiYgb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKSB7CkBAIC0yODc3LDcgKzI4OTIsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFi
c29sdXRlUmVjdCwgYm9vbCBpbnNpZAogICAgICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRTY3Jv
bGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQsIGFuaW1h
dGVkKTsKIAogICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmcgPT0gU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIHx8IGZy
YW1lVmlldy5zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhcmVudExheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdM
YXllcigpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZW5jbG9zaW5nTGF5ZXIgPSBv
d25lckVsZW1lbnQtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRMYXllciA9IGVuY2xvc2luZ0xheWVyLT5lbmNsb3NpbmdTY3JvbGxh
YmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdDo6SW5jbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFy
aWVzOjpObyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHJlY3QgaW50byB0
aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0aGUgcGFyZW50IGZyYW1lJ3MgZG9jdW1lbnQuCiAgICAg
ICAgICAgICAgICAgICAgIG5ld1JlY3QgPSBmcmFtZVZpZXcuY29udGVudHNUb0NvbnRhaW5pbmdW
aWV3Q29udGVudHMoZW5jbG9zaW5nSW50UmVjdChuZXdSZWN0KSk7CiAgICAgICAgICAgICAgICAg
ICAgIGluc2lkZUZpeGVkID0gZmFsc2U7IC8vIEZJWE1FOiBpZGVhbGx5IG5lZWQgdG8gZGV0ZXJt
aW5lIGlmIHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkLgpAQCAtMzU4Miw3
ICszNTk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9v
bCBoYXNTY3JvbGxiYXIpCiAKIFNjcm9sbGFibGVBcmVhKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
U2Nyb2xsYWJsZUFyZWEoKSBjb25zdAogewotICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJs
ZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKCkpCisgICAgaWYgKFJlbmRlckxheWVy
KiBzY3JvbGxhYmxlTGF5ZXIgPSBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZP
ck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKQogICAgICAgICBy
ZXR1cm4gc2Nyb2xsYWJsZUxheWVyOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXR1cm4g
dGhlIGZyYW1lIHZpZXcgaGVyZSAob3IgcG9zc2libHkgYW4gYW5jZXN0b3IgZnJhbWUgdmlldywK
QEAgLTM1OTcsNyArMzYxMyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZU9yUnVi
YmVyYmFuZGFibGUoKQogCiBib29sIFJlbmRlckxheWVyOjpoYXNTY3JvbGxhYmxlT3JSdWJiZXJi
YW5kYWJsZUFuY2VzdG9yKCkKIHsKLSAgICBmb3IgKFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBw
YXJlbnRMYXllckNyb3NzRnJhbWUoKnRoaXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IHBhcmVu
dExheWVyQ3Jvc3NGcmFtZSgqbmV4dExheWVyKSkgeworICAgIGZvciAoYXV0byogbmV4dExheWVy
ID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoKnRoaXMsIENyb3NzRnJhbWVCb3VuZGFy
aWVzOjpZZXMpOyBuZXh0TGF5ZXI7IG5leHRMYXllciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9j
a0xheWVyKCpuZXh0TGF5ZXIsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKSB7CiAgICAgICAg
IGlmIChuZXh0TGF5ZXItPmlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY5NjYsNiArNjk4MiwxNCBAQCBJbnRPdXRzZXRz
IFJlbmRlckxheWVyOjpmaWx0ZXJPdXRzZXRzKCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIo
KS5zdHlsZSgpLmZpbHRlck91dHNldHMoKTsKIH0KIAorc3RhdGljIFJlbmRlckxheWVyKiBwYXJl
bnRMYXllckNyb3NzRnJhbWUoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQoreworICAgIGlmIChh
dXRvKiBwYXJlbnQgPSBsYXllci5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudDsKKwor
ICAgIHJldHVybiBlbmNsb3NpbmdGcmFtZVJlbmRlckxheWVyKGxheWVyKTsKK30KKwogYm9vbCBS
ZW5kZXJMYXllcjo6aXNUcmFuc3BhcmVudFJlc3BlY3RpbmdQYXJlbnRGcmFtZXMoKSBjb25zdAog
ewogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bVZpc2libGVPcGFjaXR5ID0gMC4wMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggZTU4M2IzNmRkMmUzOGU2
ZjIxNmE0NDE0YzA1NDJhYjE3NjVhMjhkMC4uMDFhNmZlMDE3NGNiOTkwODQyZTMzOWM5MDBmN2Jh
OWE2ZTQ3MGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTg1
LDYgKzg1LDcgQEAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGVudW0gQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMsIERvTm90SW5jbHVk
ZVNlbGZGb3JCb3JkZXJSYWRpdXMgfTsKIGVudW0gSW5jbHVkZVNlbGZPck5vdCB7IEluY2x1ZGVT
ZWxmLCBFeGNsdWRlU2VsZiB9OworZW51bSBDcm9zc0ZyYW1lQm91bmRhcmllcyB7IE5vLCBZZXMg
fTsKIAogZW51bSBSZXBhaW50U3RhdHVzIHsKICAgICBOZWVkc05vcm1hbFJlcGFpbnQsCkBAIC00
NjAsNiArNDYxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zdExheW91dFNjcm9sbFBvc2l0
aW9uKE9wdGlvbmFsPFNjcm9sbFBvc2l0aW9uPik7CiAgICAgdm9pZCBhcHBseVBvc3RMYXlvdXRT
Y3JvbGxQb3NpdGlvbklmTmVlZGVkKCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSBuZWFyZXN0IGVu
Y2xvc2luZyBsYXllciB0aGF0IGlzIHNjcm9sbGFibGUuCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xv
c2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmll
cykgY29uc3Q7CisKICAgICB2b2lkIGF2YWlsYWJsZUNvbnRlbnRTaXplQ2hhbmdlZChBdmFpbGFi
bGVTaXplQ2hhbmdlUmVhc29uKSBvdmVycmlkZTsKIAogICAgIGVudW0gQXV0b3Njcm9sbFN0YXR1
cyB7IE5vdEluUHJvZ3Jlc3MsIEluUHJvZ3Jlc3MgfTsKQEAgLTYzMSw5ICs2MzUsOCBAQCBwdWJs
aWM6CiAgICAgLy8gR2V0cyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgcG9zaXRpb25lZCBhbmNlc3Rv
ciBsYXllciAoYWxzbyBpbmNsdWRlcwogICAgIC8vIHRoZSA8aHRtbD4gbGF5ZXIgYW5kIHRoZSBy
b290IGxheWVyKS4KICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nQW5jZXN0b3JGb3JQb3NpdGlv
bihQb3NpdGlvblR5cGUpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0aGUgbmVhcmVzdCBlbmNs
b3NpbmcgbGF5ZXIgdGhhdCBpcyBzY3JvbGxhYmxlLgotICAgIFJlbmRlckxheWVyKiBlbmNsb3Np
bmdTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdDsKKyAgICAKKyAgICBSZW5kZXJMYXllciogZW5jbG9z
aW5nTGF5ZXJJbkNvbnRhaW5pbmdCbG9ja09yZGVyKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgbGF5
ZXIgcmVsYXRpdmUgdG8gd2hpY2ggY2xpcHBpbmcgcmVjdHMgZm9yIHRoaXMgbGF5ZXIgYXJlIGNv
bXB1dGVkLgogICAgIFJlbmRlckxheWVyKiBjbGlwcGluZ1Jvb3RGb3JQYWludGluZygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkNzA1M2VjMzIwNGNhYWVlMGU0
OWE4MWUxNWJlMTEyODM0OThjZGM0Li5mYTdiMWQ2MTExZDM3MWU5YWEyMWI3YmI5YWEyODgwMmI1
ZTY4Y2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMjAzNyw4ICsyMDM3
LDEwIEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZShXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KQogICAgICAgICBJbnRTaXplIGxvZ2ljYWxTY3JvbGxEZWx0YSgtZGVsdGFYICogc2NhbGVGYWN0
b3IsIC1kZWx0YVkgKiBzY2FsZUZhY3Rvcik7CiAKICAgICAgICAgUmVuZGVyTGF5ZXIqIHNjcm9s
bGFibGVMYXllciA9IG51bGxwdHI7Ci0gICAgICAgIGlmIChtX2dlc3R1cmVUYXJnZXROb2RlICYm
IG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9nZXN0dXJlVGFyZ2V0Tm9kZS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkKLSAgICAgICAgICAgIHNjcm9sbGFibGVMYXll
ciA9IG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCktPmVu
Y2xvc2luZ1Njcm9sbGFibGVMYXllcigpOworICAgICAgICBpZiAobV9nZXN0dXJlVGFyZ2V0Tm9k
ZSAmJiBtX2dlc3R1cmVUYXJnZXROb2RlLT5yZW5kZXJlcigpICYmIG1fZ2VzdHVyZVRhcmdldE5v
ZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
KiBsYXllciA9IG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVy
KCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXItPmVuY2xvc2luZ1Nj
cm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90OjpFeGNsdWRlU2VsZiwgQ3Jvc3NGcmFtZUJv
dW5kYXJpZXM6OlllcykpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFzY3JvbGxhYmxlTGF5
ZXIpIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGRpcmVjdGx5IGhpdCB0aGUgZG9jdW1lbnQg
d2l0aG91dCBoaXR0aW5nIGFueSBub2RlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZkMGYwYWQ5MGFjOTlkM2QyZDY2NGJj
YzE0YjEwNGMxOWE5YjUzYjguLmY1YWFkNTNhZDg5N2NmZmRmM2U2MGExYjFmNmE2MTUxNjZlYTM1
ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMy0zMCAgU2ltb24gRnJhc2VyICA8c2lt
b24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBzY3JvbGxJbnRvVmlldygpIGVycm9uZW91
c2x5IHNjcm9sbHMgbm9uLWNvbnRhaW5pbmcgYmxvY2sgc2Nyb2xsZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3MTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L2Nzcy9jc3NvbS12
aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNv
bnRhaW5pbmdibG9jay1jaGFpbi5odG1sOiBBZGRlZC4KKwogMjAyMC0wMy0yNyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaWRld2F5cyBqaWdnbGVz
IHdoZW4gc2Nyb2xsaW5nIHRoZSBzaGVsdmVzIG9uIGJldGEubXVzaWMuYXBwbGUuY29tCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmll
dy1jb250YWluaW5nYmxvY2stY2hhaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGM3ZGNmMWFlYzM2OGViNTYwN2FjMmIwMWM2YzI1OTIy
MGQzM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3NzL2Nzc29t
LXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBzY3JvbGxJbnRvVmlldyBzaG91bGQgbm90IHNjcm9sbCBh
bmNlc3RvciBvdmVyZmxvdzpzY3JvbGwgZWxlbWVudHMgdGhhdCBhcmUgbm90IGNvbnRhaW5pbmcg
YmxvY2sgYW5jZXN0b3JzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3Mv
Y3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5p
bmdibG9jay1jaGFpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjZmQ1ZjY5OWQ3MTdmNDYzNTk4MmQ3NmUy
NTdjZDJjNDc3ODE3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9j
c3MvY3Nzb20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbApA
QCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzx0aXRsZT5zY3JvbGxJbnRvVmlldyBzaG91bGQg
b25seSBhZGp1c3Qgc2Nyb2xsZXJzIGluIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluPC90aXRs
ZT4KKzxzdHlsZT4KKyAgICAuc2Nyb2xsZXIgeworICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICAg
IAorICAgIC5jb250ZW50cyB7CisgICAgICAgIHdpZHRoOiAyMDAlOworICAgICAgICBoZWlnaHQ6
IDMwMCU7CisgICAgfQorCisgICAgI2lubmVyLnNjcm9sbGVyIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICBtYXJnaW4tdG9wOiAyNTBweDsKKyAgICAgICAgbWFyZ2luLWxl
ZnQ6IDEwMHB4OworICAgICAgICB3aWR0aDogNDAwcHgKKyAgICB9CisgICAgCisgICAgI3JldmVh
bCB7CisgICAgICAgIG1hcmdpbi10b3A6IDQwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBibHVlOworICAgIH0gICAgCis8L3N0eWxlPgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgICA8
ZGl2IGlkPSJvdXRlciIgY2xhc3M9InNjcm9sbGVyIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudHMiPgorICAgICAgICAgICAgVGhpcyBzaG91bGQgbm90IHNjcm9sbAorICAgICAgICAgICAg
PGRpdiBpZD0iaW5uZXIiIGNsYXNzPSJpbm5lciBzY3JvbGxlciI+CisgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY29udGVudHMiPgorICAgICAgICAgICAgICAgICAgICBjb250ZW50cworICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJyZXZlYWwiPgorICAgICAgICAgICAgICAgICAgICAg
ICAgUmV2ZWFsIG1lCisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorPC9kaXY+Cis8L2Rp
dj4KKzxzY3JpcHQ+CithZGRfY29tcGxldGlvbl9jYWxsYmFjaygoKSA9PiBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGFpbmVyIikucmVtb3ZlKCkpOworCit0ZXN0KHQgPT4geworICAgIHZh
ciByZXZlYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmV2ZWFsJyk7CisKKyAgICB2YXIg
b3V0ZXJTY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdXRlcicpOworICAgIHZh
ciBpbm5lclNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lubmVyJyk7CisgICAg
dmFyIGluaXRpYWxPdXRlclRvcCA9IG91dGVyU2Nyb2xsZXIuc2Nyb2xsVG9wOworICAgIHZhciBp
bml0aWFsSW5uZXJUb3AgPSBpbm5lclNjcm9sbGVyLnNjcm9sbFRvcDsKKworICAgIGFzc2VydF9l
cXVhbHMoaW5pdGlhbE91dGVyVG9wLCAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGluaXRpYWxJbm5l
clRvcCwgMCk7CisKKyAgICByZXZlYWwuc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiAic3RhcnQiLCBp
bmxpbmU6ICJzdGFydCJ9KTsKKworICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGlubmVyU2Nyb2xs
ZXIuc2Nyb2xsVG9wLCA0MTgsIDQpOworICAgIGFzc2VydF9lcXVhbHMob3V0ZXJTY3JvbGxlci5z
Y3JvbGxUb3AsIDApOworfSwgInNjcm9sbEludG9WaWV3IHNob3VsZCBub3Qgc2Nyb2xsIGFuY2Vz
dG9yIG92ZXJmbG93OnNjcm9sbCBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29udGFpbmluZyBibG9j
ayBhbmNlc3RvcnMiKTsKKzwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="410387"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394971</attachid>
            <date>2020-03-30 15:04:43 -0700</date>
            <delta_ts>2020-03-30 17:03:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209715-20200330150442.patch</filename>
            <type>text/plain</type>
            <size>17002</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyYWI2ZWQxOGI2ZjNm
YTBjMzZkMTQ4ZGViNzU3ZjE0M2E3YTM3OC4uMzAxNjViYTAzNGI1NDQwOGE2MWMyOTMwNDQwMzkw
NjU2MzQ5NjM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTMwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIHNjcm9sbEludG9W
aWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24tY29udGFpbmluZyBibG9jayBzY3JvbGxlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICBSZW5kZXJMYXll
cjo6c2Nyb2xsQnlSZWN1cnNpdmVseSgpIHdvdWxkIGp1c3Qgd2FsayB1cCB0aGUgcGFyZW50IFJl
bmRlckxheWVyIGNoYWluCisgICAgICAgIHRyeWluZyB0byBzY3JvbGwgZWFjaCBvbmUuIEhvd2V2
ZXIsIHRoaXMgd291bGQgaGl0IG92ZXJmbG93OnNjcm9sbCB3aGljaCB3YXNuJ3QgaW4gdGhlCisg
ICAgICAgIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4sIGVycm9uZW91c2x5IHNjcm9sbGluZyB1bnJl
bGF0ZWQgc2Nyb2xsZXJzLgorCisgICAgICAgIEZpeCBieSBhZGRpbmcgUmVuZGVyTGF5ZXI6OmVu
Y2xvc2luZ0xheWVySW5Db250YWluaW5nQmxvY2tPcmRlcigpIGFuZCBjYWxsaW5nCisgICAgICAg
IGl0IGZyb20gUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpLiBBbHNvIGV4
dGVuZCBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoKQorICAgICAgICB0byBtYWtlIGV4cGxpY2l0
ICdpbmNsdWRlIHNlbGYnIGFuZCBmcmFtZS1ib3VuZGFyeSBjcm9zc2luZy4KKworICAgICAgICBJ
biBmdXR1cmUsIHNjcm9sbEJ5UmVjdXJzaXZlbHkoKSBzaG91bGQgcmVhbGx5IGJlIHZpcnR1YWwg
b24gU2Nyb2xsYWJsZUFyZWEsIGFuZCBpbXBsZW1lbnRlZAorICAgICAgICBvbiBpdHMgc3ViY2xh
c3Nlcy4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3JvbGxpbnRv
dmlldy1jb250YWluaW5nYmxvY2stY2hhaW4uaHRtbAorCisgICAgICAgICogcGFnZS9tYWMvRXZl
bnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwbGF0Zm9y
bVByZXBhcmVGb3JXaGVlbEV2ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjplbmNsb3NpbmdMYXllckluQ29u
dGFpbmluZ0Jsb2NrT3JkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nQ29u
dGFpbmluZ0Jsb2NrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmVuY2xv
c2luZ1Njcm9sbGFibGVMYXllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2Nyb2xsQnlSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZW5j
bG9zaW5nU2Nyb2xsYWJsZUFyZWEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6Omhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJlbnRMYXllckNyb3NzRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5oOgorCiAyMDIwLTAzLTI4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNjcm9sbExhdGNoaW5nU3RhdGUgc2hvdWxkIHVz
ZSBXZWFrUHRyPEVsZW1lbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMjc0MTk0
ZWFhMDcyMmJlN2ViMWFmYmZhYjFjZTMxZjMxMDI0NzcyYi4uYjdmOWY5ODllMWU0MTAzMmZhNGIw
MTkzMzQ3NTRkMjA3YjI1NDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAzLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIHNjcm9sbEludG9WaWV3KCkgZXJyb25lb3VzbHkgc2Nyb2xscyBub24t
Y29udGFpbmluZyBibG9jayBzY3JvbGxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwOTcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1
anRhcy4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6Z2VzdHVy
ZSk6CisKIDIwMjAtMDMtMTggIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2Ugc3VyZSBhIHByZWZsaWdodCBmYWlscyBpZiByZXNwb25zZSBoZWFkZXJzIGFy
ZSBpbnZhbGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5k
ZXggNWE4OTU0OGQyMmNmYjk5YmQ1Yzc3MTdiZTllNjgzNDdlYzI1NTVlMC4uYzE3MWM2MzAyN2Yz
Nzg3NzhhOWI5Y2MxZTA2MGRjODBlZTVkYjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtOTcwLDcgKzk3MCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpwbGF0Zm9ybVByZXBhcmVGb3JXaGVlbEV2ZW50cyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsCiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsTGF0Y2hpbmcsIHN0cmVh
bSA8PCAiRXZlbnRIYW5kbGVyOjpwbGF0Zm9ybVByZXBhcmVGb3JXaGVlbEV2ZW50cygpIC0gZXZl
bnQiIDw8IHdoZWVsRXZlbnQgPDwgIiBmb3VuZCBzY3JvbGxhYmxlQ29udGFpbmVyIiA8PCBWYWx1
ZU9yTnVsbChzY3JvbGxhYmxlQ29udGFpbmVyLmdldCgpKSA8PCAiIHNjcm9sbGFibGVBcmVhICIg
PDwgKHNjcm9sbGFibGVBcmVhID8gc2Nyb2xsYWJsZUFyZWEuZ2V0KCkgOiBudWxscHRyKSk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7
CiAgICAgaWYgKHNjcm9sbGFibGVBcmVhICYmIHBhZ2UgJiYgcGFnZS0+aXNNb25pdG9yaW5nV2hl
ZWxFdmVudHMoKSkKICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbEFuaW1hdG9yKCkuc2V0
V2hlZWxFdmVudFRlc3RNb25pdG9yKHBhZ2UtPndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDRiYmQ3MGM4NzEyZmQ3
NjUyZjE1Y2MyMjFhZjQ1ZjM4ODhhMDVjMTQuLmFhMDdmNmE0OTBiY2NhYjA1N2JmMTA2OTg5M2Iz
ZGYzMTVhM2RjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApA
QCAtMTg3Niw2ICsxODc2LDE2IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
QW5jZXN0b3JGb3JQb3NpdGlvbihQb3NpdGlvblR5cGUgcG9zaXRpb24pIGNvCiAgICAgcmV0dXJu
IGN1cnI7CiB9CiAKK1JlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nTGF5ZXJJbkNv
bnRhaW5pbmdCbG9ja09yZGVyKCkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGN1cnJl
bnRCbG9jayA9IHJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCk7IGN1cnJlbnRCbG9jazsgY3Vy
cmVudEJsb2NrID0gY3VycmVudEJsb2NrLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICBp
ZiAoYXV0byogbGF5ZXIgPSBjdXJyZW50QmxvY2stPmxheWVyKCkpCisgICAgICAgICAgICByZXR1
cm4gbGF5ZXI7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyBSZW5k
ZXJMYXllciogZW5jbG9zaW5nRnJhbWVSZW5kZXJMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5
ZXIpCiB7CiAgICAgYXV0byogb3duZXJFbGVtZW50ID0gbGF5ZXIucmVuZGVyZXIoKS5kb2N1bWVu
dCgpLm93bmVyRWxlbWVudCgpOwpAQCAtMTg4OSwxOCArMTg5OSwyOCBAQCBzdGF0aWMgUmVuZGVy
TGF5ZXIqIGVuY2xvc2luZ0ZyYW1lUmVuZGVyTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVy
KQogICAgIHJldHVybiBvd25lclJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpOwogfQogCi1zdGF0
aWMgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyQ3Jvc3NGcmFtZShjb25zdCBSZW5kZXJMYXllciYg
bGF5ZXIpCitzdGF0aWMgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVy
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXMgY3Jvc3NGcmFt
ZUJvdW5kYXJpZXMpCiB7Ci0gICAgaWYgKGF1dG8qIHBhcmVudCA9IGxheWVyLnBhcmVudCgpKQot
ICAgICAgICByZXR1cm4gcGFyZW50OworICAgIGlmIChhdXRvKiBhbmNlc3RvciA9IGxheWVyLmVu
Y2xvc2luZ0xheWVySW5Db250YWluaW5nQmxvY2tPcmRlcigpKQorICAgICAgICByZXR1cm4gYW5j
ZXN0b3I7CisKKyAgICBpZiAoY3Jvc3NGcmFtZUJvdW5kYXJpZXMgPT0gQ3Jvc3NGcmFtZUJvdW5k
YXJpZXM6Ok5vKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBlbmNsb3Np
bmdGcmFtZVJlbmRlckxheWVyKGxheWVyKTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjplbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdAorUmVuZGVyTGF5ZXIqIFJlbmRlckxh
eWVyOjplbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdCBpbmNsdWRlU2Vs
ZiwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXMgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpIGNvbnN0CiB7Ci0g
ICAgZm9yIChSZW5kZXJMYXllciogbmV4dExheWVyID0gcGFyZW50TGF5ZXJDcm9zc0ZyYW1lKCp0
aGlzKTsgbmV4dExheWVyOyBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNyb3NzRnJhbWUoKm5leHRM
YXllcikpIHsKLSAgICAgICAgaWYgKGlzPFJlbmRlckJveD4obmV4dExheWVyLT5yZW5kZXJlcigp
KSAmJiBkb3duY2FzdDxSZW5kZXJCb3g+KG5leHRMYXllci0+cmVuZGVyZXIoKSkuY2FuQmVTY3Jv
bGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgYXV0byBpc0NvbnNpZGVyZWRTY3JvbGxh
YmxlID0gW10oY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSB7CisgICAgICAgIHJldHVybiBpczxS
ZW5kZXJCb3g+KGxheWVyLnJlbmRlcmVyKCkpICYmIGRvd25jYXN0PFJlbmRlckJveD4obGF5ZXIu
cmVuZGVyZXIoKSkuY2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCk7CisgICAgfTsK
KworICAgIGlmIChpbmNsdWRlU2VsZiA9PSBJbmNsdWRlU2VsZk9yTm90OjpJbmNsdWRlU2VsZiAm
JiBpc0NvbnNpZGVyZWRTY3JvbGxhYmxlKCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8UmVuZGVyTGF5ZXIqPih0aGlzKTsKKyAgICAKKyAgICBmb3IgKGF1dG8qIG5leHRMYXllciA9
IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVyKCp0aGlzLCBjcm9zc0ZyYW1lQm91bmRhcmll
cyk7IG5leHRMYXllcjsgbmV4dExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIo
Km5leHRMYXllciwgY3Jvc3NGcmFtZUJvdW5kYXJpZXMpKSB7CisgICAgICAgIGlmIChpc0NvbnNp
ZGVyZWRTY3JvbGxhYmxlKCpuZXh0TGF5ZXIpKQogICAgICAgICAgICAgcmV0dXJuIG5leHRMYXll
cjsKICAgICB9CiAKQEAgLTI1NjksNyArMjU4OSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9s
bEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVsdGEsIFNjcm9sbGFibGVBcmVhKiogc2Ny
CiAgICAgICAgIC8vIElmIHRoaXMgbGF5ZXIgY2FuJ3QgZG8gdGhlIHNjcm9sbCB3ZSBhc2sgdGhl
IG5leHQgbGF5ZXIgdXAgdGhhdCBjYW4gc2Nyb2xsIHRvIHRyeQogICAgICAgICBJbnRTaXplIHJl
bWFpbmluZ1Njcm9sbE9mZnNldCA9IG5ld1Njcm9sbE9mZnNldCAtIHNjcm9sbE9mZnNldCgpOwog
ICAgICAgICBpZiAoIXJlbWFpbmluZ1Njcm9sbE9mZnNldC5pc1plcm8oKSAmJiByZW5kZXJlcigp
LnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIHNjcm9sbGFibGVMYXll
ciA9IGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcigpKQorICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2tpcHMgc2Nyb2xsYWJsZSBmcmFtZXMuCisgICAgICAgICAgICBpZiAoYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkV4
Y2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6WWVzKSkKICAgICAgICAgICAgICAgICBz
Y3JvbGxhYmxlTGF5ZXItPnNjcm9sbEJ5UmVjdXJzaXZlbHkocmVtYWluaW5nU2Nyb2xsT2Zmc2V0
LCBzY3JvbGxlZEFyZWEpOwogCiAgICAgICAgICAgICByZW5kZXJlcigpLmZyYW1lKCkuZXZlbnRI
YW5kbGVyKCkudXBkYXRlQXV0b3Njcm9sbFJlbmRlcmVyKCk7CkBAIC0yODE5LDE1ICsyODQwLDkg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0
JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWQKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
aW5nLCBzdHJlYW0gPDwgIkxheWVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbFJlY3RUb1Zpc2libGUg
IiA8PCBhYnNvbHV0ZVJlY3QpOwogCi0gICAgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyID0gbnVs
bHB0cjsKICAgICBMYXlvdXRSZWN0IG5ld1JlY3QgPSBhYnNvbHV0ZVJlY3Q7Ci0KLSAgICAvLyBX
ZSBtYXkgZW5kIHVwIHByb3BhZ2F0aW5nIGEgc2Nyb2xsIGV2ZW50LiBJdCBpcyBpbXBvcnRhbnQg
dGhhdCB3ZSBzdXNwZW5kIGV2ZW50cyB1bnRpbCAKLSAgICAvLyB0aGUgZW5kIG9mIHRoZSBmdW5j
dGlvbiBzaW5jZSB0aGV5IGNvdWxkIGRlbGV0ZSB0aGUgbGF5ZXIgb3IgdGhlIGxheWVyJ3MgcmVu
ZGVyZXIoKS4KICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZy
YW1lVmlldygpOwotCi0gICAgaWYgKHJlbmRlcmVyKCkucGFyZW50KCkpCi0gICAgICAgIHBhcmVu
dExheWVyID0gcmVuZGVyZXIoKS5wYXJlbnQoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBhdXRv
KiBwYXJlbnRMYXllciA9IGVuY2xvc2luZ0NvbnRhaW5pbmdCbG9ja0xheWVyKCp0aGlzLCBDcm9z
c0ZyYW1lQm91bmRhcmllczo6Tm8pOwogCiAgICAgaWYgKGFsbG93c0N1cnJlbnRTY3JvbGwoKSkg
ewogICAgICAgICAvLyBEb24ndCBzY3JvbGwgdG8gcmV2ZWFsIGFuIG92ZXJmbG93IGxheWVyIHRo
YXQgaXMgcmVzdHJpY3RlZCBieSB0aGUgLXdlYmtpdC1saW5lLWNsYW1wIHByb3BlcnR5LgpAQCAt
Mjg1Miw3ICsyODY3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShj
b25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWQKICAgICAgICAgICAgIGxv
Y2FsRXhwb3NlUmVjdC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKICAgICAgICAgICAg
IG5ld1JlY3QgPSBMYXlvdXRSZWN0KGJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQo
RmxvYXRSZWN0KGxvY2FsRXhwb3NlUmVjdCkpLCBVc2VUcmFuc2Zvcm1zKS5ib3VuZGluZ0JveCgp
KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIXBhcmVudExheWVyICYmIHJlbmRlcmVyKCku
aXNSZW5kZXJWaWV3KCkpIHsKKyAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllcikgewogICAgICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5vd25lckVsZW1lbnQoKTsKIAogICAgICAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVy
RWxlbWVudC0+cmVuZGVyZXIoKSkgewpAQCAtMjg3Nyw3ICsyODkyLDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3Qs
IGJvb2wgaW5zaWQKICAgICAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0U2Nyb2xsUG9zaXRpb24o
c2Nyb2xsUG9zaXRpb24sIFNjcm9sbENsYW1waW5nOjpDbGFtcGVkLCBhbmltYXRlZCk7CiAKICAg
ICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
ID09IFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB8fCBmcmFtZVZpZXcuc2Fm
ZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICBwYXJl
bnRMYXllciA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xheWVyID0gb3duZXJFbGVtZW50
LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdMYXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKElu
Y2x1ZGVTZWxmT3JOb3Q6OkluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pOwog
ICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNvb3JkaW5h
dGUgc3BhY2Ugb2YgdGhlIHBhcmVudCBmcmFtZSdzIGRvY3VtZW50LgogICAgICAgICAgICAgICAg
ICAgICBuZXdSZWN0ID0gZnJhbWVWaWV3LmNvbnRlbnRzVG9Db250YWluaW5nVmlld0NvbnRlbnRz
KGVuY2xvc2luZ0ludFJlY3QobmV3UmVjdCkpOwogICAgICAgICAgICAgICAgICAgICBpbnNpZGVG
aXhlZCA9IGZhbHNlOyAvLyBGSVhNRTogaWRlYWxseSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlz
IDxpZnJhbWU+IGlzIGluc2lkZSBwb3NpdGlvbjpmaXhlZC4KQEAgLTM1ODIsNyArMzU5OCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzU2Nyb2xs
YmFyKQogCiBTY3JvbGxhYmxlQXJlYSogUmVuZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVB
cmVhKCkgY29uc3QKIHsKLSAgICBpZiAoUmVuZGVyTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IGVu
Y2xvc2luZ1Njcm9sbGFibGVMYXllcigpKQorICAgIGlmIChSZW5kZXJMYXllciogc2Nyb2xsYWJs
ZUxheWVyID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkV4Y2x1
ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6WWVzKSkKICAgICAgICAgcmV0dXJuIHNjcm9s
bGFibGVMYXllcjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV0dXJuIHRoZSBmcmFtZSB2
aWV3IGhlcmUgKG9yIHBvc3NpYmx5IGFuIGFuY2VzdG9yIGZyYW1lIHZpZXcsCkBAIC0zNTk3LDcg
KzM2MTMsNyBAQCBib29sIFJlbmRlckxheWVyOjppc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxl
KCkKIAogYm9vbCBSZW5kZXJMYXllcjo6aGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNl
c3RvcigpCiB7Ci0gICAgZm9yIChSZW5kZXJMYXllciogbmV4dExheWVyID0gcGFyZW50TGF5ZXJD
cm9zc0ZyYW1lKCp0aGlzKTsgbmV4dExheWVyOyBuZXh0TGF5ZXIgPSBwYXJlbnRMYXllckNyb3Nz
RnJhbWUoKm5leHRMYXllcikpIHsKKyAgICBmb3IgKGF1dG8qIG5leHRMYXllciA9IGVuY2xvc2lu
Z0NvbnRhaW5pbmdCbG9ja0xheWVyKCp0aGlzLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6WWVzKTsg
bmV4dExheWVyOyBuZXh0TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5nQmxvY2tMYXllcigqbmV4
dExheWVyLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6WWVzKSkgewogICAgICAgICBpZiAobmV4dExh
eWVyLT5pc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC02OTY2LDYgKzY5ODIsMTQgQEAgSW50T3V0c2V0cyBSZW5kZXJMYXll
cjo6ZmlsdGVyT3V0c2V0cygpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuc3R5bGUoKS5m
aWx0ZXJPdXRzZXRzKCk7CiB9CiAKK3N0YXRpYyBSZW5kZXJMYXllciogcGFyZW50TGF5ZXJDcm9z
c0ZyYW1lKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKK3sKKyAgICBpZiAoYXV0byogcGFyZW50
ID0gbGF5ZXIucGFyZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQ7CisKKyAgICByZXR1cm4g
ZW5jbG9zaW5nRnJhbWVSZW5kZXJMYXllcihsYXllcik7Cit9CisKIGJvb2wgUmVuZGVyTGF5ZXI6
OmlzVHJhbnNwYXJlbnRSZXNwZWN0aW5nUGFyZW50RnJhbWVzKCkgY29uc3QKIHsKICAgICBzdGF0
aWMgY29uc3QgZG91YmxlIG1pbmltdW1WaXNpYmxlT3BhY2l0eSA9IDAuMDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGU1ODNiMzZkZDJlMzhlNmYyMTZhNDQxNGMw
NTQyYWIxNzY1YTI4ZDAuLjAxYTZmZTAxNzRjYjk5MDg0MmUzMzljOTAwZjdiYTlhNmU0NzBhNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC04NSw2ICs4NSw3IEBA
IGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBlbnVtIEJvcmRlclJhZGl1c0NsaXBwaW5n
UnVsZSB7IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzLCBEb05vdEluY2x1ZGVTZWxmRm9yQm9y
ZGVyUmFkaXVzIH07CiBlbnVtIEluY2x1ZGVTZWxmT3JOb3QgeyBJbmNsdWRlU2VsZiwgRXhjbHVk
ZVNlbGYgfTsKK2VudW0gQ3Jvc3NGcmFtZUJvdW5kYXJpZXMgeyBObywgWWVzIH07CiAKIGVudW0g
UmVwYWludFN0YXR1cyB7CiAgICAgTmVlZHNOb3JtYWxSZXBhaW50LApAQCAtNDYwLDYgKzQ2MSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbihPcHRpb25h
bDxTY3JvbGxQb3NpdGlvbj4pOwogICAgIHZvaWQgYXBwbHlQb3N0TGF5b3V0U2Nyb2xsUG9zaXRp
b25JZk5lZWRlZCgpOwogCisgICAgLy8gUmV0dXJucyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbGF5
ZXIgdGhhdCBpcyBzY3JvbGxhYmxlLgorICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTY3JvbGxh
YmxlTGF5ZXIoSW5jbHVkZVNlbGZPck5vdCwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXMpIGNvbnN0Owor
CiAgICAgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5n
ZVJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIEF1dG9zY3JvbGxTdGF0dXMgeyBOb3RJblBy
b2dyZXNzLCBJblByb2dyZXNzIH07CkBAIC02MzEsOSArNjM1LDggQEAgcHVibGljOgogICAgIC8v
IEdldHMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHBvc2l0aW9uZWQgYW5jZXN0b3IgbGF5ZXIgKGFs
c28gaW5jbHVkZXMKICAgICAvLyB0aGUgPGh0bWw+IGxheWVyIGFuZCB0aGUgcm9vdCBsYXllciku
CiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0FuY2VzdG9yRm9yUG9zaXRpb24oUG9zaXRpb25U
eXBlKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxheWVy
IHRoYXQgaXMgc2Nyb2xsYWJsZS4KLSAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nU2Nyb2xsYWJs
ZUxheWVyKCkgY29uc3Q7CisgICAgCisgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0xheWVySW5D
b250YWluaW5nQmxvY2tPcmRlcigpIGNvbnN0OwogCiAgICAgLy8gVGhlIGxheWVyIHJlbGF0aXZl
IHRvIHdoaWNoIGNsaXBwaW5nIHJlY3RzIGZvciB0aGlzIGxheWVyIGFyZSBjb21wdXRlZC4KICAg
ICBSZW5kZXJMYXllciogY2xpcHBpbmdSb290Rm9yUGFpbnRpbmcoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZDcwNTNlYzMyMDRjYWFlZTBlNDlhODFlMTViZTEx
MjgzNDk4Y2RjNC4uYTA5OTExZTE2NmE3MTFjMDVhZGM4OTIwYWNmYjU3YTlhZjA1YzlmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTIwMzcsOCArMjAzNywxMCBAQCBib29s
IFdlYlZpZXc6Omdlc3R1cmUoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAg
SW50U2l6ZSBsb2dpY2FsU2Nyb2xsRGVsdGEoLWRlbHRhWCAqIHNjYWxlRmFjdG9yLCAtZGVsdGFZ
ICogc2NhbGVGYWN0b3IpOwogCiAgICAgICAgIFJlbmRlckxheWVyKiBzY3JvbGxhYmxlTGF5ZXIg
PSBudWxscHRyOwotICAgICAgICBpZiAobV9nZXN0dXJlVGFyZ2V0Tm9kZSAmJiBtX2dlc3R1cmVU
YXJnZXROb2RlLT5yZW5kZXJlcigpICYmIG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRlcmVyKCkt
PmVuY2xvc2luZ0xheWVyKCkpCi0gICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXIgPSBtX2dlc3R1
cmVUYXJnZXROb2RlLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpLT5lbmNsb3NpbmdTY3Jv
bGxhYmxlTGF5ZXIoKTsKKyAgICAgICAgaWYgKG1fZ2VzdHVyZVRhcmdldE5vZGUgJiYgbV9nZXN0
dXJlVGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGxheWVy
ID0gbV9nZXN0dXJlVGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkKKyAg
ICAgICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJs
ZUxheWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkV4Y2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmll
czo6WWVzKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKSB7CiAg
ICAgICAgICAgICAvLyBXZSBtaWdodCBkaXJlY3RseSBoaXQgdGhlIGRvY3VtZW50IHdpdGhvdXQg
aGl0dGluZyBhbnkgbm9kZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZDBmMGFkOTBhYzk5ZDNkMmQ2NjRiY2MxNGIxMDRj
MTlhOWI1M2I4Li41OTIyNzI5ZGM1YjFmZDljYTYwN2RjNmU5YWMyYjE4OTk3MWExYzJkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDMtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgc2Nyb2xsSW50b1ZpZXcoKSBlcnJvbmVvdXNseSBzY3Jv
bGxzIG5vbi1jb250YWluaW5nIGJsb2NrIHNjcm9sbGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WmFsYW4gQnVqdGFzLgorCisgICAgICAgICogaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xs
aW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNoYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Js
b2NrLWNoYWluLmh0bWw6IEFkZGVkLgorCiAyMDIwLTAzLTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNpZGV3YXlzIGppZ2dsZXMgd2hlbiBzY3Jv
bGxpbmcgdGhlIHNoZWx2ZXMgb24gYmV0YS5tdXNpYy5hcHBsZS5jb20KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5p
bmdibG9jay1jaGFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nz
b20tdmlldy9zY3JvbGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4YzdkY2YxYWVjMzY4ZWI1NjA3YWMyYjAxYzZjMjU5MjIwZDMzZjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jc3MvY3Nzb20tdmlldy9zY3Jv
bGxpbnRvdmlldy1jb250YWluaW5nYmxvY2stY2hhaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorCitQQVNTIHNjcm9sbEludG9WaWV3IHNob3VsZCBub3Qgc2Nyb2xsIGFuY2VzdG9yIG92
ZXJmbG93OnNjcm9sbCBlbGVtZW50cyB0aGF0IGFyZSBub3QgY29udGFpbmluZyBibG9jayBhbmNl
c3RvcnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12aWV3
L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3NzL2Nzc29tLXZpZXcvc2Nyb2xsaW50b3ZpZXctY29udGFpbmluZ2Jsb2NrLWNo
YWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNmZDVmNjk5ZDcxN2Y0NjM1OTgyZDc2ZTI1N2NkMmM0Nzc4
MTdhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nzcy9jc3NvbS12
aWV3L3Njcm9sbGludG92aWV3LWNvbnRhaW5pbmdibG9jay1jaGFpbi5odG1sCkBAIC0wLDAgKzEs
NjMgQEAKKzwhRE9DVFlQRSBIVE1MPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorPHRpdGxlPnNjcm9sbEludG9WaWV3IHNob3VsZCBvbmx5IGFkanVz
dCBzY3JvbGxlcnMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW48L3RpdGxlPgorPHN0eWxl
PgorICAgIC5zY3JvbGxlciB7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICB9CisgICAgCisgICAgLmNv
bnRlbnRzIHsKKyAgICAgICAgd2lkdGg6IDIwMCU7CisgICAgICAgIGhlaWdodDogMzAwJTsKKyAg
ICB9CisKKyAgICAjaW5uZXIuc2Nyb2xsZXIgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgIG1hcmdpbi10b3A6IDI1MHB4OworICAgICAgICBtYXJnaW4tbGVmdDogMTAwcHg7
CisgICAgICAgIHdpZHRoOiA0MDBweAorICAgIH0KKyAgICAKKyAgICAjcmV2ZWFsIHsKKyAgICAg
ICAgbWFyZ2luLXRvcDogNDAwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cisg
ICAgfSAgICAKKzwvc3R5bGU+Cis8ZGl2IGlkPSJjb250YWluZXIiPgorICAgIDxkaXYgaWQ9Im91
dGVyIiBjbGFzcz0ic2Nyb2xsZXIiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50cyI+Cisg
ICAgICAgICAgICBUaGlzIHNob3VsZCBub3Qgc2Nyb2xsCisgICAgICAgICAgICA8ZGl2IGlkPSJp
bm5lciIgY2xhc3M9ImlubmVyIHNjcm9sbGVyIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSJjb250ZW50cyI+CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzCisgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9InJldmVhbCI+CisgICAgICAgICAgICAgICAgICAgICAgICBSZXZlYWwg
bWUKKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPHNjcmlw
dD4KK2FkZF9jb21wbGV0aW9uX2NhbGxiYWNrKCgpID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250YWluZXIiKS5yZW1vdmUoKSk7CisKK3Rlc3QodCA9PiB7CisgICAgdmFyIHJldmVhbCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXZlYWwnKTsKKworICAgIHZhciBvdXRlclNjcm9s
bGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dGVyJyk7CisgICAgdmFyIGlubmVyU2Ny
b2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5uZXInKTsKKyAgICB2YXIgaW5pdGlh
bE91dGVyVG9wID0gb3V0ZXJTY3JvbGxlci5zY3JvbGxUb3A7CisgICAgdmFyIGluaXRpYWxJbm5l
clRvcCA9IGlubmVyU2Nyb2xsZXIuc2Nyb2xsVG9wOworCisgICAgYXNzZXJ0X2VxdWFscyhpbml0
aWFsT3V0ZXJUb3AsIDApOworICAgIGFzc2VydF9lcXVhbHMoaW5pdGlhbElubmVyVG9wLCAwKTsK
KworICAgIHJldmVhbC5zY3JvbGxJbnRvVmlldyh7YmxvY2s6ICJzdGFydCIsIGlubGluZTogInN0
YXJ0In0pOworCisgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoaW5uZXJTY3JvbGxlci5zY3JvbGxU
b3AsIDQxOCwgNCk7CisgICAgYXNzZXJ0X2VxdWFscyhvdXRlclNjcm9sbGVyLnNjcm9sbFRvcCwg
MCk7Cit9LCAic2Nyb2xsSW50b1ZpZXcgc2hvdWxkIG5vdCBzY3JvbGwgYW5jZXN0b3Igb3ZlcmZs
b3c6c2Nyb2xsIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBjb250YWluaW5nIGJsb2NrIGFuY2VzdG9y
cyIpOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>