<?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>231198</bug_id>
          
          <creation_ts>2021-10-04 16:22:40 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move tryBreaking*Run logic to standalone functions</short_desc>
          <delta_ts>2021-10-05 07:51:19 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</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>1800278</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-04 16:22:40 -0700</bug_when>
    <thetext>InlineContentBreaker::processOverflowingContentWithText is getting too large</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800284</commentid>
    <comment_count>1</comment_count>
      <attachid>440120</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-10-04 16:27:10 -0700</bug_when>
    <thetext>Created attachment 440120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800536</commentid>
    <comment_count>2</comment_count>
      <attachid>440120</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-10-05 06:42:24 -0700</bug_when>
    <thetext>Comment on attachment 440120
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:-367
&gt; -    auto tryBreakingNextOverflowingRuns = [&amp;]() -&gt; std::optional&lt;OverflowingTextContent::BreakingPosition&gt; {

:sadlambda:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800553</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-10-05 07:42:43 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 440120 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440120&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineContentBreaker.cpp:-367
&gt; &gt; -    auto tryBreakingNextOverflowingRuns = [&amp;]() -&gt; std::optional&lt;OverflowingTextContent::BreakingPosition&gt; {
&gt; 
&gt; :sadlambda:
:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800556</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-05 07:50:05 -0700</bug_when>
    <thetext>Committed r283549 (242514@main): &lt;https://commits.webkit.org/242514@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800558</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 07:51:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/83885877&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440120</attachid>
            <date>2021-10-04 16:27:10 -0700</date>
            <delta_ts>2021-10-05 07:50:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231198-20211004162709.patch</filename>
            <type>text/plain</type>
            <size>22144</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ3YmZlOGRlNDQxMGY1
YWExOTQyZWM4ZmJhOTVjY2FkOWNlMDgwMy4uYzg0ZWY4OTZiNWYxMjM4ZTcyNzI0YWE5YTY1MDU0
NmQyMDVkOGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTA0ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgdHJ5
QnJlYWtpbmcqUnVuIGxvZ2ljIHRvIHN0YW5kYWxvbmUgZnVuY3Rpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzExOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmxpbmVDb250ZW50QnJlYWtlcjo6
cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0IGlzIGdldHRpbmcgd2F5IHRvIGxvbmcg
YW5kIHdoaWxlIEkgbG92ZSBrZWVwaW5nIGxvZ2ljIGxpa2UgdGhpcyBsb2NhbCwgdGhlIHVwY29t
aW5nIFdvcmRCcmVhazo6QnJlYWtXb3JkIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgbWFrZXMgdGhp
cyBmdW5jdGlvbiBib2R5IG92ZXJsYXAgbXVsdGlwbGUgcGFnZXMuCisKKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OmZpbmRUcmFpbGluZ1J1bkluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6aXNXcmFwcGFibGVSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVDb250ZW50QnJlYWtlcjo6dHJ5QnJlYWtpbmdPdmVyZmxvd2luZ1J1biBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRCcmVha2VyOjp0cnlC
cmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdSdW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lQ29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nTmV4dE92ZXJmbG93
aW5nUnVucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUNvbnRlbnRC
cmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50V2l0aFRleHQgY29uc3QpOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oOgorCiAyMDIxLTEwLTA0ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEh5cGhlbmF0aW9uIHNob3VsZCBu
b3QgYmUgYXBwbGllZCB3aXRoICd3b3JkLWJyZWFrOiBicmVhay1hbGwnCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggZmE3YjFlMTg1ZDM0N2JhZDk5
ZWI3OWNmN2RlNjJkMzhjNDczNDFhZC4uY2ZlNjZlMjQ3NzcxNDJlODg5NjUyZDQxYjhlYmEwMDQ2
ZDM0MmZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNw
cApAQCAtMTU1LDIxICsxNTUsNiBAQCBJbmxpbmVDb250ZW50QnJlYWtlcjo6UmVzdWx0IElubGlu
ZUNvbnRlbnRCcmVha2VyOjpwcm9jZXNzSW5saW5lQ29udGVudChjb25zdCBDbwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0cnVjdCBPdmVyZmxvd2luZ1RleHRDb250ZW50IHsKLSAgICBzaXpl
X3QgcnVuSW5kZXggeyAwIH07IC8vIE92ZXJmbG93aW5nIHJ1biBpbmRleC4gVGhlcmUncyBhbHdh
eXMgYW4gb3ZlcmZsb3dpbmcgcnVuLgotICAgIHN0cnVjdCBCcmVha2luZ1Bvc2l0aW9uIHsKLSAg
ICAgICAgc2l6ZV90IHJ1bkluZGV4IHsgMCB9OwotICAgICAgICBzdHJ1Y3QgVHJhaWxpbmdDb250
ZW50IHsKLSAgICAgICAgICAgIC8vIFRyYWlsaW5nIGNvbnRlbnQgaXMgZWl0aGVyIHRoZSBydW4n
cyBsZWZ0IHNpZGUgKHdoZW4gd2UgYnJlYWsgdGhlIHJ1biBzb21ld2hlcmUgaW4gdGhlIG1pZGRs
ZSkgb3IgdGhlIHByZXZpb3VzIHJ1bi4KLSAgICAgICAgICAgIC8vIFNvbWV0aW1lcyB0aGUgYnJl
YWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBydW4s
IHNvIHRoZXJlJ3Mgbm8gdHJhaWxpbmcgcnVuIGF0IGFsbC4KLSAgICAgICAgICAgIGJvb2wgb3Zl
cmZsb3dzIHsgZmFsc2UgfTsKLSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lQ29udGVu
dEJyZWFrZXI6OlBhcnRpYWxSdW4+IHBhcnRpYWxSdW4geyB9OwotICAgICAgICB9OwotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFRyYWlsaW5nQ29udGVudD4gdHJhaWxpbmdDb250ZW50IHsgfTsKLSAg
ICB9OwotICAgIHN0ZDo6b3B0aW9uYWw8QnJlYWtpbmdQb3NpdGlvbj4gYnJlYWtpbmdQb3NpdGlv
biB7IH07IC8vIFdoZXJlIHdlIGFjdHVhbGx5IGJyZWFrIHRoaXMgb3ZlcmZsb3dpbmcgY29udGVu
dC4KLX07Ci0KIElubGluZUNvbnRlbnRCcmVha2VyOjpSZXN1bHQgSW5saW5lQ29udGVudEJyZWFr
ZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnQoY29uc3QgQ29udGludW91c0NvbnRlbnQmIG92
ZXJmbG93Q29udGVudCwgY29uc3QgTGluZVN0YXR1cyYgbGluZVN0YXR1cykgY29uc3QKIHsKICAg
ICBhdXRvIGNvbnRpbnVvdXNDb250ZW50ID0gQ29udGludW91c0NvbnRlbnQgeyBvdmVyZmxvd0Nv
bnRlbnQgfTsKQEAgLTI3NSwxMzAgKzI2MCwxNDAgQEAgSW5saW5lQ29udGVudEJyZWFrZXI6OlJl
c3VsdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudChjb24K
ICAgICByZXR1cm4geyBSZXN1bHQ6OkFjdGlvbjo6S2VlcCwgSXNFbmRPZkxpbmU6Ok5vIH07CiB9
CiAKLU92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NP
dmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjb25zdCBDb250aW51b3VzQ29udGVudCYgY29udGlu
dW91c0NvbnRlbnQsIGNvbnN0IExpbmVTdGF0dXMmIGxpbmVTdGF0dXMpIGNvbnN0CitzdGF0aWMg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpbmRUcmFpbGluZ1J1bkluZGV4KGNvbnN0IElubGluZUNv
bnRlbnRCcmVha2VyOjpDb250aW51b3VzQ29udGVudDo6UnVuTGlzdCYgcnVucywgc2l6ZV90IGJy
ZWFrYWJsZVJ1bkluZGV4KQogewotICAgIGF1dG8mIHJ1bnMgPSBjb250aW51b3VzQ29udGVudC5y
dW5zKCk7Ci0gICAgQVNTRVJUKCFydW5zLmlzRW1wdHkoKSk7CisgICAgLy8gV2hlbiB0aGUgYnJl
YWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcnVuLCB0aGUgdHJhaWxp
bmcgcnVuIGlzIHRoZSBwcmV2aW91cyBvbmUuCisgICAgaWYgKCFicmVha2FibGVSdW5JbmRleCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAvLyBUcnkgbm90IGJyZWFrIGNvbnRlbnQgYXQgaW5s
aW5lIGJveCBib3VuZGFyeQorICAgIC8vIGUuZy4gPHNwYW4+Zml0czwvc3Bhbj48c3Bhbj5vdmVy
Zmxvd3M8L3NwYW4+CisgICAgLy8gd2hlbiB0aGUgdGV4dCAib3ZlcmZsb3dzIiBjb21wbGV0ZWx5
IG92ZXJmbG93cywgbGV0J3MgYnJlYWsgdGhlIGNvbnRlbnQgcmlnaHQgYmVmb3JlIHRoZSAnPHNw
YW4+Jy4KKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHN1YnNlcXVlbnQgZW1wdHkgaW5s
aW5lIGJveGVzIGUuZy4KKyAgICBhdXRvIHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggPSBicmVha2Fi
bGVSdW5JbmRleCAtIDE7CisgICAgYXV0byBpc0F0SW5saW5lQm94ID0gcnVuc1t0cmFpbGluZ0Nh
bmRpZGF0ZUluZGV4XS5pbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKKyAgICByZXR1cm4g
IWlzQXRJbmxpbmVCb3ggPyB0cmFpbGluZ0NhbmRpZGF0ZUluZGV4IDogdHJhaWxpbmdDYW5kaWRh
dGVJbmRleCA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0cmFpbGluZ0NhbmRpZGF0ZUluZGV4IC0gMSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CiAKLSAgICBhdXRvIGlzQnJlYWthYmxlUnVuID0gW10gKGF1dG8m
IHJ1bikgewotICAgICAgICBBU1NFUlQocnVuLmlubGluZUl0ZW0uaXNUZXh0KCkgfHwgcnVuLmlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmlzSW5saW5lQm94
RW5kKCkgfHwgcnVuLmlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNJbWFnZSgpKTsKLSAgICAgICAg
aWYgKCFydW4uaW5saW5lSXRlbS5pc1RleHQoKSkgewotICAgICAgICAgICAgLy8gQ2FuJ3QgYnJl
YWsgaG9yaXpvbnRhbCBzcGFjaW5nIC0+IGUuZy4gPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6
IDEwMHB4OyI+dGV4dGNvbnRlbnQ8L3NwYW4+LCBpZiB0aGUgW2lubGluZSBib3ggZW5kXSBpcyB0
aGUgb3ZlcmZsb3duIGlubGluZSBpdGVtCi0gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGNoZWNr
IGlmIHRoZXJlJ3MgYW5vdGhlciBpbmxpbmUgaXRlbSBiZXlvbmQgdGhlIFtpbmxpbmUgYm94IGVu
ZF0gdG8gc3BsaXQuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CitzdGF0aWMgYm9vbCBpc1dy
YXBwYWJsZVJ1bihjb25zdCBJbmxpbmVDb250ZW50QnJlYWtlcjo6Q29udGludW91c0NvbnRlbnQ6
OlJ1biYgcnVuKQoreworICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSB8fCBydW4u
aW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkgfHwgcnVuLmlubGluZUl0ZW0uaXNJbmxpbmVC
b3hFbmQoKSB8fCBydW4uaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc0ltYWdlKCkpOworICAgIGlm
ICghcnVuLmlubGluZUl0ZW0uaXNUZXh0KCkpIHsKKyAgICAgICAgLy8gQ2FuJ3QgYnJlYWsgaG9y
aXpvbnRhbCBzcGFjaW5nIC0+IGUuZy4gPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6IDEwMHB4
OyI+dGV4dGNvbnRlbnQ8L3NwYW4+LCBpZiB0aGUgW2lubGluZSBib3ggZW5kXSBpcyB0aGUgb3Zl
cmZsb3duIGlubGluZSBpdGVtCisgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUn
cyBhbm90aGVyIGlubGluZSBpdGVtIGJleW9uZCB0aGUgW2lubGluZSBib3ggZW5kXSB0byBzcGxp
dC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBDaGVjayBpZiB0aGlzIHRl
eHQgcnVuIG5lZWRzIHRvIHN0YXkgb24gdGhlIGN1cnJlbnQgbGluZS4KKyAgICByZXR1cm4gSW5s
aW5lQ29udGVudEJyZWFrZXI6OmlzV3JhcHBpbmdBbGxvd2VkKHJ1bik7Cit9CisKK3N0ZDo6b3B0
aW9uYWw8SW5saW5lQ29udGVudEJyZWFrZXI6Ok92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFr
aW5nUG9zaXRpb24+IElubGluZUNvbnRlbnRCcmVha2VyOjp0cnlCcmVha2luZ092ZXJmbG93aW5n
UnVuKGNvbnN0IExpbmVTdGF0dXMmIGxpbmVTdGF0dXMsIGNvbnN0IENvbnRpbnVvdXNDb250ZW50
OjpSdW5MaXN0JiBydW5zLCBzaXplX3Qgb3ZlcmZsb3dpbmdSdW5JbmRleCwgSW5saW5lTGF5b3V0
VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkgY29uc3QKK3sKKyAgICBhdXRvIG92ZXJm
bG93aW5nUnVuID0gcnVuc1tvdmVyZmxvd2luZ1J1bkluZGV4XTsKKyAgICBpZiAoIWlzV3JhcHBh
YmxlUnVuKG92ZXJmbG93aW5nUnVuKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHBh
cnRpYWxPdmVyZmxvd2luZ1J1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihvdmVyZmxvd2luZ1J1biwg
bGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lk
dGgsIHN0ZDo6bWF4KDAuMGYsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGggLSBub25PdmVyZmxv
d2luZ0NvbnRlbnRXaWR0aCksIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91
c1Bvc2l0aW9uKTsKKyAgICBpZiAoIXBhcnRpYWxPdmVyZmxvd2luZ1J1bikKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICBpZiAocGFydGlhbE92ZXJmbG93aW5nUnVuLT5sZW5ndGgpCisgICAgICAg
IHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uIHsgb3ZlcmZs
b3dpbmdSdW5JbmRleCwgT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbjo6
VHJhaWxpbmdDb250ZW50IHsgZmFsc2UsIHBhcnRpYWxPdmVyZmxvd2luZ1J1biB9IH07CisgICAg
Ly8gV2hlbiB0aGUgYnJlYWtpbmcgcG9zaXRpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUg
cnVuLCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBwcmV2aW91cyBvbmUuCisgICAgaWYgKGF1dG8g
dHJhaWxpbmdSdW5JbmRleCA9IGZpbmRUcmFpbGluZ1J1bkluZGV4KHJ1bnMsIG92ZXJmbG93aW5n
UnVuSW5kZXgpKQorICAgICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtp
bmdQb3NpdGlvbiB7ICp0cmFpbGluZ1J1bkluZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpC
cmVha2luZ1Bvc2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyB9IH07CisgICAgLy8gU29tZXRpbWVz
IHdlIGNhbid0IGFjY29tbW9kYXRlIGV2ZW4gdGhlIHZlcnkgZmlyc3QgY2hhcmFjdGVyLgorICAg
IC8vIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHdoZW4gdGhlcmUncyBubyBicmVh
a2FibGUgcnVuIGluIHRoaXMgc2V0LgorICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50
OjpCcmVha2luZ1Bvc2l0aW9uIHsgfTsKK30KKworc3RkOjpvcHRpb25hbDxJbmxpbmVDb250ZW50
QnJlYWtlcjo6T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gSW5saW5l
Q29udGVudEJyZWFrZXI6OnRyeUJyZWFraW5nUHJldmlvdXNOb25PdmVyZmxvd2luZ1J1bnMoY29u
c3QgTGluZVN0YXR1cyYgbGluZVN0YXR1cywgY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxp
c3QmIHJ1bnMsIHNpemVfdCBvdmVyZmxvd2luZ1J1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IG5v
bk92ZXJmbG93aW5nQ29udGVudFdpZHRoKSBjb25zdAoreworICAgIGF1dG8gcHJldmlvdXNDb250
ZW50V2lkdGggPSBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aDsKKyAgICBmb3IgKGF1dG8gaW5k
ZXggPSBvdmVyZmxvd2luZ1J1bkluZGV4OyBpbmRleC0tOykgeworICAgICAgICBhdXRvJiBydW4g
PSBydW5zW2luZGV4XTsKKyAgICAgICAgcHJldmlvdXNDb250ZW50V2lkdGggLT0gcnVuLmxvZ2lj
YWxXaWR0aDsKKyAgICAgICAgaWYgKCFpc1dyYXBwYWJsZVJ1bihydW4pKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CisgICAg
ICAgIGlmIChhdXRvIHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVuLCBsaW5lU3Rh
dHVzLmNvbnRlbnRMb2dpY2FsUmlnaHQgKyBwcmV2aW91c0NvbnRlbnRXaWR0aCwgeyB9LCBsaW5l
U3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikpIHsKKyAgICAgICAg
ICAgIC8vIFdlIGtub3cgdGhpcyBydW4gZml0cywgc28gaWYgYnJlYWtpbmcgaXMgYWxsb3dlZCBv
biB0aGUgcnVuLCBpdCBzaG91bGQgcmV0dXJuIGEgbm9uLWVtcHR5IGxlZnQtc2lkZQorICAgICAg
ICAgICAgLy8gc2luY2UgaXQncyBlaXRoZXIgYXQgaHlwaGVuIHBvc2l0aW9uIG9yIHRoZSBlbnRp
cmUgcnVuIGlzIHJldHVybmVkLgorICAgICAgICAgICAgQVNTRVJUKHBhcnRpYWxSdW4tPmxlbmd0
aCk7CisgICAgICAgICAgICBhdXRvIHJ1bklzRnVsbHlBY2NvbW1vZGF0ZWQgPSBwYXJ0aWFsUnVu
LT5sZW5ndGggPT0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bi5pbmxpbmVJdGVtKS5sZW5n
dGgoKTsKKyAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2lu
Z1Bvc2l0aW9uIHsgaW5kZXgsIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRp
b246OlRyYWlsaW5nQ29udGVudCB7IGZhbHNlLCBydW5Jc0Z1bGx5QWNjb21tb2RhdGVkID8gc3Rk
OjpudWxsb3B0IDogcGFydGlhbFJ1biB9IH07CiAgICAgICAgIH0KLSAgICAgICAgLy8gQ2hlY2sg
aWYgdGhpcyB0ZXh0IHJ1biBuZWVkcyB0byBzdGF5IG9uIHRoZSBjdXJyZW50IGxpbmUuICAKLSAg
ICAgICAgcmV0dXJuIGlzV3JhcHBpbmdBbGxvd2VkKHJ1bik7Ci0gICAgfTsKKyAgICB9CisgICAg
cmV0dXJuIHsgfTsKK30KIAotICAgIGF1dG8gZmluZFRyYWlsaW5nUnVuSW5kZXggPSBbJl0gKGF1
dG8gYnJlYWthYmxlUnVuSW5kZXgpIC0+IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7Ci0gICAgICAg
IC8vIFdoZW4gdGhlIGJyZWFraW5nIHBvc2l0aW9uIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl
IHJ1biwgdGhlIHRyYWlsaW5nIHJ1biBpcyB0aGUgcHJldmlvdXMgb25lLgotICAgICAgICBpZiAo
IWJyZWFrYWJsZVJ1bkluZGV4KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgLy8g
VHJ5IG5vdCBicmVhayBjb250ZW50IGF0IGlubGluZSBib3ggYm91bmRhcnkKLSAgICAgICAgLy8g
ZS5nLiA8c3Bhbj5maXRzPC9zcGFuPjxzcGFuPm92ZXJmbG93czwvc3Bhbj4KLSAgICAgICAgLy8g
d2hlbiB0aGUgdGV4dCAib3ZlcmZsb3dzIiBjb21wbGV0ZWx5IG92ZXJmbG93cywgbGV0J3MgYnJl
YWsgdGhlIGNvbnRlbnQgcmlnaHQgYmVmb3JlIHRoZSAnPHNwYW4+Jy4KLSAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBzdWJzZXF1ZW50IGVtcHR5IGlubGluZSBib3hlcyBlLmcuCi0g
ICAgICAgIGF1dG8gdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA9IGJyZWFrYWJsZVJ1bkluZGV4IC0g
MTsKLSAgICAgICAgYXV0byBpc0F0SW5saW5lQm94ID0gcnVuc1t0cmFpbGluZ0NhbmRpZGF0ZUlu
ZGV4XS5pbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKLSAgICAgICAgcmV0dXJuICFpc0F0
SW5saW5lQm94ID8gdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA6IHRyYWlsaW5nQ2FuZGlkYXRlSW5k
ZXggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwodHJhaWxpbmdDYW5kaWRhdGVJbmRleCAtIDEpIDogc3Rk
OjpudWxsb3B0OwotICAgIH07CitzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpP
dmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbmxpbmVDb250ZW50QnJl
YWtlcjo6dHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zKGNvbnN0IExpbmVTdGF0dXMmIGxp
bmVTdGF0dXMsIGNvbnN0IENvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0JiBydW5zLCBzaXplX3Qg
b3ZlcmZsb3dpbmdSdW5JbmRleCwgSW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRl
bnRXaWR0aCkgY29uc3QKK3sKKyAgICBhdXRvIG5leHRDb250ZW50V2lkdGggPSBub25PdmVyZmxv
d2luZ0NvbnRlbnRXaWR0aCArIHJ1bnNbb3ZlcmZsb3dpbmdSdW5JbmRleF0ubG9naWNhbFdpZHRo
OworICAgIGZvciAoYXV0byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXggKyAxOyBpbmRleCA8
IHJ1bnMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhd
OworICAgICAgICBpZiAoIWlzV3JhcHBhYmxlUnVuKHJ1bikpIHsKKyAgICAgICAgICAgIG5leHRD
b250ZW50V2lkdGggKz0gcnVuLmxvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChydW4uaW5saW5lSXRlbS5pc1RleHQoKSk7CisgICAg
ICAgIC8vIFdlIGtub3cgdGhhdCB0aGlzIHJ1biBkb2VzIG5vdCBmaXQgdGhlIGF2YWlsYWJsZSBz
cGFjZS4gSWYgd2UgY2FuIGJyZWFrIGl0IGF0IGFueSBwb3NpdGlvbiwgbGV0J3MganVzdCB1c2Ug
dGhlIHN0YXJ0IG9mIHRoZSBydW4uCisgICAgICAgIGlmICh3b3JkQnJlYWtCZWhhdmlvcihydW4u
c3R5bGUsIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSA9
PSBXb3JkQnJlYWtSdWxlOjpBdEFyYml0cmFyeVBvc2l0aW9uKSB7CisgICAgICAgICAgICAvLyBX
ZSBtdXN0IGJlIG9uIGFuIGlubGluZSBib3ggYm91bmRhcnkuIExldCdzIGdvIGJhY2sgdG8gdGhl
IHJ1biBpbiBmcm9udCBvZiB0aGUgaW5saW5lIGJveCBzdGFydCBydW4uCisgICAgICAgICAgICAv
LyBlLmcuIDxzcGFuPnVuYnJlYWthYmxlX2FuZF9vdmVyZmxvdzxzcGFuIHN0eWxlPSJ3b3JkLWJy
ZWFrOiBicmVhay1hbGwiPmJyZWFrYWJsZTwvc3Bhbj4KKyAgICAgICAgICAgIC8vIFdlIGFyZSBh
dCAiYnJlYWthYmxlIiwgPHNwYW4+IGlzIGF0IGluZGV4IC0gMSBhbmQgdGhlIHRyYWlsaW5nIHJ1
biBpcyBhdCBpbmRleCAtIDIuCisgICAgICAgICAgICBBU1NFUlQocnVuc1tpbmRleCAtIDFdLmlu
bGluZUl0ZW0uaXNJbmxpbmVCb3hTdGFydCgpKTsKKyAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdS
dW5JbmRleCA9IGZpbmRUcmFpbGluZ1J1bkluZGV4KHJ1bnMsIGluZGV4KTsKKyAgICAgICAgICAg
IGlmICghdHJhaWxpbmdSdW5JbmRleCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgY29udGlu
dW91cyBjb250ZW50IGRpZCBub3QgZml0IGZyb20gdGhlIGdldC1nby4gTm8gdHJhaWxpbmcgcnVu
LgorICAgICAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2lu
Z1Bvc2l0aW9uIHsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEF0IHdvcnN0IHdl
IGFyZSBiYWNrIHRvIHRoZSBvdmVyZmxvd2luZyBydW4sIGxpa2UgaW4gdGhlIGV4YW1wbGUgYWJv
dmUuCisgICAgICAgICAgICBBU1NFUlQoKnRyYWlsaW5nUnVuSW5kZXggPj0gb3ZlcmZsb3dpbmdS
dW5JbmRleCk7CisgICAgICAgICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJl
YWtpbmdQb3NpdGlvbiB7ICp0cmFpbGluZ1J1bkluZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50
OjpCcmVha2luZ1Bvc2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyB0cnVlIH0gfTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1biwg
bGluZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbmV4dENvbnRlbnRXaWR0aCwgeyB9LCBs
aW5lU3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChwYXJ0aWFsUnVuLT5sZW5ndGgpOworICAgICAgICAgICAgLy8gV2UgbWFu
YWdlZCB0byBicmVhayB0aGlzIHRleHQgcnVuIG1pZCBjb250ZW50LiBJdCBoYXMgdG8gYmUgYSBo
eXBoZW4gYnJlYWsuCisgICAgICAgICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6
QnJlYWtpbmdQb3NpdGlvbiB7IGluZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2lu
Z1Bvc2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyB0cnVlLCBwYXJ0aWFsUnVuIH0gfTsKKyAgICAg
ICAgfQorICAgICAgICBuZXh0Q29udGVudFdpZHRoICs9IHJ1bi5sb2dpY2FsV2lkdGg7CisgICAg
fQorICAgIHJldHVybiB7IH07Cit9CisKK0lubGluZUNvbnRlbnRCcmVha2VyOjpPdmVyZmxvd2lu
Z1RleHRDb250ZW50IElubGluZUNvbnRlbnRCcmVha2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdDb250
ZW50V2l0aFRleHQoY29uc3QgQ29udGludW91c0NvbnRlbnQmIGNvbnRpbnVvdXNDb250ZW50LCBj
b25zdCBMaW5lU3RhdHVzJiBsaW5lU3RhdHVzKSBjb25zdAoreworICAgIGF1dG8mIHJ1bnMgPSBj
b250aW51b3VzQ29udGVudC5ydW5zKCk7CisgICAgQVNTRVJUKCFydW5zLmlzRW1wdHkoKSk7CiAK
LSAgICAvLyBDaGVjayB3aGVyZSB0aGUgb3ZlcmZsb3cgb2NjdXJzIGFuZCB1c2UgdGhlIGNvcnJl
c3BvbmRpbmcgc3R5bGUgdG8gZmlndXJlIG91dCB0aGUgYnJlYWtpbmcgYmVoYXZpb3VyLgorICAg
IC8vIENoZWNrIHdoZXJlIHRoZSBvdmVyZmxvdyBvY2N1cnMgYW5kIHVzZSB0aGUgY29ycmVzcG9u
ZGluZyBzdHlsZSB0byBmaWd1cmUgb3V0IHRoZSBicmVha2luZyBiZWhhdmlvci4KICAgICAvLyA8
c3BhbiBzdHlsZT0id29yZC1icmVhazogbm9ybWFsIj5maXJzdDwvc3Bhbj48c3BhbiBzdHlsZT0i
d29yZC1icmVhazogYnJlYWstYWxsIj5zZWNvbmQ8L3NwYW4+PHNwYW4gc3R5bGU9IndvcmQtYnJl
YWs6IG5vcm1hbCI+dGhpcmQ8L3NwYW4+CiAKICAgICAvLyBGaXJzdCBmaW5kIHRoZSBvdmVyZmxv
d2luZyBydW4uIAotICAgIGF1dG8gYWNjdW11bGF0ZWRDb250ZW50V2lkdGggPSBJbmxpbmVMYXlv
dXRVbml0IHsgfTsKKyAgICBhdXRvIG5vbk92ZXJmbG93aW5nQ29udGVudFdpZHRoID0gSW5saW5l
TGF5b3V0VW5pdCB7IH07CiAgICAgYXV0byBvdmVyZmxvd2luZ1J1bkluZGV4ID0gcnVucy5zaXpl
KCk7IAogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBydW5zLnNpemUoKTsgKytp
bmRleCkgewogICAgICAgICBhdXRvIHJ1bkxvZ2ljYWxXaWR0aCA9IHJ1bnNbaW5kZXhdLmxvZ2lj
YWxXaWR0aDsKLSAgICAgICAgaWYgKGFjY3VtdWxhdGVkQ29udGVudFdpZHRoICsgcnVuTG9naWNh
bFdpZHRoICA+IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpIHsKKyAgICAgICAgaWYgKG5vbk92
ZXJmbG93aW5nQ29udGVudFdpZHRoICsgcnVuTG9naWNhbFdpZHRoICA+IGxpbmVTdGF0dXMuYXZh
aWxhYmxlV2lkdGgpIHsKICAgICAgICAgICAgIG92ZXJmbG93aW5nUnVuSW5kZXggPSBpbmRleDsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGFjY3VtdWxhdGVkQ29udGVu
dFdpZHRoICs9IHJ1bkxvZ2ljYWxXaWR0aDsKKyAgICAgICAgbm9uT3ZlcmZsb3dpbmdDb250ZW50
V2lkdGggKz0gcnVuTG9naWNhbFdpZHRoOwogICAgIH0KICAgICAvLyBXZSBoYXZlIHRvIGhhdmUg
YW4gb3ZlcmZsb3dpbmcgcnVuLgogICAgIFJFTEVBU0VfQVNTRVJUKG92ZXJmbG93aW5nUnVuSW5k
ZXggPCBydW5zLnNpemUoKSk7CiAKLSAgICBhdXRvIHRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4g
PSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5n
UG9zaXRpb24+IHsKLSAgICAgICAgYXV0byBvdmVyZmxvd2luZ1J1biA9IHJ1bnNbb3ZlcmZsb3dp
bmdSdW5JbmRleF07Ci0gICAgICAgIGlmICghaXNCcmVha2FibGVSdW4ob3ZlcmZsb3dpbmdSdW4p
KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9
IHRyeUJyZWFraW5nVGV4dFJ1bihvdmVyZmxvd2luZ1J1biwgbGluZVN0YXR1cy5jb250ZW50TG9n
aWNhbFJpZ2h0ICsgYWNjdW11bGF0ZWRDb250ZW50V2lkdGgsIHN0ZDo6bWF4KDAuMGYsIGxpbmVT
dGF0dXMuYXZhaWxhYmxlV2lkdGggLSBhY2N1bXVsYXRlZENvbnRlbnRXaWR0aCksIGxpbmVTdGF0
dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9uKSkgewotICAgICAgICAgICAg
aWYgKHBhcnRpYWxSdW4tPmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3ZlcmZsb3dp
bmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbiB7IG92ZXJmbG93aW5nUnVuSW5kZXgsIE92
ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRpb246OlRyYWlsaW5nQ29udGVudCB7
IGZhbHNlLCBwYXJ0aWFsUnVuIH0gfTsKLSAgICAgICAgICAgIC8vIFdoZW4gdGhlIGJyZWFraW5n
IHBvc2l0aW9uIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJ1biwgdGhlIHRyYWlsaW5nIHJ1
biBpcyB0aGUgcHJldmlvdXMgb25lLgotICAgICAgICAgICAgaWYgKGF1dG8gdHJhaWxpbmdSdW5J
bmRleCA9IGZpbmRUcmFpbGluZ1J1bkluZGV4KG92ZXJmbG93aW5nUnVuSW5kZXgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9u
IHsgKnRyYWlsaW5nUnVuSW5kZXgsIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9z
aXRpb246OlRyYWlsaW5nQ29udGVudCB7IH0gfTsKLSAgICAgICAgICAgIC8vIFNvbWV0aW1lcyB3
ZSBjYW4ndCBhY2NvbW1vZGF0ZSBldmVuIHRoZSB2ZXJ5IGZpcnN0IGNoYXJhY3Rlci4gCi0gICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGVuIHRoZXJlJ3Mg
bm8gYnJlYWthYmxlIHJ1biBpbiB0aGlzIHNldC4KLSAgICAgICAgICAgIHJldHVybiBPdmVyZmxv
d2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uIHsgfTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4geyB9OwotICAgIH07CiAgICAgLy8gQ2hlY2sgaWYgd2UgYWN0dWFsbHkgYnJlYWsg
dGhpcyBydW4uCi0gICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9IHRyeUJyZWFraW5nT3Zl
cmZsb3dpbmdSdW4oKSkKKyAgICBpZiAoYXV0byBicmVha2luZ1Bvc2l0aW9uID0gdHJ5QnJlYWtp
bmdPdmVyZmxvd2luZ1J1bihsaW5lU3RhdHVzLCBydW5zLCBvdmVyZmxvd2luZ1J1bkluZGV4LCBu
b25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkpCiAgICAgICAgIHJldHVybiB7IG92ZXJmbG93aW5n
UnVuSW5kZXgsIGJyZWFraW5nUG9zaXRpb24gfTsKIAotICAgIGF1dG8gdHJ5QnJlYWtpbmdQcmV2
aW91c05vbk92ZXJmbG93aW5nUnVucyA9IFsmXSgpIC0+IHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dp
bmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbj4gewotICAgICAgICBhdXRvIHByZXZpb3Vz
Q29udGVudFdpZHRoID0gYWNjdW11bGF0ZWRDb250ZW50V2lkdGg7Ci0gICAgICAgIGZvciAoYXV0
byBpbmRleCA9IG92ZXJmbG93aW5nUnVuSW5kZXg7IGluZGV4LS07KSB7Ci0gICAgICAgICAgICBh
dXRvJiBydW4gPSBydW5zW2luZGV4XTsKLSAgICAgICAgICAgIHByZXZpb3VzQ29udGVudFdpZHRo
IC09IHJ1bi5sb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICBpZiAoIWlzQnJlYWthYmxlUnVuKHJ1
bikpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBBU1NFUlQocnVuLmlu
bGluZUl0ZW0uaXNUZXh0KCkpOwotICAgICAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRy
eUJyZWFraW5nVGV4dFJ1bihydW4sIGxpbmVTdGF0dXMuY29udGVudExvZ2ljYWxSaWdodCArIHBy
ZXZpb3VzQ29udGVudFdpZHRoLCB7IH0sIGxpbmVTdGF0dXMuaGFzV3JhcE9wcG9ydHVuaXR5QXRQ
cmV2aW91c1Bvc2l0aW9uKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhpcyBydW4g
Zml0cywgc28gaWYgYnJlYWtpbmcgaXMgYWxsb3dlZCBvbiB0aGUgcnVuLCBpdCBzaG91bGQgcmV0
dXJuIGEgbm9uLWVtcHR5IGxlZnQtc2lkZQotICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3Mg
ZWl0aGVyIGF0IGh5cGhlbiBwb3NpdGlvbiBvciB0aGUgZW50aXJlIHJ1biBpcyByZXR1cm5lZC4K
LSAgICAgICAgICAgICAgICBBU1NFUlQocGFydGlhbFJ1bi0+bGVuZ3RoKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIHJ1bklzRnVsbHlBY2NvbW1vZGF0ZWQgPSBwYXJ0aWFsUnVuLT5sZW5ndGggPT0g
ZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bi5pbmxpbmVJdGVtKS5sZW5ndGgoKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlv
biB7IGluZGV4LCBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uOjpUcmFp
bGluZ0NvbnRlbnQgeyBmYWxzZSwgcnVuSXNGdWxseUFjY29tbW9kYXRlZCA/IHN0ZDo6bnVsbG9w
dCA6IHBhcnRpYWxSdW4gfSB9OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB7IH07Ci0gICAgfTsKICAgICAvLyBXZSBkaWQgbm90IG1hbmFnZSB0byBicmVhayB0aGUg
cnVuIHRoYXQgYWN0dWFsbHkgb3ZlcmZsb3dzIHRoZSBsaW5lLgogICAgIC8vIExldCdzIHRyeSB0
byBmaW5kIGEgcHJldmlvdXMgYnJlYWtpbmcgcG9zaXRpb24gc3RhcnRpbmcgZnJvbSB0aGUgb3Zl
cmZsb3dpbmcgcnVuLiBJdCBzdXJlbHkgZml0cy4KLSAgICBpZiAoYXV0byBicmVha2luZ1Bvc2l0
aW9uID0gdHJ5QnJlYWtpbmdQcmV2aW91c05vbk92ZXJmbG93aW5nUnVucygpKQorICAgIGlmIChh
dXRvIGJyZWFraW5nUG9zaXRpb24gPSB0cnlCcmVha2luZ1ByZXZpb3VzTm9uT3ZlcmZsb3dpbmdS
dW5zKGxpbmVTdGF0dXMsIHJ1bnMsIG92ZXJmbG93aW5nUnVuSW5kZXgsIG5vbk92ZXJmbG93aW5n
Q29udGVudFdpZHRoKSkKICAgICAgICAgcmV0dXJuIHsgb3ZlcmZsb3dpbmdSdW5JbmRleCwgYnJl
YWtpbmdQb3NpdGlvbiB9OwogCi0gICAgYXV0byB0cnlCcmVha2luZ05leHRPdmVyZmxvd2luZ1J1
bnMgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFr
aW5nUG9zaXRpb24+IHsKLSAgICAgICAgYXV0byBuZXh0Q29udGVudFdpZHRoID0gYWNjdW11bGF0
ZWRDb250ZW50V2lkdGggKyBydW5zW292ZXJmbG93aW5nUnVuSW5kZXhdLmxvZ2ljYWxXaWR0aDsK
LSAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gb3ZlcmZsb3dpbmdSdW5JbmRleCArIDE7IGluZGV4
IDwgcnVucy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNb
aW5kZXhdOwotICAgICAgICAgICAgaWYgKGlzQnJlYWthYmxlUnVuKHJ1bikpIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQocnVuLmlubGluZUl0ZW0uaXNUZXh0KCkpOwotICAgICAgICAgICAgICAg
IC8vIFdlIGtub3cgdGhhdCB0aGlzIHJ1biBkb2VzIG5vdCBmaXQgdGhlIGF2YWlsYWJsZSBzcGFj
ZS4gSWYgd2UgY2FuIGJyZWFrIGl0IGF0IGFueSBwb3NpdGlvbiwgbGV0J3MganVzdCB1c2UgdGhl
IHN0YXJ0IG9mIHRoZSBydW4uCi0gICAgICAgICAgICAgICAgaWYgKHdvcmRCcmVha0JlaGF2aW9y
KHJ1bi5zdHlsZSwgbGluZVN0YXR1cy5oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRp
b24pID09IFdvcmRCcmVha1J1bGU6OkF0QXJiaXRyYXJ5UG9zaXRpb24pIHsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgbXVzdCBiZSBvbiBhbiBpbmxpbmUgYm94IGJvdW5kYXJ5LiBMZXQncyBn
byBiYWNrIHRvIHRoZSBydW4gaW4gZnJvbnQgb2YgdGhlIGlubGluZSBib3ggc3RhcnQgcnVuLgot
ICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIDxzcGFuPnVuYnJlYWthYmxlX2FuZF9vdmVyZmxv
dzxzcGFuIHN0eWxlPSJ3b3JkLWJyZWFrOiBicmVhay1hbGwiPmJyZWFrYWJsZTwvc3Bhbj4KLSAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGF0ICJicmVha2FibGUiLCA8c3Bhbj4gaXMgYXQg
aW5kZXggLSAxIGFuZCB0aGUgdHJhaWxpbmcgcnVuIGlzIGF0IGluZGV4IC0gMi4KLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJ1bnNbaW5kZXggLSAxXS5pbmxpbmVJdGVtLmlzSW5saW5lQm94
U3RhcnQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdSdW5JbmRleCA9IGZp
bmRUcmFpbGluZ1J1bkluZGV4KGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0cmFp
bGluZ1J1bkluZGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvbnRpbnVv
dXMgY29udGVudCBkaWQgbm90IGZpdCBmcm9tIHRoZSBnZXQtZ28uIE5vIHRyYWlsaW5nIHJ1bi4K
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpC
cmVha2luZ1Bvc2l0aW9uIHsgfTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAvLyBBdCB3b3JzdCB3ZSBhcmUgYmFjayB0byB0aGUgb3ZlcmZsb3dpbmcgcnVuLCBs
aWtlIGluIHRoZSBleGFtcGxlIGFib3ZlLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKnRy
YWlsaW5nUnVuSW5kZXggPj0gb3ZlcmZsb3dpbmdSdW5JbmRleCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uIHsgKnRy
YWlsaW5nUnVuSW5kZXgsIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRpb246
OlRyYWlsaW5nQ29udGVudCB7IHRydWUgfSB9OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1biwgbGlu
ZVN0YXR1cy5jb250ZW50TG9naWNhbFJpZ2h0ICsgbmV4dENvbnRlbnRXaWR0aCwgeyB9LCBsaW5l
U3RhdHVzLmhhc1dyYXBPcHBvcnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHBhcnRpYWxSdW4tPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIFdlIG1hbmFnZWQgdG8gYnJlYWsgdGhpcyB0ZXh0IHJ1biBtaWQgY29udGVudC4gSXQg
aGFzIHRvIGJlIGEgaHlwaGVuIGJyZWFrLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3Zl
cmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbiB7IGluZGV4LCBPdmVyZmxvd2lu
Z1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyB0cnVlLCBw
YXJ0aWFsUnVuIH0gfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBuZXh0Q29udGVudFdpZHRoICs9IHJ1bi5sb2dpY2FsV2lkdGg7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICB9OwogICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0
aGF0IHRoZXJlJ3Mgbm8gYnJlYWthYmxlIHJ1biBhbGwgdGhlIHdheSB0byB0aGUgb3ZlcmZsb3dp
bmcgcnVuLgogICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGNoZWNrIGlmIGFueSBydW4gYWZ0ZXIgdGhl
IG92ZXJmbG93aW5nIGNvbnRlbnQgY2FuIGJyZWFrLgogICAgIC8vIGUuZy4gPHNwYW4+dGhpc19j
b250ZW50X292ZXJmbG93c19idXRfbm90X2JyZWFrYWJsZTxzcGFuPjxzcGFuIHN0eWxlPSJ3b3Jk
LWJyZWFrOiBicmVhay1hbGwiPmJ1dF90aGlzX2lzX2JyZWFrYWJsZTwvc3Bhbj4KLSAgICBpZiAo
YXV0byBicmVha2luZ1Bvc2l0aW9uID0gdHJ5QnJlYWtpbmdOZXh0T3ZlcmZsb3dpbmdSdW5zKCkp
CisgICAgaWYgKGF1dG8gYnJlYWtpbmdQb3NpdGlvbiA9IHRyeUJyZWFraW5nTmV4dE92ZXJmbG93
aW5nUnVucyhsaW5lU3RhdHVzLCBydW5zLCBvdmVyZmxvd2luZ1J1bkluZGV4LCBub25PdmVyZmxv
d2luZ0NvbnRlbnRXaWR0aCkpCiAgICAgICAgIHJldHVybiB7IG92ZXJmbG93aW5nUnVuSW5kZXgs
IGJyZWFraW5nUG9zaXRpb24gfTsKIAogICAgIC8vIEdpdmUgdXAsIHRoZXJlJ3Mgbm8gYnJlYWth
YmxlIHJ1biBpbiBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2Vy
LmgKaW5kZXggMzU3YzgwNWJmNWIyYTg2MGJlNDBlMThlZDU4NzA2ODU4MTlkZTU4YS4uOWZmMDYx
ZDY3YTNkMjBlOGM0YmJhMWZjYzRjODA1ZmY4YmExMThiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5oCkBAIC0zNCw3ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBJbmxpbmVJdGVtOwotc3RydWN0IE92
ZXJmbG93aW5nVGV4dENvbnRlbnQ7CiAKIGNsYXNzIElubGluZUNvbnRlbnRCcmVha2VyIHsKIHB1
YmxpYzoKQEAgLTExOSw4ICsxMTgsMjYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFJlc3Vs
dCBwcm9jZXNzT3ZlcmZsb3dpbmdDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiwgY29u
c3QgTGluZVN0YXR1cyYpIGNvbnN0OworCisgICAgc3RydWN0IE92ZXJmbG93aW5nVGV4dENvbnRl
bnQgeworICAgICAgICBzaXplX3QgcnVuSW5kZXggeyAwIH07IC8vIE92ZXJmbG93aW5nIHJ1biBp
bmRleC4gVGhlcmUncyBhbHdheXMgYW4gb3ZlcmZsb3dpbmcgcnVuLgorICAgICAgICBzdHJ1Y3Qg
QnJlYWtpbmdQb3NpdGlvbiB7CisgICAgICAgICAgICBzaXplX3QgcnVuSW5kZXggeyAwIH07Cisg
ICAgICAgICAgICBzdHJ1Y3QgVHJhaWxpbmdDb250ZW50IHsKKyAgICAgICAgICAgICAgICAvLyBU
cmFpbGluZyBjb250ZW50IGlzIGVpdGhlciB0aGUgcnVuJ3MgbGVmdCBzaWRlICh3aGVuIHdlIGJy
ZWFrIHRoZSBydW4gc29tZXdoZXJlIGluIHRoZSBtaWRkbGUpIG9yIHRoZSBwcmV2aW91cyBydW4u
CisgICAgICAgICAgICAgICAgLy8gU29tZXRpbWVzIHRoZSBicmVha2luZyBwb3NpdGlvbiBpcyBh
dCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGZpcnN0IHJ1biwgc28gdGhlcmUncyBubyB0cmFp
bGluZyBydW4gYXQgYWxsLgorICAgICAgICAgICAgICAgIGJvb2wgb3ZlcmZsb3dzIHsgZmFsc2Ug
fTsKKyAgICAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2VyOjpQ
YXJ0aWFsUnVuPiBwYXJ0aWFsUnVuIHsgfTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBz
dGQ6Om9wdGlvbmFsPFRyYWlsaW5nQ29udGVudD4gdHJhaWxpbmdDb250ZW50IHsgfTsKKyAgICAg
ICAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxCcmVha2luZ1Bvc2l0aW9uPiBicmVha2luZ1Bv
c2l0aW9uIHsgfTsgLy8gV2hlcmUgd2UgYWN0dWFsbHkgYnJlYWsgdGhpcyBvdmVyZmxvd2luZyBj
b250ZW50LgorICAgIH07CiAgICAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBwcm9jZXNzT3ZlcmZs
b3dpbmdDb250ZW50V2l0aFRleHQoY29uc3QgQ29udGludW91c0NvbnRlbnQmLCBjb25zdCBMaW5l
U3RhdHVzJikgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDxQYXJ0aWFsUnVuPiB0cnlCcmVha2lu
Z1RleHRSdW4oY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1biYgb3ZlcmZsb3dSdW4sIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbExlZnQsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4g
YXZhaWxhYmxlV2lkdGgsIGJvb2wgaGFzV3JhcE9wcG9ydHVuaXR5QXRQcmV2aW91c1Bvc2l0aW9u
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFr
aW5nUG9zaXRpb24+IHRyeUJyZWFraW5nT3ZlcmZsb3dpbmdSdW4oY29uc3QgTGluZVN0YXR1cyYs
IGNvbnN0IENvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0Jiwgc2l6ZV90IG92ZXJmbG93aW5nUnVu
SW5kZXgsIElubGluZUxheW91dFVuaXQgbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3Np
dGlvbj4gdHJ5QnJlYWtpbmdQcmV2aW91c05vbk92ZXJmbG93aW5nUnVucyhjb25zdCBMaW5lU3Rh
dHVzJiwgY29uc3QgQ29udGludW91c0NvbnRlbnQ6OlJ1bkxpc3QmLCBzaXplX3Qgb3ZlcmZsb3dp
bmdSdW5JbmRleCwgSW5saW5lTGF5b3V0VW5pdCBub25PdmVyZmxvd2luZ0NvbnRlbnRXaWR0aCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2lu
Z1Bvc2l0aW9uPiB0cnlCcmVha2luZ05leHRPdmVyZmxvd2luZ1J1bnMoY29uc3QgTGluZVN0YXR1
cyYsIGNvbnN0IENvbnRpbnVvdXNDb250ZW50OjpSdW5MaXN0Jiwgc2l6ZV90IG92ZXJmbG93aW5n
UnVuSW5kZXgsIElubGluZUxheW91dFVuaXQgbm9uT3ZlcmZsb3dpbmdDb250ZW50V2lkdGgpIGNv
bnN0OwogCiAgICAgZW51bSBjbGFzcyBXb3JkQnJlYWtSdWxlIHsKICAgICAgICAgQXRBcmJpdHJh
cnlQb3NpdGlvbiAgICAgICAgPSAxIDw8IDAsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>