<?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>231477</bug_id>
          
          <creation_ts>2021-10-09 08:39:47 -0700</creation_ts>
          <short_desc>Refactor RenderSVGBlock</short_desc>
          <delta_ts>2021-10-15 10:15:36 -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>SVG</component>
          <version>Other</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="Rob Buis">rbuis</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1802386</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-09 08:39:47 -0700</bug_when>
    <thetext>Refactor RenderSVGBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802387</commentid>
    <comment_count>1</comment_count>
      <attachid>440710</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-09 08:41:04 -0700</bug_when>
    <thetext>Created attachment 440710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803229</commentid>
    <comment_count>2</comment_count>
      <attachid>440957</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-12 10:52:07 -0700</bug_when>
    <thetext>Created attachment 440957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803672</commentid>
    <comment_count>3</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-13 01:43:19 -0700</bug_when>
    <thetext>Niko, hopefully this would just be a small rebase for your accelerated SVG work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804185</commentid>
    <comment_count>4</comment_count>
      <attachid>440957</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2021-10-14 01:16:03 -0700</bug_when>
    <thetext>Comment on attachment 440957
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGBlock.h:41
&gt; +    LayoutRect clippedOverflowRect(const RenderLayerModelObject* repaintContainer, VisibleRectContext) const final;
&gt; +    std::optional&lt;FloatRect&gt; computeFloatVisibleRectInContainer(const FloatRect&amp;, const RenderLayerModelObject* container, VisibleRectContext) const final;
&gt; +    std::optional&lt;LayoutRect&gt; computeVisibleRectInContainer(const LayoutRect&amp;, const RenderLayerModelObject* container, VisibleRectContext) const final;
&gt; +
&gt; +    void mapLocalToContainer(const RenderLayerModelObject* ancestorContainer, TransformState&amp;, OptionSet&lt;MapCoordinatesMode&gt;, bool* wasFixed) const final;
&gt; +    const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&amp;) const final;
&gt; +
&gt; +    bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction) final;

Some of these methods used to be &quot;private&quot; in one of the subclasses, and now all are public. Do we really need all of them to be public or we can restrict this somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804200</commentid>
    <comment_count>5</comment_count>
      <attachid>441198</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-10-14 02:46:42 -0700</bug_when>
    <thetext>Created attachment 441198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804210</commentid>
    <comment_count>6</comment_count>
      <attachid>441198</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2021-10-14 04:04:03 -0700</bug_when>
    <thetext>Comment on attachment 441198
Patch

Nice catch, thanks for removing the duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804230</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-14 05:37:37 -0700</bug_when>
    <thetext>Committed r284154 (242974@main): &lt;https://commits.webkit.org/242974@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441198.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804231</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-14 05:38:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/84251970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804879</commentid>
    <comment_count>9</comment_count>
      <attachid>441198</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-15 10:15:36 -0700</bug_when>
    <thetext>Comment on attachment 441198
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Refactor common code from RenderSVGBlock subclasses into RenderSVGBlock.

Why are we doing this refactoring? I would expect few words here saying something like &quot;Work towards bug #...&quot; or a link to the blocked bug in the &quot;Blocks&quot; editor.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440710</attachid>
            <date>2021-10-09 08:41:04 -0700</date>
            <delta_ts>2021-10-12 10:52:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231477-20211009164103.patch</filename>
            <type>text/plain</type>
            <size>14367</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc5NWE0MTUzNjlmYjMy
NGEwOGI4ZWNmMWQ0YjAwZmQwZTcyYzk4Ni4uOGQ0Y2U0YWJlODAxMTU2MzY2ZDIwNWQyNDRlY2I1
ODA0OTJiZTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEwLTA5ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyU1ZHQmxv
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQ3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUC4K
KworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OmNsaXBwZWRPdmVyZmxvd1JlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFp
bmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjpjb21wdXRlRmxv
YXRWaXNpYmxlUmVjdEluQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0Jsb2NrOjptYXBMb2NhbFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0Jsb2NrOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0Jsb2NrOjpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5D
b250YWluZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0UG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bWFw
TG9jYWxUb0NvbnRhaW5lciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRh
aW5lciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
Ojpub2RlQXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0Lmg6CisKIDIwMjEtMTAtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gc3VwcG9ydCByZW5kZXJpbmcgQXBwbGUgUGF5IGxv
Z29zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Js
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3Bw
CmluZGV4IDY0NmQzZDI1ZTg3ZDNhM2E0ZDBhZjg0YmYyOTczMDM5OGUyZjc4MTcuLmMxYWZjYTcw
Yjg3MDk4MGJhOTk5YmFlZDliZjYwMjc5MDgzNWNlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCkBAIC04OSw0ICs4OSwzOCBAQCB2b2lk
IFJlbmRlclNWR0Jsb2NrOjpjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBvbGRDbGllbnRBZnRl
ckVkZ2UsIGJvb2wgcmVjb21wdQogICAgIGFkZFZpc3VhbE92ZXJmbG93KHNuYXBwZWRJbnRSZWN0
KGJvcmRlclJlY3QpKTsKIH0KIAorTGF5b3V0UmVjdCBSZW5kZXJTVkdCbG9jazo6Y2xpcHBlZE92
ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KCp0aGlzLCByZXBhaW50Q29udGFpbmVy
KTsKK30KKworc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJTVkdCbG9jazo6Y29tcHV0
ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4
dCkgY29uc3QKK3sgICAKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYWRqdXN0ZWRSZWN0
ID0gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihyZWN0LCBjb250YWluZXIsIGNv
bnRleHQpOworICAgIGlmIChhZGp1c3RlZFJlY3QpCisgICAgICAgIHJldHVybiBlbmNsb3NpbmdM
YXlvdXRSZWN0KCphZGp1c3RlZFJlY3QpOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdCbG9jazo6Y29tcHV0ZUZsb2F0Vmlz
aWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVS
ZWN0SW5Db250YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7Cit9CisKK3Zv
aWQgUmVuZGVyU1ZHQmxvY2s6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1T
dGF0ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dAoreworICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoKnRoaXMsIGFu
Y2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOworfQorCitjb25zdCBS
ZW5kZXJPYmplY3QqIFJlbmRlclNWR0Jsb2NrOjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKK3sKKyAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcigqdGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlN
YXApOworfQorCitib29sIFJlbmRlclNWR0Jsb2NrOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBM
YXlvdXRQb2ludCYsIEhpdFRlc3RBY3Rpb24pCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggOTRkNjkzNjNjZmJjNDkyYzlmYzRhNWM5NzVkNjky
YjNkMDA5OTgzOS4uNzZkYjg2YTViZmEwYjkzZjc0YjZkZmY0MmY3OGMxMDYxZGQ4YThlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzEs
NiArMzEsMTUgQEAgY2xhc3MgUmVuZGVyU1ZHQmxvY2sgOiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93
IHsKIHB1YmxpYzoKICAgICBpbmxpbmUgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1l
bnQoKSBjb25zdDsKIAorICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRl
eHQpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxv
YXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5h
bDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29u
dGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBj
b250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4s
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAg
ICAgUmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAg
ICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IGI5
NmFiOGQxN2FhY2FlNzRjMzE1MTBmODM0OWM3ZWE1NTk2ZTE4N2QuLjU4MjJjOGQzMTk4NDUzM2Fj
YmZhYzliODA0ODk2Y2E3MmY4NmNjMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtOTUsMjQgKzk1LDYg
QEAgdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgIFJlbmRlckJsb2NrOjpwYWludChjaGlsZFBhaW50
SW5mbywgY2hpbGRQb2ludCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNW
R1JlbmRlclN1cHBvcnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KCp0aGlzLCByZXBh
aW50Q29udGFpbmVyKTsKLX0KLQotc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZp
c2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAotewotICAgIHJldHVybiBTVkdSZW5kZXJT
dXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBj
b250YWluZXIsIGNvbnRleHQpOwotfQotCi1zdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKLSAgICBpZiAoYWRqdXN0ZWRSZWN0KQotICAg
ICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKLSAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotfQotCiBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6OmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIG1fbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSA9IGxvY2FsVHJhbnNmb3JtKCk7CkBAIC0yMDAsMjAgKzE4Miw0
IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAgICAgIHx8IFJlbmRlckJsb2NrOjpub2Rl
QXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RMb2NhdGlvbiwgTGF5b3V0UG9pbnQoKSwg
SGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kcyk7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0
aW9uKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotdm9pZCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3
YXNGaXhlZCkgY29uc3QKLXsKLSAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2NhbFRvQ29udGFp
bmVyKCp0aGlzLCBhbmNlc3RvckNvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsK
LX0KLQotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29uc3QKLXsKLSAgICByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcigqdGhpcywgYW5jZXN0
b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCmluZGV4IGFkOTMyMGRj
ZjU0ZWM2YTE2NzcwMGY3MGUwYzg1ZjNhMTU1YmEzODkuLjg0YjE1ZDQ2NzJhYTA5NTQyM2M3NmVl
MTIyZTUyYzlmNWNhNWIwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC0zOSwxMCArMzksNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGU7CiAKLSAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25z
dCBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0Vmlz
aWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogCkBAIC01MSwxMCArNDcsNyBAQCBwdWJsaWM6CiAgICAgRmxv
YXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3cG9ydC5zaXplKCkpOyB9CiAKICAg
ICBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1h
cENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKLSAgICBj
b25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUg
eyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMzdhMThkMzRj
NTEyMDE4YjJmYTUzZDA3ZDhkZDk2ODdkZGZlMmEzNC4uMDE2Y2I1YTkxODEyZjhkM2YzM2QxMDRl
OTdkZWI3ODkwMjM2OTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCkBAIC04OSwzNCArODksNiBAQCBjb25zdCBSZW5kZXJTVkdUZXh0KiBS
ZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoY29uc3QgUmVuZGVyT2Jq
ZQogICAgIHJldHVybiBsaW5lYWdlT2ZUeXBlPFJlbmRlclNWR1RleHQ+KHN0YXJ0KS5maXJzdCgp
OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RD
b250ZXh0KSBjb25zdAotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7Ci19Ci0KLXN0ZDo6
b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKLXsKLSAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYWRqdXN0ZWRSZWN0ID0gY29tcHV0ZUZsb2F0Vmlz
aWJsZVJlY3RJbkNvbnRhaW5lcihyZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwotICAgIGlmIChh
ZGp1c3RlZFJlY3QpCi0gICAgICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KCphZGp1c3Rl
ZFJlY3QpOwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8Rmxv
YXRSZWN0PiBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKLXsKLSAgICByZXR1cm4g
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcigqdGhp
cywgcmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKLX0KLQotdm9pZCBSZW5kZXJTVkdUZXh0Ojpt
YXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9y
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBD
b29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3QKLXsKLSAgICBTVkdSZW5kZXJT
dXBwb3J0OjptYXBMb2NhbFRvQ29udGFpbmVyKCp0aGlzLCBhbmNlc3RvckNvbnRhaW5lciwgdHJh
bnNmb3JtU3RhdGUsIHdhc0ZpeGVkKTsKLX0KLQotY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJT
VkdUZXh0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9tZXRyeU1hcCkgY29u
c3QKLXsKLSAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5l
cigqdGhpcywgYW5jZXN0b3JUb1N0b3BBdCwgZ2VvbWV0cnlNYXApOwotfQotCiBzdGF0aWMgaW5s
aW5lIHZvaWQgY29sbGVjdExheW91dEF0dHJpYnV0ZXMoUmVuZGVyT2JqZWN0KiB0ZXh0LCBWZWN0
b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYgYXR0cmlidXRlcykKIHsKICAgICBmb3IgKFJl
bmRlck9iamVjdCogZGVzY2VuZGFudCA9IHRleHQ7IGRlc2NlbmRhbnQ7IGRlc2NlbmRhbnQgPSBk
ZXNjZW5kYW50LT5uZXh0SW5QcmVPcmRlcih0ZXh0KSkgewpAQCAtNDUyLDEyICs0MjQsNiBAQCBi
b29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5k
ZXJTVkdUZXh0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYsIEhpdFRlc3RB
Y3Rpb24pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRh
aW5lciogZnJhZ21lbnQpCiB7CiAgICAgTGVnYWN5Um9vdElubGluZUJveCogcm9vdEJveCA9IGZp
cnN0Um9vdEJveCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuaAppbmRleCA4OTk5YTE1M2NmOGQwYmZjNTJlMjNkODllNjgzMzVjOTg5ZmI0NmJmLi5iYTcx
OTQ4NWU5MWJkMGM5MmYyMDFmYTFkMjE4NWJhYjc3NjZhZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNTVkdUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRl
OwotICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwog
ICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7CiAKQEAg
LTc3LDEyICs3Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVy
KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxl
UmVjdENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhl
ZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440957</attachid>
            <date>2021-10-12 10:52:07 -0700</date>
            <delta_ts>2021-10-14 02:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231477-20211012195205.patch</filename>
            <type>text/plain</type>
            <size>14449</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzOTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM2ZDE1ZWRkMTNjYWUy
ZThiMzBkYTg2ZTA1NGY0MjE4YjFmZmFiMC4uMDljMDZlNTBhZjI3ZWRiZDBhNTAxODk1NTBhOThm
ZjFjY2Y1MDkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEwLTEyICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyU1ZHQmxv
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQ3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvbW1vbiBjb2RlIGZyb20gUmVuZGVyU1ZHQmxvY2sgc3ViY2xhc3NlcyBpbnRvIFJlbmRl
clNWR0Jsb2NrLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6Y2xpcHBlZE92ZXJmbG93UmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6Y29tcHV0ZVZpc2libGVS
ZWN0SW5Db250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6
OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHQmxvY2s6Om1hcExvY2FsVG9Db250YWluZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OnB1c2hNYXBwaW5nVG9Db250YWluZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0Vmlz
aWJsZVJlY3RJbkNvbnRhaW5lciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpu
b2RlQXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNpYmxl
UmVjdEluQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5l
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaDoKKwogMjAyMS0xMC0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRoZSBTY3JvbGxpbmdUcmVlIHRyYWNr
IG5vZGVzIHdpdGggYW5pbWF0ZWQgc2Nyb2xscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCA2NDZkM2QyNWU4N2QzYTNhNGQwYWY4NGJm
Mjk3MzAzOThlMmY3ODE3Li5jMWFmY2E3MGI4NzA5ODBiYTk5OWJhZWQ5YmY2MDI3OTA4MzVjZTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNw
cApAQCAtODksNCArODksMzggQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6Y29tcHV0ZU92ZXJmbG93
KExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlLCBib29sIHJlY29tcHUKICAgICBhZGRWaXN1
YWxPdmVyZmxvdyhzbmFwcGVkSW50UmVjdChib3JkZXJSZWN0KSk7CiB9CiAKK0xheW91dFJlY3Qg
UmVuZGVyU1ZHQmxvY2s6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdAorewor
ICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVj
dD4gUmVuZGVyU1ZHQmxvY2s6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Cit7ICAgCisgICAgc3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250
YWluZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKKyAgICBpZiAoYWRqdXN0ZWRSZWN0KQor
ICAgICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVy
U1ZHQmxvY2s6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2li
bGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAoreworICAgIHJldHVybiBTVkdSZW5kZXJTdXBw
b3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250
YWluZXIsIGNvbnRleHQpOworfQorCit2b2lkIFJlbmRlclNWR0Jsb2NrOjptYXBMb2NhbFRvQ29u
dGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBU
cmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01v
ZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3sKKyAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBM
b2NhbFRvQ29udGFpbmVyKCp0aGlzLCBhbmNlc3RvckNvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUs
IHdhc0ZpeGVkKTsKK30KKworY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdCbG9jazo6cHVz
aE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3Rv
clRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Cit7CisgICAg
cmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoKnRoaXMsIGFu
Y2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKK30KKworYm9vbCBSZW5kZXJTVkdCbG9jazo6
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDk0ZDY5
MzYzY2ZiYzQ5MmM5ZmM0YTVjOTc1ZDY5MmIzZDAwOTk4MzkuLjc2ZGI4NmE1YmZhMGI5M2Y3NGI2
ZGZmNDJmNzhjMTA2MWRkOGE4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKQEAgLTMxLDYgKzMxLDE1IEBAIGNsYXNzIFJlbmRlclNWR0Jsb2Nr
IDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6CiAgICAgaW5saW5lIFNWR0dyYXBo
aWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50KCkgY29uc3Q7CiAKKyAgICBMYXlvdXRSZWN0IGNs
aXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2li
bGVSZWN0Q29udGV4dCkgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0
PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlv
blNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3QgZmluYWw7Cisg
ICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikg
Y29uc3QgZmluYWw7CisKKyAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdG
b3JlaWduT2JqZWN0LmNwcAppbmRleCBiOTZhYjhkMTdhYWNhZTc0YzMxNTEwZjgzNDljN2VhNTU5
NmUxODdkLi41ODIyYzhkMzE5ODQ1MzNhY2JmYWM5YjgwNDg5NmNhNzJmODZjYzE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5jcHAKQEAgLTk1LDI0ICs5NSw2IEBAIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICBSZW5k
ZXJCbG9jazo6cGFpbnQoY2hpbGRQYWludEluZm8sIGNoaWxkUG9pbnQpOwogfQogCi1MYXlvdXRS
ZWN0IFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0
KSBjb25zdAotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7Ci19Ci0KLXN0ZDo6b3B0aW9u
YWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QK
LXsKLSAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJ
bkNvbnRhaW5lcigqdGhpcywgcmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKLX0KLQotc3RkOjpv
cHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlVmlzaWJs
ZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25z
dAotewotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRl
RmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7Ci0g
ICAgaWYgKGFkanVzdGVkUmVjdCkKLSAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3Qo
KmFkanVzdGVkUmVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkgY29uc3QKIHsKICAgICBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm0gPSBsb2NhbFRyYW5z
Zm9ybSgpOwpAQCAtMjAwLDIwICsxODIsNCBAQCBib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdAogICAg
ICAgICB8fCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0
TG9jYXRpb24sIExheW91dFBvaW50KCksIEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZHMpOwog
fQogCi1ib29sIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0
IExheW91dFBvaW50JiwgSGl0VGVzdEFjdGlvbikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3Rv
ckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFw
Q29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0Ci17Ci0gICAgU1ZHUmVuZGVy
U3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcigqdGhpcywgYW5jZXN0b3JDb250YWluZXIsIHRy
YW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7Ci19Ci0KLWNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0
cnlNYXApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5n
VG9Db250YWluZXIoKnRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKLX0KLQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaAppbmRleCBhZDkzMjBkY2Y1NGVjNmExNjc3MDBmNzBlMGM4NWYzYTE1NWJhMzg5
Li44NGIxNWQ0NjcyYWEwOTU0MjNjNzZlZTEyMmU1MmM5ZjVjYTViMGE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaApA
QCAtMzksMTAgKzM5LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4g
Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25z
dCBvdmVycmlkZTsKLQogICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIApAQCAtNTEsMTAg
KzQ3LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1f
dmlld3BvcnQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5Q
YXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwotICAgIGJvb2wgbm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCBtYXBMb2NhbFRvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhl
ZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQs
IFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXROZWVkc1Ry
YW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCmluZGV4IDM3YTE4ZDM0YzUxMjAxOGIyZmE1M2QwN2Q4ZGQ5Njg3ZGRmZTJhMzQu
LjAxNmNiNWE5MTgxMmY4ZDNmMzNkMTA0ZTk3ZGViNzg5MDIzNjkxYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtODksMzQgKzg5LDYg
QEAgY29uc3QgUmVuZGVyU1ZHVGV4dCogUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4
dEFuY2VzdG9yKGNvbnN0IFJlbmRlck9iamUKICAgICByZXR1cm4gbGluZWFnZU9mVHlwZTxSZW5k
ZXJTVkdUZXh0PihzdGFydCkuZmlyc3QoKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdUZXh0
OjpjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3QKLXsKLSAgICByZXR1cm4gU1ZH
UmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoKnRoaXMsIHJlcGFp
bnRDb250YWluZXIpOwotfQotCi1zdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1Rl
eHQ6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250
ZXh0IGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGFkanVz
dGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIocmVjdCwgY29udGFp
bmVyLCBjb250ZXh0KTsKLSAgICBpZiAoYWRqdXN0ZWRSZWN0KQotICAgICAgICByZXR1cm4gZW5j
bG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotfQotCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZUZs
b2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRl
eHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZp
c2libGVSZWN0SW5Db250YWluZXIoKnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7Ci19
Ci0KLXZvaWQgUmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmIHRyYW5z
Zm9ybVN0YXRlLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0Ci17Ci0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6bWFwTG9jYWxUb0NvbnRhaW5lcigqdGhp
cywgYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCB3YXNGaXhlZCk7Ci19Ci0KLWNv
bnN0IFJlbmRlck9iamVjdCogUmVuZGVyU1ZHVGV4dDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoKnRoaXMsIGFuY2VzdG9yVG9TdG9wQXQsIGdlb21l
dHJ5TWFwKTsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkIGNvbGxlY3RMYXlvdXRBdHRyaWJ1dGVz
KFJlbmRlck9iamVjdCogdGV4dCwgVmVjdG9yPFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzKj4mIGF0
dHJpYnV0ZXMpCiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQgPSB0ZXh0OyBk
ZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIodGV4dCkp
IHsKQEAgLTQ1MiwxMiArNDI0LDYgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29u
c3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR1Rl
eHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250ZW50cywg
Y29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50KQogewogICAgIExlZ2FjeVJv
b3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBmaXJzdFJvb3RCb3goKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKaW5kZXggODk5OWExNTNjZjhkMGJmYzUyZTIz
ZDg5ZTY4MzM1Yzk4OWZiNDZiZi4uYmE3MTk0ODVlOTFiZDBjOTJmMjAxZmExZDIxODViYWI3NzY2
YWZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgK
QEAgLTY4LDcgKzY4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKLSAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJ
blBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENv
bnRhaW5lciopIG92ZXJyaWRlOwogCkBAIC03NywxMiArNzYsNiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFZpc2libGVSZWN0Q29u
dGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBjb21w
dXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLQot
ICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFwQ29vcmRp
bmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441198</attachid>
            <date>2021-10-14 02:46:42 -0700</date>
            <delta_ts>2021-10-14 05:37:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231477-20211014114641.patch</filename>
            <type>text/plain</type>
            <size>14438</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg4OWQ1OGY1ODkyZTJi
NmFiOTAwYzFhMzljNDliYzRmYTkzM2JiNC4uZmZlM2EzODRhN2FlZjMyM2ViOGJiNWNkMzQ2NmM3
ODA4NDJmNzRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEwLTE0ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUmVuZGVyU1ZHQmxv
Y2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTQ3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yIGNvbW1vbiBjb2RlIGZyb20gUmVuZGVyU1ZHQmxvY2sgc3ViY2xhc3NlcyBpbnRvIFJlbmRl
clNWR0Jsb2NrLgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6Y2xpcHBlZE92ZXJmbG93UmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6Y29tcHV0ZVZpc2libGVS
ZWN0SW5Db250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6
OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHQmxvY2s6Om1hcExvY2FsVG9Db250YWluZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6OnB1c2hNYXBwaW5nVG9Db250YWluZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQmxvY2s6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0Vmlz
aWJsZVJlY3RJbkNvbnRhaW5lciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lciBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpu
b2RlQXRQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWdu
T2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNpYmxl
UmVjdEluQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bWFwTG9jYWxUb0NvbnRhaW5l
ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpwdXNo
TWFwcGluZ1RvQ29udGFpbmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuaDoKKwogMjAyMS0xMC0xNCAgVGltIE5ndXllbiAgPG50aW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1c2VsZXNzIGlzQ29ubmVjdGVkKCkgY2hlY2sgZnJv
bSBIVE1MRGlhbG9nRWxlbWVudDo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAppbmRleCA2NDZkM2QyNWU4N2QzYTNhNGQwYWY4NGJm
Mjk3MzAzOThlMmY3ODE3Li5iODU0Y2RkMWVmYjEyNTc2NjM4OGY1OTRlMTlhNGJmMDhjNzQ3MzZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNw
cApAQCAtODksNCArODksMzggQEAgdm9pZCBSZW5kZXJTVkdCbG9jazo6Y29tcHV0ZU92ZXJmbG93
KExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlLCBib29sIHJlY29tcHUKICAgICBhZGRWaXN1
YWxPdmVyZmxvdyhzbmFwcGVkSW50UmVjdChib3JkZXJSZWN0KSk7CiB9CiAKK0xheW91dFJlY3Qg
UmVuZGVyU1ZHQmxvY2s6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdAorewor
ICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCgqdGhpcywgcmVwYWludENvbnRhaW5lcik7Cit9CisKK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVj
dD4gUmVuZGVyU1ZHQmxvY2s6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExh
eW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Cit7CisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWlu
ZXIocmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKKyAgICBpZiAoYWRqdXN0ZWRSZWN0KQorICAg
ICAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCitzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZH
QmxvY2s6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVS
ZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAoreworICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0
Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWlu
ZXIsIGNvbnRleHQpOworfQorCit2b2lkIFJlbmRlclNWR0Jsb2NrOjptYXBMb2NhbFRvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKK3sKKyAgICBTVkdSZW5kZXJTdXBwb3J0OjptYXBMb2Nh
bFRvQ29udGFpbmVyKCp0aGlzLCBhbmNlc3RvckNvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIHdh
c0ZpeGVkKTsKK30KKworY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJTVkdCbG9jazo6cHVzaE1h
cHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRv
U3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0Cit7CisgICAgcmV0
dXJuIFNWR1JlbmRlclN1cHBvcnQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoKnRoaXMsIGFuY2Vz
dG9yVG9TdG9wQXQsIGdlb21ldHJ5TWFwKTsKK30KKworYm9vbCBSZW5kZXJTVkdCbG9jazo6bm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0QWN0aW9uKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCmluZGV4IDk0ZDY5MzYz
Y2ZiYzQ5MmM5ZmM0YTVjOTc1ZDY5MmIzZDAwOTk4MzkuLjllOTlhZTA2NDYwZjk4OWM4YWExNzY4
YmZlNTliNWI5NzljOTk1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmgKQEAgLTQ3LDYgKzQ3LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhYnNv
bHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBmaW5hbDsKKworICAgIExh
eW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0IGZpbmFsOworICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFs
PExheW91dFJlY3Q+IGNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0
Q29udGV4dCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dCBmaW5hbDsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2Vv
bWV0cnlNYXAmKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIGZpbmFsOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKaW5kZXggYjk2YWI4ZDE3YWFjYWU3NGMzMTUxMGY4MzQ5YzdlYTU1OTZlMTg3ZC4uNTgy
MmM4ZDMxOTg0NTMzYWNiZmFjOWI4MDQ4OTZjYTcyZjg2Y2MxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBA
IC05NSwyNCArOTUsNiBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgUmVuZGVyQmxvY2s6OnBh
aW50KGNoaWxkUGFpbnRJbmZvLCBjaGlsZFBvaW50KTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3QKLXsK
LSAgICByZXR1cm4gU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoKnRoaXMsIHJlcGFpbnRDb250YWluZXIpOwotfQotCi1zdGQ6Om9wdGlvbmFsPEZsb2F0UmVj
dD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFNWR1JlbmRlclN1cHBvcnQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIo
KnRoaXMsIHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8TGF5
b3V0UmVjdD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250
YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKLXsKLSAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gYWRqdXN0ZWRSZWN0ID0gY29tcHV0ZUZsb2F0VmlzaWJs
ZVJlY3RJbkNvbnRhaW5lcihyZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwotICAgIGlmIChhZGp1
c3RlZFJlY3QpCi0gICAgICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KCphZGp1c3RlZFJl
Y3QpOwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0
CiB7CiAgICAgbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gbG9jYWxUcmFuc2Zvcm0oKTsKQEAg
LTIwMCwyMCArMTgyLDQgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICAgICAgfHwgUmVu
ZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdExvY2F0aW9uLCBM
YXlvdXRQb2ludCgpLCBIaXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmRzKTsKIH0KIAotYm9vbCBS
ZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIEhpdFRlc3RBY3Rpb24pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om1hcExvY2FsVG9D
b250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVz
TW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAotewotICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1h
cExvY2FsVG9Db250YWluZXIoKnRoaXMsIGFuY2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgd2FzRml4ZWQpOwotfQotCi1jb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR0ZvcmVpZ25P
YmplY3Q6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdlb21ldHJ5TWFwKSBjb25z
dAotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVy
KCp0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7Ci19Ci0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgK
aW5kZXggYWQ5MzIwZGNmNTRlYzZhMTY3NzAwZjcwZTBjODVmM2ExNTViYTM4OS4uODRiMTVkNDY3
MmFhMDk1NDIzYzc2ZWUxMjJlNTJjOWY1Y2E1YjBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTM5LDEwICsz
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBj
b25zdCBvdmVycmlkZTsKLSAgICBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KICAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKQEAgLTUxLDEwICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3ZpZXdwb3J0LnNp
emUoKSk7IH0KIAogICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92
ZXJyaWRlOwotICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9t
ZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCAzN2ExOGQzNGM1MTIwMThiMmZhNTNkMDdkOGRkOTY4N2RkZmUyYTM0Li4wMTZjYjVhOTE4
MTJmOGQzZjMzZDEwNGU5N2RlYjc4OTAyMzY5MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTg5LDM0ICs4OSw2IEBAIGNvbnN0IFJl
bmRlclNWR1RleHQqIFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcihj
b25zdCBSZW5kZXJPYmplCiAgICAgcmV0dXJuIGxpbmVhZ2VPZlR5cGU8UmVuZGVyU1ZHVGV4dD4o
c3RhcnQpLmZpcnN0KCk7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBlZE92
ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNWR1JlbmRlclN1cHBv
cnQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KCp0aGlzLCByZXBhaW50Q29udGFpbmVy
KTsKLX0KLQotc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJTVkdUZXh0Ojpjb21wdXRl
VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0
KSBjb25zdAotewotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBj
b21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4
dCk7Ci0gICAgaWYgKGFkanVzdGVkUmVjdCkKLSAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91
dFJlY3QoKmFkanVzdGVkUmVjdCk7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQotc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVS
ZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBjb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAot
ewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdElu
Q29udGFpbmVyKCp0aGlzLCByZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwotfQotCi12b2lkIFJl
bmRlclNWR1RleHQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwg
T3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAotewot
ICAgIFNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWluZXIoKnRoaXMsIGFuY2VzdG9y
Q29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQpOwotfQotCi1jb25zdCBSZW5kZXJP
YmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmIGdl
b21ldHJ5TWFwKSBjb25zdAotewotICAgIHJldHVybiBTVkdSZW5kZXJTdXBwb3J0OjpwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKCp0aGlzLCBhbmNlc3RvclRvU3RvcEF0LCBnZW9tZXRyeU1hcCk7Ci19
Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0TGF5b3V0QXR0cmlidXRlcyhSZW5kZXJPYmpl
Y3QqIHRleHQsIFZlY3RvcjxTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyo+JiBhdHRyaWJ1dGVzKQog
ewogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5kYW50ID0gdGV4dDsgZGVzY2VuZGFudDsg
ZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9yZGVyKHRleHQpKSB7CkBAIC00NTIs
MTIgKzQyNCw2IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFBv
aW50JiwgSGl0VGVzdEFjdGlvbikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVudHMsIGNvbnN0IFJlbmRl
ckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCkKIHsKICAgICBMZWdhY3lSb290SW5saW5lQm94
KiByb290Qm94ID0gZmlyc3RSb290Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IDg5OTlhMTUzY2Y4ZDBiZmM1MmUyM2Q4OWU2ODMzNWM5
ODlmYjQ2YmYuLmJhNzE5NDg1ZTkxYmQwYzkyZjIwMWZhMWQyMTg1YmFiNzc2NmFmYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCkBAIC02OCw3ICs2
OCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
bikgb3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhp
dFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBv
dmVycmlkZTsKIApAQCAtNzcsMTIgKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVS
ZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIGNvbnRhaW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdCBvdmVycmlkZTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRh
aW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4s
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKLSAgICBjb25zdCBSZW5kZXJPYmplY3Qq
IHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5j
ZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
b2NhbFRyYW5zZm9ybTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>