<?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>240906</bug_id>
          
          <creation_ts>2022-05-25 06:42:54 -0700</creation_ts>
          <short_desc>Make shouldApplyContainment methods more flexible</short_desc>
          <delta_ts>2022-08-11 22:14:46 -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>CSS</component>
          <version>Safari 15</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>243534</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1871712</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-25 06:42:54 -0700</bug_when>
    <thetext>In r293943 some shouldApplyContainment methods were optimised, however
they are not flexible enough to deal with the content-visibility feature,
which in certain cases can influence containment. So to be flexible use
lambdas that return a bool instead of relying on effectiveContainment().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871716</commentid>
    <comment_count>1</comment_count>
      <attachid>459757</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-25 07:18:26 -0700</bug_when>
    <thetext>Created attachment 459757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871818</commentid>
    <comment_count>2</comment_count>
      <attachid>459757</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-05-25 13:31:07 -0700</bug_when>
    <thetext>Comment on attachment 459757
Patch

These functions are hot because they fall into the &quot;containingBlock&quot; code path. Does this affect performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871826</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-25 14:00:55 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 459757 [details]
&gt; Patch
&gt; 
&gt; These functions are hot because they fall into the &quot;containingBlock&quot; code
&gt; path. Does this affect performance?

Are you thinking of canContainFixedPositionObjects/canContainAbsolutelyPositionedObjects or more?
If the lambda&apos;s are nicely inlined the performance should be the same, but I never checked efficiency for that (I guess I could try godbold.org tomorrow). An older patch used bool parameters for shouldApplyLayoutOrPaintContainment/shouldApplySizeOrStyleContainment, to me it does not look as nice as lambdas, but it pretty much guarantees same perf as we have now, and it works to support content-visibility later on, so I do not mind using that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1871974</commentid>
    <comment_count>4</comment_count>
      <attachid>459779</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-26 02:18:17 -0700</bug_when>
    <thetext>Created attachment 459779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872011</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-05-26 08:09:13 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #3)
&gt; (In reply to Simon Fraser (smfr) from comment #2)
&gt; &gt; Comment on attachment 459757 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; These functions are hot because they fall into the &quot;containingBlock&quot; code
&gt; &gt; path. Does this affect performance?
&gt; 
&gt; Are you thinking of
&gt; canContainFixedPositionObjects/canContainAbsolutelyPositionedObjects or more?
&gt; If the lambda&apos;s are nicely inlined the performance should be the same, but I
&gt; never checked efficiency for that (I guess I could try godbold.org
&gt; tomorrow). An older patch used bool parameters for
&gt; shouldApplyLayoutOrPaintContainment/shouldApplySizeOrStyleContainment, to me
&gt; it does not look as nice as lambdas, but it pretty much guarantees same perf
&gt; as we have now, and it works to support content-visibility later on, so I do
&gt; not mind using that instead.

From checking godbolt.org output the lambdas do seem to generate quite some extra instructions, so I changed the patch to use boolean parameters instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873290</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-06-01 06:43:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/94218126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874695</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-06-08 05:15:20 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1874696</commentid>
    <comment_count>8</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-06-08 05:18:26 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1887716</commentid>
    <comment_count>9</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-07-29 11:28:03 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/2857</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890228</commentid>
    <comment_count>10</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-08-10 01:25:55 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1890514</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-11 00:40:00 -0700</bug_when>
    <thetext>Committed 253324@main (6c79952a8e99): &lt;https://commits.webkit.org/253324@main&gt;

Reviewed commits have been landed. Closing PR #3182 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459757</attachid>
            <date>2022-05-25 07:18:26 -0700</date>
            <delta_ts>2022-05-26 02:18:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240906-20220525151825.patch</filename>
            <type>text/plain</type>
            <size>14138</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">RnJvbSBlMTZmZWFkZTY2MWE1ZjM3Zjg3ODFlOWIyZmY5ZTljZjJjOWQ3NjQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2IgQnVpcyA8cmJ1aXNAaWdhbGlhLmNvbT4KRGF0ZTogV2Vk
LCAyNSBNYXkgMjAyMiAxNDozOTo0MCArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc2hvdWxk
QXBwbHlDb250YWlubWVudCBtZXRob2RzIG1vcmUgZmxleGlibGUKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA5MDYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKSW4gcjI5Mzk0MyBzb21lIHNob3VsZEFwcGx5Q29udGFpbm1lbnQgbWV0aG9kcyB3ZXJlIG9w
dGltaXNlZCwgaG93ZXZlcgp0aGV5IGFyZSBub3QgZmxleGlibGUgZW5vdWdoIHRvIGRlYWwgd2l0
aCB0aGUgY29udGVudC12aXNpYmlsaXR5IGZlYXR1cmUsCndoaWNoIGluIGNlcnRhaW4gY2FzZXMg
Y2FuIGluZmx1ZW5jZSBjb250YWlubWVudC4gU28gdG8gYmUgZmxleGlibGUgdXNlCmxhbWJkYXMg
dGhhdCByZXR1cm4gYSBib29sIGluc3RlYWQgb2YgcmVseWluZyBvbiBlZmZlY3RpdmVDb250YWlu
bWVudCgpLgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgooV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CihXZWJDb3JlOjpSZW5k
ZXJFbGVtZW50OjpjYW5Db250YWluRml4ZWRQb3NpdGlvbk9iamVjdHMgY29uc3QpOgooV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0cyBj
b25zdCk6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUxheW91dE9yUGFpbnRD
b250YWlubWVudCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseVNp
emVPclN0eWxlQ29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hv
dWxkQXBwbHlMYXlvdXRDb250YWlubWVudCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpzaG91bGRBcHBseVBhaW50Q29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVy
RWxlbWVudDo6c2hvdWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlTdHlsZUNvbnRhaW5tZW50IGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5QW55Q29udGFpbm1lbnQgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKFdlYkNvcmU6OlJl
bmRlckdyaWQ6OmxheW91dEJsb2NrKToKKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0
eVRyYWNrc0ZvckF1dG9SZXBlYXQgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oOgooV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbnRhaW5zSW5saW5l
U2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29udGFpbnNTaXplT3JJbmxpbmVT
aXplIGNvbnN0KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
ICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggICAg
ICB8IDY1ICsrKysrKysrKysrKysrLS0tLS0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAgICAgICAgfCAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggIHwgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCAy
MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCBkNmI2NWUxY2EwZDAuLmRhOGZjMmUzY2IzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yMjYwLDcgKzIyNjAsNyBAQCB2b2lkIFJlbmRlckJsb2Nr
OjpvZmZzZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYgb2Zmc2V0KSBjb25zdAogdm9pZCBSZW5k
ZXJCbG9jazo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFjaGlsZHJlbklubGluZSgpKTsKLSAgICBhdXRvIHNob3VsZElnbm9yZURlc2NlbmRhbnRD
b250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50
KHsgQ29udGFpbm1lbnQ6OlNpemUsIENvbnRhaW5tZW50OjpJbmxpbmVTaXplIH0pOworICAgIGF1
dG8gc2hvdWxkSWdub3JlRGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBzaG91bGRB
cHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpOwogICAgIGlmICghc2hvdWxkSWdub3Jl
RGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGgpCiAgICAgICAgIGNvbXB1dGVCbG9ja1By
ZWZlcnJlZExvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGEx
ZDkxMGEzYmMzZC4uYThkY2Y1MGFhOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjphZGp1c3RJbnRyaW5zaWNMb2dpY2FsV2lkdGhzRm9yQ29sdW1ucyhMYXlvdXRVbml0JiBt
aW5Mb2dpCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxX
aWR0aCkgY29uc3QKIHsKLSAgICBhdXRvIHNob3VsZElnbm9yZURlc2NlbmRhbnRDb250ZW50Rm9y
TG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KHsgQ29udGFp
bm1lbnQ6OlNpemUsIENvbnRhaW5tZW50OjpJbmxpbmVTaXplIH0pOworICAgIGF1dG8gc2hvdWxk
SWdub3JlRGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBzaG91bGRBcHBseVNpemVP
cklubGluZVNpemVDb250YWlubWVudCgpOwogICAgIGlmICghc2hvdWxkSWdub3JlRGVzY2VuZGFu
dENvbnRlbnRGb3JMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkp
CiAgICAgICAgICAgICBjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhtaW5Mb2dp
Y2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAppbmRleCA5ZGFiOWY3MTExNWIuLjFjMjM0NjEyNThhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC04OSwxMSArODksMTMgQEAgcHVibGlj
OgogICAgIGJvb2wgc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgpIGNvbnN0OwogICAgIGJv
b2wgc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSBjb25zdDsKICAgICBib29sIHNob3VsZEFw
cGx5SW5saW5lU2l6ZUNvbnRhaW5tZW50KCkgY29uc3Q7CisgICAgYm9vbCBzaG91bGRBcHBseVNp
emVPcklubGluZVNpemVDb250YWlubWVudCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQXBwbHlT
dHlsZUNvbnRhaW5tZW50KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVBhaW50Q29udGFp
bm1lbnQoKSBjb25zdDsKICAgICBib29sIHNob3VsZEFwcGx5QW55Q29udGFpbm1lbnQoKSBjb25z
dDsKLSAgICBib29sIHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRhaW5tZW50KE9wdGlvblNl
dDxDb250YWlubWVudD4pIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNv
bnRhaW5tZW50KE9wdGlvblNldDxDb250YWlubWVudD4pIGNvbnN0OworICAgIGJvb2wgc2hvdWxk
QXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoKSBjb25zdDsKKyAgICBib29sIHNob3VsZEFw
cGx5TGF5b3V0T3JQYWludENvbnRhaW5tZW50KEZ1bmN0aW9uPGJvb2woKT4mJiBjb250YWlubWVu
dEFwcGxpZXMpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5t
ZW50KEZ1bmN0aW9uPGJvb2woKT4mJiBjb250YWlubWVudEFwcGxpZXMpIGNvbnN0OwogCiAgICAg
Q29sb3Igc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzZWxlY3Rpb25Qc2V1ZG9TdHlsZSgpIGNvbnN0OwpAQCAtNDc1
LDcgKzQ3Nyw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5GaXhlZFBv
c2l0aW9uT2JqZWN0cygpIGNvbnN0CiAgICAgICAgIHx8IChjYW5Fc3RhYmxpc2hDb250YWluaW5n
QmxvY2tXaXRoVHJhbnNmb3JtKCkgJiYgaGFzVHJhbnNmb3JtKCkpCiAgICAgICAgIHx8IChpc1Jl
bmRlckJsb2NrKCkgJiYgc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYgc3R5bGUoKS53aWxsQ2hhbmdl
KCktPmNyZWF0ZXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIC8vIEZJ
WE1FOiB3aWxsLWNoYW5nZSBzaG91bGQgY3JlYXRlIGNvbnRhaW5pbmcgYmxvY2tzIG9uIGlubGlu
ZSBib3hlcyAoYnVnIDIyNTAzNSkKICAgICAgICAgfHwgaXNTVkdGb3JlaWduT2JqZWN0KCkKLSAg
ICAgICAgfHwgc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoeyBDb250YWlubWVu
dDo6TGF5b3V0LCBDb250YWlubWVudDo6UGFpbnQgfSk7CisgICAgICAgIHx8IHNob3VsZEFwcGx5
TGF5b3V0T3JQYWludENvbnRhaW5tZW50KCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlckVsZW1l
bnQ6OmNhbkNvbnRhaW5BYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVjdHMoKSBjb25zdApAQCAtNDg1
LDcgKzQ4Nyw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5BYnNvbHV0
ZWx5UG9zaXRpb25lZE9iamVjdHMoKSBjb25zdAogICAgICAgICB8fCAoY2FuRXN0YWJsaXNoQ29u
dGFpbmluZ0Jsb2NrV2l0aFRyYW5zZm9ybSgpICYmIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eSgpKQogICAgICAgICB8fCAoaXNSZW5kZXJCbG9jaygpICYmIHN0eWxlKCkud2lsbENoYW5nZSgp
ICYmIHN0eWxlKCkud2lsbENoYW5nZSgpLT5jcmVhdGVzQ29udGFpbmluZ0Jsb2NrRm9yQWJzb2x1
dGVseVBvc2l0aW9uZWQoKSkgLy8gRklYTUU6IHdpbGwtY2hhbmdlIHNob3VsZCBjcmVhdGUgY29u
dGFpbmluZyBibG9ja3Mgb24gaW5saW5lIGJveGVzIChidWcgMjI1MDM1KQogICAgICAgICB8fCBp
c1NWR0ZvcmVpZ25PYmplY3QoKQotICAgICAgICB8fCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRD
b250YWlubWVudCh7IENvbnRhaW5tZW50OjpMYXlvdXQsIENvbnRhaW5tZW50OjpQYWludCB9KTsK
KyAgICAgICAgfHwgc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoKTsKIH0KIAog
aW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuRXN0YWJsaXNoQ29udGFpbmluZ0Jsb2NrV2l0
aFRyYW5zZm9ybSgpIGNvbnN0CkBAIC00OTMsNDUgKzQ5NSw3OCBAQCBpbmxpbmUgYm9vbCBSZW5k
ZXJFbGVtZW50OjpjYW5Fc3RhYmxpc2hDb250YWluaW5nQmxvY2tXaXRoVHJhbnNmb3JtKCkgY29u
c3QKICAgICByZXR1cm4gaXNSZW5kZXJCbG9jaygpIHx8IChpc1RhYmxlUGFydCgpICYmICFpc1Jl
bmRlclRhYmxlQ29sKCkpOwogfQogCi1pbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRB
cHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChPcHRpb25TZXQ8Q29udGFpbm1lbnQ+IG9wdGlv
bnMpIGNvbnN0CitpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUxheW91dE9y
UGFpbnRDb250YWlubWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlKCkuZWZmZWN0aXZl
Q29udGFpbm1lbnQoKS5jb250YWluc0FueShvcHRpb25zKSAmJiAoIWlzSW5saW5lKCkgfHwgaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYmICghaXNUYWJsZVBhcnQo
KSB8fCBpc1JlbmRlckJsb2NrRmxvdygpKTsKKyAgICBhdXRvIGNvbnRhaW5tZW50QXBwbGllcyA9
IFsmXSB7CisgICAgICAgIHJldHVybiBzdHlsZSgpLmVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29u
dGFpbnNBbnkoeyBDb250YWlubWVudDo6TGF5b3V0LCBDb250YWlubWVudDo6UGFpbnQgfSk7Cisg
ICAgfTsKKyAgICByZXR1cm4gc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoV1RG
TW92ZShjb250YWlubWVudEFwcGxpZXMpKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVu
dDo6c2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoRnVuY3Rpb248Ym9vbCgpPiYm
IGNvbnRhaW5tZW50QXBwbGllcykgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGFpbm1lbnRBcHBs
aWVzKCkgJiYgKCFpc0lubGluZSgpIHx8IGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgJiYgIWlz
UnVieVRleHQoKSAmJiAoIWlzVGFibGVQYXJ0KCkgfHwgaXNSZW5kZXJCbG9ja0Zsb3coKSk7CiB9
CiAKLWlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250
YWlubWVudChPcHRpb25TZXQ8Q29udGFpbm1lbnQ+IG9wdGlvbnMpIGNvbnN0CitpbmxpbmUgYm9v
bCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoRnVuY3Rp
b248Ym9vbCgpPiYmIGNvbnRhaW5tZW50QXBwbGllcykgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5
bGUoKS5lZmZlY3RpdmVDb250YWlubWVudCgpLmNvbnRhaW5zQW55KG9wdGlvbnMpICYmICghaXNJ
bmxpbmUoKSB8fCBpc0F0b21pY0lubGluZUxldmVsQm94KCkpICYmICFpc1J1YnlUZXh0KCkgJiYg
KCFpc1RhYmxlUGFydCgpIHx8IGlzVGFibGVDYXB0aW9uKCkpICYmICFpc1RhYmxlKCk7CisgICAg
cmV0dXJuIGNvbnRhaW5tZW50QXBwbGllcygpICYmICghaXNJbmxpbmUoKSB8fCBpc0F0b21pY0lu
bGluZUxldmVsQm94KCkpICYmICFpc1J1YnlUZXh0KCkgJiYgKCFpc1RhYmxlUGFydCgpIHx8IGlz
VGFibGVDYXB0aW9uKCkpICYmICFpc1RhYmxlKCk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6OnNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKSBjb25zdAogewotICAgIHJldHVy
biBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChDb250YWlubWVudDo6TGF5b3V0
KTsKKyAgICBhdXRvIGNvbnRhaW5tZW50QXBwbGllcyA9IFsmXSB7CisgICAgICAgIHJldHVybiBz
dHlsZSgpLmVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFpbnMoQ29udGFpbm1lbnQ6OkxheW91
dCk7CisgICAgfTsKKyAgICByZXR1cm4gc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1l
bnQoV1RGTW92ZShjb250YWlubWVudEFwcGxpZXMpKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVy
RWxlbWVudDo6c2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoQ29udGFpbm1lbnQ6OlBhaW50
KTsKKyAgICBhdXRvIGNvbnRhaW5tZW50QXBwbGllcyA9IFsmXSB7CisgICAgICAgIHJldHVybiBz
dHlsZSgpLmVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFpbnMoQ29udGFpbm1lbnQ6OlBhaW50
KTsKKyAgICB9OworICAgIHJldHVybiBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVu
dChXVEZNb3ZlKGNvbnRhaW5tZW50QXBwbGllcykpOwogfQogCiBpbmxpbmUgYm9vbCBSZW5kZXJF
bGVtZW50OjpzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudChDb250YWlubWVudDo6U2l6ZSk7Cisg
ICAgYXV0byBjb250YWlubWVudEFwcGxpZXMgPSBbJl0geworICAgICAgICByZXR1cm4gc3R5bGUo
KS5jb250YWluc1NpemUoKTsKKyAgICB9OworICAgIHJldHVybiBzaG91bGRBcHBseVNpemVPclN0
eWxlQ29udGFpbm1lbnQoV1RGTW92ZShjb250YWlubWVudEFwcGxpZXMpKTsKIH0KIAogaW5saW5l
IGJvb2wgUmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQoKSBj
b25zdAogewotICAgIHJldHVybiBzaG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoQ29u
dGFpbm1lbnQ6OklubGluZVNpemUpOworICAgIGF1dG8gY29udGFpbm1lbnRBcHBsaWVzID0gWyZd
IHsKKyAgICAgICAgcmV0dXJuIHN0eWxlKCkuY29udGFpbnNJbmxpbmVTaXplKCk7CisgICAgfTsK
KyAgICByZXR1cm4gc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KFdURk1vdmUoY29u
dGFpbm1lbnRBcHBsaWVzKSk7Cit9CisKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3Vs
ZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkgY29uc3QKK3sKKyAgICBhdXRvIGNv
bnRhaW5tZW50QXBwbGllcyA9IFsmXSB7CisgICAgICAgIHJldHVybiBzdHlsZSgpLmNvbnRhaW5z
U2l6ZU9ySW5saW5lU2l6ZSgpOworICAgIH07CisgICAgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZU9y
U3R5bGVDb250YWlubWVudChXVEZNb3ZlKGNvbnRhaW5tZW50QXBwbGllcykpOwogfQogCiBpbmxp
bmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseVN0eWxlQ29udGFpbm1lbnQoKSBjb25z
dAogewotICAgIHJldHVybiBzaG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoQ29udGFp
bm1lbnQ6OlN0eWxlKTsKKyAgICBhdXRvIGNvbnRhaW5tZW50QXBwbGllcyA9IFsmXSB7CisgICAg
ICAgIHJldHVybiBzdHlsZSgpLmNvbnRhaW5zU3R5bGUoKTsKKyAgICB9OworICAgIHJldHVybiBz
aG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoV1RGTW92ZShjb250YWlubWVudEFwcGxp
ZXMpKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlBbnlDb250
YWlubWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENv
bnRhaW5tZW50KHsgQ29udGFpbm1lbnQ6OkxheW91dCwgQ29udGFpbm1lbnQ6OlBhaW50IH0pCi0g
ICAgICAgIHx8IHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudCh7IENvbnRhaW5tZW50
OjpTaXplLCBDb250YWlubWVudDo6SW5saW5lU2l6ZSwgQ29udGFpbm1lbnQ6OlN0eWxlIH0pOwor
ICAgIGF1dG8gY29udGFpbm1lbnRBcHBsaWVzID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHN0eWxl
KCkuZWZmZWN0aXZlQ29udGFpbm1lbnQoKS5jb250YWluc0FueSh7IENvbnRhaW5tZW50OjpTaXpl
LCBDb250YWlubWVudDo6SW5saW5lU2l6ZSwgQ29udGFpbm1lbnQ6OlN0eWxlIH0pOworICAgIH07
CisgICAgcmV0dXJuIHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRhaW5tZW50KCkgfHwgc2hv
dWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KFdURk1vdmUoY29udGFpbm1lbnRBcHBsaWVz
KSk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZXNHcm91cEZvclN0eWxl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDI1ZjFlMmI3MTY1MC4uY2FkOTllOTMwODJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdAogICAgICAgICBtaW5Mb2dp
Y2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAgICAgfTsKIAotICAgIGF1dG8gc2hvdWxkSWdu
b3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplT3JTdHls
ZUNvbnRhaW5tZW50KHsgQ29udGFpbm1lbnQ6OlNpemUsIENvbnRhaW5tZW50OjpJbmxpbmVTaXpl
IH0pOworICAgIGF1dG8gc2hvdWxkSWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRo
ID0gc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAgICBpZiAoc2hv
dWxkSWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKSB7CiAgICAgICAgIGFkZFNj
cm9sbGJhcldpZHRoKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAppbmRleCAzZGRhNmZiZDczY2UuLjdkMzJhMGJkNmQ4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQg
UmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
KQogICAgICAgICAvLyBsb2dpY2FsIHdpZHRoIGlzIGFsd2F5cyBkZWZpbml0ZSBhcyB0aGUgYWJv
dmUgY2FsbCB0byB1cGRhdGVMb2dpY2FsV2lkdGgoKSBwcm9wZXJseSByZXNvbHZlcyBpbnRyaW5z
aWMgCiAgICAgICAgIC8vIHNpemVzLiBXZSBjYW5ub3QgZG8gdGhlIHNhbWUgZm9yIGhlaWdodHMg
dGhvdWdoIGJlY2F1c2UgbWFueSBjb2RlIHBhdGhzIGluc2lkZSB1cGRhdGVMb2dpY2FsSGVpZ2h0
KCkgcmVxdWlyZSAKICAgICAgICAgLy8gYSBwcmV2aW91cyBjYWxsIHRvIHNldExvZ2ljYWxIZWln
aHQoKSB0byByZXNvbHZlIGhlaWdodHMgcHJvcGVybHkgKGxpa2UgZm9yIHBvc2l0aW9uZWQgaXRl
bXMgZm9yIGV4YW1wbGUpLgotICAgICAgICBhdXRvIHNob3VsZElnbm9yZUdyaWRJdGVtQ29udGVu
dEZvckxvZ2ljYWxXaWR0aCA9IHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudCh7IENv
bnRhaW5tZW50OjpTaXplLCBDb250YWlubWVudDo6SW5saW5lU2l6ZSB9KTsKKyAgICAgICAgYXV0
byBzaG91bGRJZ25vcmVHcmlkSXRlbUNvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBzaG91bGRBcHBs
eVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpOwogICAgICAgICBpZiAoc2hvdWxkSWdub3Jl
R3JpZEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKQogICAgICAgICAgICAgY29tcHV0ZVRyYWNr
U2l6ZXNGb3JJbmRlZmluaXRlU2l6ZShtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLCBGb3JDb2x1bW5z
KTsKICAgICAgICAgZWxzZQpAQCAtNjQzLDcgKzY0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxPcmRl
cmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1Jl
cGVhCiAgICAgdW5zaWduZWQgZmlyc3RBdXRvUmVwZWF0VHJhY2sgPSBpbnNlcnRpb25Qb2ludCAr
IGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoZGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBsYXN0QXV0
b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRUcmFj
a3MoZGlyZWN0aW9uKTsKIAotICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSB8fCBzaG91bGRB
cHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoeyBDb250YWlubWVudDo6U2l6ZSwgQ29udGFpbm1l
bnQ6OklubGluZVNpemUgfSkpIHsKKyAgICBpZiAoIWdyaWQuaGFzR3JpZEl0ZW1zKCkgfHwgc2hv
dWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkgewogICAgICAgICBlbXB0eVRy
YWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrOyB0cmFja0lu
ZGV4IDwgbGFzdEF1dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQogICAgICAgICAgICAgZW1w
dHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggY2YxY2I3ZGJlZWNhLi5iZjNkYjFhNjZlOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01
NDAsNiArNTQwLDggQEAgcHVibGljOgogICAgIE9wdGlvblNldDxDb250YWlubWVudD4gZWZmZWN0
aXZlQ29udGFpbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5l
ZmZlY3RpdmVDb250YWlubWVudCgpOyB9CiAgICAgYm9vbCBjb250YWluc0xheW91dCgpIGNvbnN0
IHsgcmV0dXJuIGVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFpbnMoQ29udGFpbm1lbnQ6Okxh
eW91dCk7IH0KICAgICBib29sIGNvbnRhaW5zU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVmZmVjdGl2
ZUNvbnRhaW5tZW50KCkuY29udGFpbnMoQ29udGFpbm1lbnQ6OlNpemUpOyB9CisgICAgYm9vbCBj
b250YWluc0lubGluZVNpemUoKSBjb25zdCB7IHJldHVybiBlZmZlY3RpdmVDb250YWlubWVudCgp
LmNvbnRhaW5zKENvbnRhaW5tZW50OjpJbmxpbmVTaXplKTsgfQorICAgIGJvb2wgY29udGFpbnNT
aXplT3JJbmxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gZWZmZWN0aXZlQ29udGFpbm1lbnQoKS5j
b250YWluc0FueSh7IENvbnRhaW5tZW50OjpTaXplLCBDb250YWlubWVudDo6SW5saW5lU2l6ZSB9
KTsgfQogICAgIGJvb2wgY29udGFpbnNTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGVmZmVjdGl2ZUNv
bnRhaW5tZW50KCkuY29udGFpbnMoQ29udGFpbm1lbnQ6OlN0eWxlKTsgfQogICAgIGJvb2wgY29u
dGFpbnNQYWludCgpIGNvbnN0IHsgcmV0dXJuIGVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFp
bnMoQ29udGFpbm1lbnQ6OlBhaW50KTsgfQogICAgIENvbnRhaW5lclR5cGUgY29udGFpbmVyVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRhaW5lclR5cGU+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmNvbnRhaW5lclR5cGUpOyB9Ci0tIAoyLjMwLjEgKEFwcGxlIEdpdC0xMzAp
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459779</attachid>
            <date>2022-05-26 02:18:17 -0700</date>
            <delta_ts>2022-06-27 07:49:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240906-20220526101816.patch</filename>
            <type>text/plain</type>
            <size>13811</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">RnJvbSA4NzQ3ZjMzOGI2N2U5YjdiNjIzN2FmMTI2NDVhYzYxMzY4OTk3ZWZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2IgQnVpcyA8cmJ1aXNAaWdhbGlhLmNvbT4KRGF0ZTogVGh1
LCAyNiBNYXkgMjAyMiAxMDoxMDoxNyArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc2hvdWxk
QXBwbHlDb250YWlubWVudCBtZXRob2RzIG1vcmUgZmxleGlibGUKIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDA5MDYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKSW4gcjI5Mzk0MyBzb21lIHNob3VsZEFwcGx5Q29udGFpbm1lbnQgbWV0aG9kcyB3ZXJlIG9w
dGltaXNlZCwgaG93ZXZlcgp0aGV5IGFyZSBub3QgZmxleGlibGUgZW5vdWdoIHRvIGRlYWwgd2l0
aCB0aGUgY29udGVudC12aXNpYmlsaXR5IGZlYXR1cmUsCndoaWNoIGluIGNlcnRhaW4gY2FzZXMg
Y2FuIGluZmx1ZW5jZSBjb250YWlubWVudC4gU28gdG8gYmUgZmxleGlibGUgdXNlCmJvb2xlYW4g
cGFyYW1ldGVycyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gZWZmZWN0aXZlQ29udGFpbm1lbnQoKSBk
aXJlY3RseS4KCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25zdCk6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0KToK
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgooV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6Y2FuQ29udGFpbkZpeGVkUG9zaXRpb25PYmplY3RzIGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5BYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVjdHMg
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlMYXlvdXRPclBhaW50
Q29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlT
aXplT3JTdHlsZUNvbnRhaW5tZW50IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNo
b3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyRWxlbWVu
dDo6c2hvdWxkQXBwbHlQYWludENvbnRhaW5tZW50IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnNob3VsZEFwcGx5SW5saW5lU2l6ZUNvbnRhaW5tZW50IGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50
IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5U3R5bGVDb250YWlu
bWVudCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUFueUNvbnRh
aW5tZW50IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
OgooV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0b1JlcGVhdCBj
b25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CihX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6Y29udGFpbnNJbmxpbmVTaXplIGNvbnN0KToKKFdlYkNvcmU6
OlJlbmRlclN0eWxlOjpjb250YWluc1NpemVPcklubGluZVNpemUgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmNvbnRhaW5zTGF5b3V0T3JQYWludCBjb25zdCk6Ci0tLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwICB8ICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oICAgICAgfCA0MiArKysrKysrKysrKystLS0tLS0t
CiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgMiArLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwICAgICAgIHwgIDQgKy0KIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oICB8ICAzICsrCiA2IGZp
bGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGQ2YjY1ZTFjYTBkMC4uZGE4ZmMy
ZTNjYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIy
NjAsNyArMjI2MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6Om9mZnNldEZvckNvbnRlbnRzKExheW91
dFBvaW50JiBvZmZzZXQpIGNvbnN0CiB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1h
eExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWNoaWxkcmVuSW5saW5lKCkpOwot
ICAgIGF1dG8gc2hvdWxkSWdub3JlRGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBz
aG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoeyBDb250YWlubWVudDo6U2l6ZSwgQ29u
dGFpbm1lbnQ6OklubGluZVNpemUgfSk7CisgICAgYXV0byBzaG91bGRJZ25vcmVEZXNjZW5kYW50
Q29udGVudEZvckxvZ2ljYWxXaWR0aCA9IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRh
aW5tZW50KCk7CiAgICAgaWYgKCFzaG91bGRJZ25vcmVEZXNjZW5kYW50Q29udGVudEZvckxvZ2lj
YWxXaWR0aCkKICAgICAgICAgY29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyhtaW5M
b2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggYTFkOTEwYTNiYzNkLi5hOGRjZjUwYWE5Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0z
NDUsNyArMzQ1LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEludHJpbnNpY0xvZ2lj
YWxXaWR0aHNGb3JDb2x1bW5zKExheW91dFVuaXQmIG1pbkxvZ2kKIAogdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdAogewotICAgIGF1dG8g
c2hvdWxkSWdub3JlRGVzY2VuZGFudENvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBzaG91bGRBcHBs
eVNpemVPclN0eWxlQ29udGFpbm1lbnQoeyBDb250YWlubWVudDo6U2l6ZSwgQ29udGFpbm1lbnQ6
OklubGluZVNpemUgfSk7CisgICAgYXV0byBzaG91bGRJZ25vcmVEZXNjZW5kYW50Q29udGVudEZv
ckxvZ2ljYWxXaWR0aCA9IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCk7
CiAgICAgaWYgKCFzaG91bGRJZ25vcmVEZXNjZW5kYW50Q29udGVudEZvckxvZ2ljYWxXaWR0aCkg
ewogICAgICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgICAgIGNvbXB1dGVJbmxp
bmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IDlkYWI5Zjcx
MTE1Yi4uNjJhOGE2MTA5NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKQEAgLTg5LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRBcHBseUxh
eW91dENvbnRhaW5tZW50KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVNpemVDb250YWlu
bWVudCgpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQXBwbHlJbmxpbmVTaXplQ29udGFpbm1lbnQo
KSBjb25zdDsKKyAgICBib29sIHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50
KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlQ29udGFpbm1lbnQoKSBjb25zdDsK
ICAgICBib29sIHNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpIGNvbnN0OworICAgIGJvb2wg
c2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoKSBjb25zdDsKICAgICBib29sIHNo
b3VsZEFwcGx5QW55Q29udGFpbm1lbnQoKSBjb25zdDsKLSAgICBib29sIHNob3VsZEFwcGx5TGF5
b3V0T3JQYWludENvbnRhaW5tZW50KE9wdGlvblNldDxDb250YWlubWVudD4pIGNvbnN0OwotICAg
IGJvb2wgc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KE9wdGlvblNldDxDb250YWlu
bWVudD4pIGNvbnN0OwogCiAgICAgQ29sb3Igc2VsZWN0aW9uQ29sb3IoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzZWxlY3Rpb25Qc2V1ZG9T
dHlsZSgpIGNvbnN0OwpAQCAtMzQ4LDYgKzM0OCw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIGNy
ZWF0ZXNOZXdGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBlc3Rh
Ymxpc2hlc0luZGVwZW5kZW50Rm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdDsKIAorICAgIGJvb2wg
c2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoYm9vbCkgY29uc3Q7CisgICAgYm9v
bCBzaG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoYm9vbCkgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgUmVuZGVyRWxlbWVudChDb250YWluZXJOb2RlJiwgUmVuZGVyU3R5bGUmJiwgQmFz
ZVR5cGVGbGFncyk7CiAgICAgdm9pZCBub2RlKCkgY29uc3QgPSBkZWxldGU7CkBAIC00NzUsNyAr
NDc4LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkZpeGVkUG9zaXRp
b25PYmplY3RzKCkgY29uc3QKICAgICAgICAgfHwgKGNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9j
a1dpdGhUcmFuc2Zvcm0oKSAmJiBoYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgfHwgKGlzUmVuZGVy
QmxvY2soKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKS0+
Y3JlYXRlc0NvbnRhaW5pbmdCbG9ja0Zvck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkgLy8gRklYTUU6
IHdpbGwtY2hhbmdlIHNob3VsZCBjcmVhdGUgY29udGFpbmluZyBibG9ja3Mgb24gaW5saW5lIGJv
eGVzIChidWcgMjI1MDM1KQogICAgICAgICB8fCBpc1NWR0ZvcmVpZ25PYmplY3QoKQotICAgICAg
ICB8fCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudCh7IENvbnRhaW5tZW50OjpM
YXlvdXQsIENvbnRhaW5tZW50OjpQYWludCB9KTsKKyAgICAgICAgfHwgc2hvdWxkQXBwbHlMYXlv
dXRPclBhaW50Q29udGFpbm1lbnQoKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6
Y2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0CkBAIC00ODUsNyAr
NDg4LDcgQEAgaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQ
b3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0CiAgICAgICAgIHx8IChjYW5Fc3RhYmxpc2hDb250YWlu
aW5nQmxvY2tXaXRoVHJhbnNmb3JtKCkgJiYgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkp
CiAgICAgICAgIHx8IChpc1JlbmRlckJsb2NrKCkgJiYgc3R5bGUoKS53aWxsQ2hhbmdlKCkgJiYg
c3R5bGUoKS53aWxsQ2hhbmdlKCktPmNyZWF0ZXNDb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZWx5
UG9zaXRpb25lZCgpKSAvLyBGSVhNRTogd2lsbC1jaGFuZ2Ugc2hvdWxkIGNyZWF0ZSBjb250YWlu
aW5nIGJsb2NrcyBvbiBpbmxpbmUgYm94ZXMgKGJ1ZyAyMjUwMzUpCiAgICAgICAgIHx8IGlzU1ZH
Rm9yZWlnbk9iamVjdCgpCi0gICAgICAgIHx8IHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRh
aW5tZW50KHsgQ29udGFpbm1lbnQ6OkxheW91dCwgQ29udGFpbm1lbnQ6OlBhaW50IH0pOworICAg
ICAgICB8fCBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudCgpOwogfQogCiBpbmxp
bmUgYm9vbCBSZW5kZXJFbGVtZW50OjpjYW5Fc3RhYmxpc2hDb250YWluaW5nQmxvY2tXaXRoVHJh
bnNmb3JtKCkgY29uc3QKQEAgLTQ5Myw0NSArNDk2LDU0IEBAIGlubGluZSBib29sIFJlbmRlckVs
ZW1lbnQ6OmNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dpdGhUcmFuc2Zvcm0oKSBjb25zdAog
ICAgIHJldHVybiBpc1JlbmRlckJsb2NrKCkgfHwgKGlzVGFibGVQYXJ0KCkgJiYgIWlzUmVuZGVy
VGFibGVDb2woKSk7CiB9CiAKLWlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5
TGF5b3V0T3JQYWludENvbnRhaW5tZW50KE9wdGlvblNldDxDb250YWlubWVudD4gb3B0aW9ucykg
Y29uc3QKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5TGF5b3V0T3JQYWlu
dENvbnRhaW5tZW50KGJvb2wgY29udGFpbnNBY2NvcmRpbmdUb1N0eWxlKSBjb25zdAogewotICAg
IHJldHVybiBzdHlsZSgpLmVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFpbnNBbnkob3B0aW9u
cykgJiYgKCFpc0lubGluZSgpIHx8IGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgJiYgIWlzUnVi
eVRleHQoKSAmJiAoIWlzVGFibGVQYXJ0KCkgfHwgaXNSZW5kZXJCbG9ja0Zsb3coKSk7CisgICAg
cmV0dXJuIGNvbnRhaW5zQWNjb3JkaW5nVG9TdHlsZSAmJiAoIWlzSW5saW5lKCkgfHwgaXNBdG9t
aWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYmICghaXNUYWJsZVBhcnQoKSB8
fCBpc1JlbmRlckJsb2NrRmxvdygpKTsKIH0KIAotaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6
c2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KE9wdGlvblNldDxDb250YWlubWVudD4g
b3B0aW9ucykgY29uc3QKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5U2l6
ZU9yU3R5bGVDb250YWlubWVudChib29sIGNvbnRhaW5zQWNjb3JkaW5nVG9TdHlsZSkgY29uc3QK
IHsKLSAgICByZXR1cm4gc3R5bGUoKS5lZmZlY3RpdmVDb250YWlubWVudCgpLmNvbnRhaW5zQW55
KG9wdGlvbnMpICYmICghaXNJbmxpbmUoKSB8fCBpc0F0b21pY0lubGluZUxldmVsQm94KCkpICYm
ICFpc1J1YnlUZXh0KCkgJiYgKCFpc1RhYmxlUGFydCgpIHx8IGlzVGFibGVDYXB0aW9uKCkpICYm
ICFpc1RhYmxlKCk7CisgICAgcmV0dXJuIGNvbnRhaW5zQWNjb3JkaW5nVG9TdHlsZSAmJiAoIWlz
SW5saW5lKCkgfHwgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSAmJiAhaXNSdWJ5VGV4dCgpICYm
ICghaXNUYWJsZVBhcnQoKSB8fCBpc1RhYmxlQ2FwdGlvbigpKSAmJiAhaXNUYWJsZSgpOwogfQog
CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1l
bnQoQ29udGFpbm1lbnQ6OkxheW91dCk7CisgICAgcmV0dXJuIHNob3VsZEFwcGx5TGF5b3V0T3JQ
YWludENvbnRhaW5tZW50KHN0eWxlKCkuY29udGFpbnNMYXlvdXQoKSk7CiB9CiAKIGlubGluZSBi
b29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5UGFpbnRDb250YWlubWVudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRhaW5tZW50KENvbnRhaW5t
ZW50OjpQYWludCk7CisgICAgcmV0dXJuIHNob3VsZEFwcGx5TGF5b3V0T3JQYWludENvbnRhaW5t
ZW50KHN0eWxlKCkuY29udGFpbnNQYWludCgpKTsKK30KKworaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6c2hvdWxkQXBwbHlMYXlvdXRPclBhaW50Q29udGFpbm1lbnQoKSBjb25zdAoreworICAg
IHJldHVybiBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudChzdHlsZSgpLmNvbnRh
aW5zTGF5b3V0T3JQYWludCgpKTsKIH0KIAogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6c2hv
dWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzaG91bGRBcHBs
eVNpemVPclN0eWxlQ29udGFpbm1lbnQoQ29udGFpbm1lbnQ6OlNpemUpOworICAgIHJldHVybiBz
aG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoc3R5bGUoKS5jb250YWluc1NpemUoKSk7
CiB9CiAKIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OnNob3VsZEFwcGx5SW5saW5lU2l6ZUNv
bnRhaW5tZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNv
bnRhaW5tZW50KENvbnRhaW5tZW50OjpJbmxpbmVTaXplKTsKKyAgICByZXR1cm4gc2hvdWxkQXBw
bHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KHN0eWxlKCkuY29udGFpbnNJbmxpbmVTaXplKCkpOwor
fQorCitpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpzaG91bGRBcHBseVNpemVPcklubGluZVNp
emVDb250YWlubWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZU9yU3R5
bGVDb250YWlubWVudChzdHlsZSgpLmNvbnRhaW5zU2l6ZU9ySW5saW5lU2l6ZSgpKTsKIH0KIAog
aW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6c2hvdWxkQXBwbHlTdHlsZUNvbnRhaW5tZW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc2hvdWxkQXBwbHlTaXplT3JTdHlsZUNvbnRhaW5tZW50KENv
bnRhaW5tZW50OjpTdHlsZSk7CisgICAgcmV0dXJuIHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250
YWlubWVudChzdHlsZSgpLmNvbnRhaW5zU3R5bGUoKSk7CiB9CiAKIGlubGluZSBib29sIFJlbmRl
ckVsZW1lbnQ6OnNob3VsZEFwcGx5QW55Q29udGFpbm1lbnQoKSBjb25zdAogewotICAgIHJldHVy
biBzaG91bGRBcHBseUxheW91dE9yUGFpbnRDb250YWlubWVudCh7IENvbnRhaW5tZW50OjpMYXlv
dXQsIENvbnRhaW5tZW50OjpQYWludCB9KQotICAgICAgICB8fCBzaG91bGRBcHBseVNpemVPclN0
eWxlQ29udGFpbm1lbnQoeyBDb250YWlubWVudDo6U2l6ZSwgQ29udGFpbm1lbnQ6OklubGluZVNp
emUsIENvbnRhaW5tZW50OjpTdHlsZSB9KTsKKyAgICByZXR1cm4gc2hvdWxkQXBwbHlMYXlvdXRP
clBhaW50Q29udGFpbm1lbnQoKSB8fCBzaG91bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQo
c3R5bGUoKS5jb250YWluc1NpemVPcklubGluZVNpemUoKSB8fCBzdHlsZSgpLmNvbnRhaW5zU3R5
bGUoKSk7CiB9CiAKIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZXNHcm91cEZvclN0
eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDI1ZjFlMmI3MTY1MC4uY2FkOTllOTMwODJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmlu
c2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdAogICAgICAgICBtaW5M
b2dpY2FsV2lkdGggKz0gc2Nyb2xsYmFyV2lkdGg7CiAgICAgfTsKIAotICAgIGF1dG8gc2hvdWxk
SWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoID0gc2hvdWxkQXBwbHlTaXplT3JT
dHlsZUNvbnRhaW5tZW50KHsgQ29udGFpbm1lbnQ6OlNpemUsIENvbnRhaW5tZW50OjpJbmxpbmVT
aXplIH0pOworICAgIGF1dG8gc2hvdWxkSWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdp
ZHRoID0gc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAgICBpZiAo
c2hvdWxkSWdub3JlRmxleEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKSB7CiAgICAgICAgIGFk
ZFNjcm9sbGJhcldpZHRoKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCAzZGRhNmZiZDczY2UuLjdkMzJhMGJkNmQ4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZv
aWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRV
bml0KQogICAgICAgICAvLyBsb2dpY2FsIHdpZHRoIGlzIGFsd2F5cyBkZWZpbml0ZSBhcyB0aGUg
YWJvdmUgY2FsbCB0byB1cGRhdGVMb2dpY2FsV2lkdGgoKSBwcm9wZXJseSByZXNvbHZlcyBpbnRy
aW5zaWMgCiAgICAgICAgIC8vIHNpemVzLiBXZSBjYW5ub3QgZG8gdGhlIHNhbWUgZm9yIGhlaWdo
dHMgdGhvdWdoIGJlY2F1c2UgbWFueSBjb2RlIHBhdGhzIGluc2lkZSB1cGRhdGVMb2dpY2FsSGVp
Z2h0KCkgcmVxdWlyZSAKICAgICAgICAgLy8gYSBwcmV2aW91cyBjYWxsIHRvIHNldExvZ2ljYWxI
ZWlnaHQoKSB0byByZXNvbHZlIGhlaWdodHMgcHJvcGVybHkgKGxpa2UgZm9yIHBvc2l0aW9uZWQg
aXRlbXMgZm9yIGV4YW1wbGUpLgotICAgICAgICBhdXRvIHNob3VsZElnbm9yZUdyaWRJdGVtQ29u
dGVudEZvckxvZ2ljYWxXaWR0aCA9IHNob3VsZEFwcGx5U2l6ZU9yU3R5bGVDb250YWlubWVudCh7
IENvbnRhaW5tZW50OjpTaXplLCBDb250YWlubWVudDo6SW5saW5lU2l6ZSB9KTsKKyAgICAgICAg
YXV0byBzaG91bGRJZ25vcmVHcmlkSXRlbUNvbnRlbnRGb3JMb2dpY2FsV2lkdGggPSBzaG91bGRB
cHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpOwogICAgICAgICBpZiAoc2hvdWxkSWdu
b3JlR3JpZEl0ZW1Db250ZW50Rm9yTG9naWNhbFdpZHRoKQogICAgICAgICAgICAgY29tcHV0ZVRy
YWNrU2l6ZXNGb3JJbmRlZmluaXRlU2l6ZShtX3RyYWNrU2l6aW5nQWxnb3JpdGhtLCBGb3JDb2x1
bW5zKTsKICAgICAgICAgZWxzZQpAQCAtNjQzLDcgKzY0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxP
cmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJhY2tzRm9yQXV0
b1JlcGVhCiAgICAgdW5zaWduZWQgZmlyc3RBdXRvUmVwZWF0VHJhY2sgPSBpbnNlcnRpb25Qb2lu
dCArIGdyaWQuZXhwbGljaXRHcmlkU3RhcnQoZGlyZWN0aW9uKTsKICAgICB1bnNpZ25lZCBsYXN0
QXV0b1JlcGVhdFRyYWNrID0gZmlyc3RBdXRvUmVwZWF0VHJhY2sgKyBncmlkLmF1dG9SZXBlYXRU
cmFja3MoZGlyZWN0aW9uKTsKIAotICAgIGlmICghZ3JpZC5oYXNHcmlkSXRlbXMoKSB8fCBzaG91
bGRBcHBseVNpemVPclN0eWxlQ29udGFpbm1lbnQoeyBDb250YWlubWVudDo6U2l6ZSwgQ29udGFp
bm1lbnQ6OklubGluZVNpemUgfSkpIHsKKyAgICBpZiAoIWdyaWQuaGFzR3JpZEl0ZW1zKCkgfHwg
c2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkgewogICAgICAgICBlbXB0
eVRyYWNrSW5kZXhlcyA9IG1ha2VVbmlxdWU8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgdHJhY2tJbmRleCA9IGZpcnN0QXV0b1JlcGVhdFRyYWNrOyB0cmFj
a0luZGV4IDwgbGFzdEF1dG9SZXBlYXRUcmFjazsgKyt0cmFja0luZGV4KQogICAgICAgICAgICAg
ZW1wdHlUcmFja0luZGV4ZXMtPmFkZCh0cmFja0luZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggY2YxY2I3ZGJlZWNhLi45MTY5YmQxY2U0
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBA
IC01NDAsOCArNTQwLDExIEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8Q29udGFpbm1lbnQ+IGVm
ZmVjdGl2ZUNvbnRhaW5tZW50KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0
YS0+ZWZmZWN0aXZlQ29udGFpbm1lbnQoKTsgfQogICAgIGJvb2wgY29udGFpbnNMYXlvdXQoKSBj
b25zdCB7IHJldHVybiBlZmZlY3RpdmVDb250YWlubWVudCgpLmNvbnRhaW5zKENvbnRhaW5tZW50
OjpMYXlvdXQpOyB9CiAgICAgYm9vbCBjb250YWluc1NpemUoKSBjb25zdCB7IHJldHVybiBlZmZl
Y3RpdmVDb250YWlubWVudCgpLmNvbnRhaW5zKENvbnRhaW5tZW50OjpTaXplKTsgfQorICAgIGJv
b2wgY29udGFpbnNJbmxpbmVTaXplKCkgY29uc3QgeyByZXR1cm4gZWZmZWN0aXZlQ29udGFpbm1l
bnQoKS5jb250YWlucyhDb250YWlubWVudDo6SW5saW5lU2l6ZSk7IH0KKyAgICBib29sIGNvbnRh
aW5zU2l6ZU9ySW5saW5lU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGVmZmVjdGl2ZUNvbnRhaW5tZW50
KCkuY29udGFpbnNBbnkoeyBDb250YWlubWVudDo6U2l6ZSwgQ29udGFpbm1lbnQ6OklubGluZVNp
emUgfSk7IH0KICAgICBib29sIGNvbnRhaW5zU3R5bGUoKSBjb25zdCB7IHJldHVybiBlZmZlY3Rp
dmVDb250YWlubWVudCgpLmNvbnRhaW5zKENvbnRhaW5tZW50OjpTdHlsZSk7IH0KICAgICBib29s
IGNvbnRhaW5zUGFpbnQoKSBjb25zdCB7IHJldHVybiBlZmZlY3RpdmVDb250YWlubWVudCgpLmNv
bnRhaW5zKENvbnRhaW5tZW50OjpQYWludCk7IH0KKyAgICBib29sIGNvbnRhaW5zTGF5b3V0T3JQ
YWludCgpIGNvbnN0IHsgcmV0dXJuIGVmZmVjdGl2ZUNvbnRhaW5tZW50KCkuY29udGFpbnNBbnko
eyBDb250YWlubWVudDo6TGF5b3V0LCBDb250YWlubWVudDo6UGFpbnQgfSk7IH0KICAgICBDb250
YWluZXJUeXBlIGNvbnRhaW5lclR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250
YWluZXJUeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250YWluZXJUeXBlKTsgfQogICAg
IGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgY29udGFpbmVyTmFtZXMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250YWluZXJOYW1lczsgfQogCi0tIAoyLjMwLjEg
KEFwcGxlIEdpdC0xMzApCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>