<?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>235100</bug_id>
          
          <creation_ts>2022-01-12 02:25:54 -0800</creation_ts>
          <short_desc>[LBSE] Begin layer-aware RenderSVGContainer implementation</short_desc>
          <delta_ts>2022-01-12 05:06:19 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235099</dependson>
          <blocked>90738</blocked>
    
    <blocked>235101</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</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>rbuis</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>1830047</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-12 02:25:54 -0800</bug_when>
    <thetext>Now that RenderSVGContainer was renamed to LegacyRenderSVGContainer, we can re-introduce RenderSVGContainer for LBSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830054</commentid>
    <comment_count>1</comment_count>
      <attachid>448919</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-12 02:36:28 -0800</bug_when>
    <thetext>Created attachment 448919
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830058</commentid>
    <comment_count>2</comment_count>
      <attachid>448919</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-01-12 03:14:42 -0800</bug_when>
    <thetext>Comment on attachment 448919
Patch, v1

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

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:6
&gt; + * Copyright (C) 2009 Dirk Schulze &lt;krit@webkit.org&gt;

Likely could use Igalia 2021/2022 copyrights.

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:126
&gt; +    if (style().display() == DisplayType::None)

Can this actually happen?

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:178
&gt; +    // Give RenderSVGViewportContainer a chance to apply its viewport clip

Usually we end sentences with a period.

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.h:5
&gt; + * Copyright (C) 2009 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebCore/rendering/svg/RenderSVGContainer.h:55
&gt; +    bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction) override;

Please check whether any of the overrides can actually be final.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830080</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-12 04:06:24 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #2)
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:6
&gt; &gt; + * Copyright (C) 2009 Dirk Schulze &lt;krit@webkit.org&gt;
&gt; 
&gt; Likely could use Igalia 2021/2022 copyrights.
Fixed.

&gt; &gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:126
&gt; &gt; +    if (style().display() == DisplayType::None)
&gt; 
&gt; Can this actually happen?
Yes -- e.g. &lt;defs&gt; creates a renderer even though &quot;display: none&quot; is set.
 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGContainer.cpp:178
&gt; &gt; +    // Give RenderSVGViewportContainer a chance to apply its viewport clip
&gt; 
&gt; Usually we end sentences with a period.
Fixed.

&gt; &gt; Source/WebCore/rendering/svg/RenderSVGContainer.h:5
&gt; &gt; + * Copyright (C) 2009 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.
Fixed.

&gt; 
&gt; &gt; Source/WebCore/rendering/svg/RenderSVGContainer.h:55
&gt; &gt; +    bool nodeAtPoint(const HitTestRequest&amp;, HitTestResult&amp;, const HitTestLocation&amp; locationInContainer, const LayoutPoint&amp; accumulatedOffset, HitTestAction) override;
&gt; 
&gt; Please check whether any of the overrides can actually be final.
Unfortunately not, they are all overrides in some of the many classes that derive from RenderSVGContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830081</commentid>
    <comment_count>4</comment_count>
      <attachid>448931</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-12 04:11:27 -0800</bug_when>
    <thetext>Created attachment 448931
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830089</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-12 05:05:57 -0800</bug_when>
    <thetext>Committed r287921 (245954@trunk): &lt;https://commits.webkit.org/245954@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830090</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-12 05:06:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/87451223&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448919</attachid>
            <date>2022-01-12 02:36:28 -0800</date>
            <delta_ts>2022-01-12 04:11:22 -0800</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-235100-20220112023627.patch</filename>
            <type>text/plain</type>
            <size>34711</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI1MGQzYTU0MTY0MjM4
NmQwM2M5YjViYmI4MTg1ZmJkZGNiYTY1YS4uODEzOWRhZTBmYjA5NzFiODViZGRhNDU1ZDU2YmE0
OTY2MjJhOTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAxLTEyICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBsYXllci1hd2FyZSBSZW5kZXJTVkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTEwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBSZW5k
ZXJTVkdDb250YWluZXIgYmFzZWQgb24gdGhlIGRvd25zdHJlYW0gTEJTRSBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgbm90IHlldCBlbmFibGUgdGhlIGNyZWF0aW9u
IG9mIFJlbmRlclNWR0NvbnRhaW5lcgorICAgICAgICByZW5kZXJlcnMgaWYgTEJTRSBpcyBlbmFi
bGVkLCBzaW5jZSB0aGUgZGVyaXZlZCBjbGFzc2VzLCBzdWNoIGFzCisgICAgICAgIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lciAvIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIC8gLi4uLCBhcmUg
c3RpbGwKKyAgICAgICAgbWlzc2luZyBpbiBMQlNFLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojppc1NWR0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6OmNhbGN1bGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHQ29udGFpbmVyOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250
YWluZXI6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
aXNPYmplY3RCb3VuZGluZ0JveFZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdDb250YWluZXI6OnBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpjb21wdXRlRGVjb3JhdGVkQm91
bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbjo6aGFuZGxlUm9vdE9yQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdD
b250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OmRldGFjaCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVCdWlsZGVyOjpTVkc6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUcmVlQnVpbGRlcjo6U1ZHOjpkZXRhY2gpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5oOgorCiAyMDIyLTAxLTEyICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBSZW5hbWUg
UmVuZGVyU1ZHQ29udGFpbmVyIC0+IExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAwOGVjYmU4YmQ2YmFlMTc1MGFjNDM5Yzg3Y2NiMDhiMDBlMjQ5MjFiLi41ODY2MTBl
YTg3OWQ1YmQ2ZjI0YjRhNWVhMTE1ZGNkM2M4Yjk0NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ3
Miw2ICsyNDcyLDcgQEAgcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmNwcAogcmVu
ZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAogcmVuZGVyaW5nL3N2Zy9MZWdhY3lS
ZW5kZXJTVkdTaGFwZS5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCityZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
RWxsaXBzZS5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFiZGZjMDViMjlmM2Ux
NTFkMTBiYjY5MjhlMmI5YmJkYzU4YzI4NmYuLjY0ZGIxZTZlZjRmOTczODE3OWMwMWQwY2U0NjI1
YzY1YTdhM2M4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyMzksNiArMTIzOSw3IEBACiAJCTQzNThFODgxMTM2MEEzMTcw
MEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzNThFODdGMTM2MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MzU4
RTg4NjEzNjBBMzNCMDBFNDc0OEMgLyogU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4ODMxMzYwQTMzQjAw
RTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKIAkJNDM2NzA4QzExMkQ5
Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg4MjEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVy
U1ZHQmxvY2suaCAqLzsgfTsKKwkJNDM2NzA4QzQzM0Y4Q0E0QzEwMDQ0MjM0IC8qIFJlbmRlclNW
R0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM2NzA3NzQxMkQ5QkM0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0NvbnRhaW5lci5oICovOyB9
OwogCQk0MzY3MDhDMzEyRDlDQTRCMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg4
NDEyRDlDQTRBMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmggKi87IH07CiAJ
CTQzNjcwOEM1MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwODg2MTJEOUNB
NEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCAqLzsgfTsKIAkJNDM2NzA4Qzcx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4ODgxMkQ5Q0E0QTAwMDQ0
MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oICovOyB9OwpAQCAtODk4Myw4ICs4OTg0
LDEwIEBACiAJCTQzNThFODg0MTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdGRURyb3BTaGFkb3dFbGVtZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODExMkQ5Q0E0QTAwMDQ0MjM0
IC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2
NzA4ODIxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQzNjcwODg0NDJBOUFDM0IxMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250YWluZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODMxMkQ5Q0E0QTAw
MDQ0MjM0IC8qIExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lSZW5kZXJTVkdDb250YWluZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4NDEyRDlDQTRBMDAwNDQyMzQgLyogTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExl
Z2FjeVJlbmRlclNWR0NvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MzY3MDc3NDEyRDlCQzRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0NvbnRhaW5lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4NTEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
NjcwODg2MTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwODg3MTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5k
ZXJTVkdIaWRkZW5Db250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE4OTMxLDYgKzE4OTM0LDggQEAKIAkJCQk0MzY3MDg4MTEyRDlDQTRBMDAwNDQy
MzQgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovLAogCQkJCTQzNjcwODgyMTJEOUNBNEEwMDA0NDIz
NCAvKiBSZW5kZXJTVkdCbG9jay5oICovLAogCQkJCUNERjc0N0VBMjcwRjZEODgwMDhGRUVFQyAv
KiBSZW5kZXJTVkdCbG9ja0lubGluZXMuaCAqLywKKwkJCQk0MzY3MDg4NDQyQTlBQzNCMTAwNDQy
MzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCAqLywKKwkJCQk0MzY3MDc3NDEyRDlCQzRBMDAw
NDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggKi8sCiAJCQkJMkI0MjM1OUYxNTI1MEY2MDAw
REJCQ0Q4IC8qIFJlbmRlclNWR0VsbGlwc2UuY3BwICovLAogCQkJCTJCNDIzNUEwMTUyNTBGNjAw
MERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi8sCiAJCQkJNDNDMDkyQjkxMkQ5RTRFRTAw
QTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovLApAQCAtMzY3MzgsNiArMzY3
NDMsNyBAQAogCQkJCUJDNUVCNjY4MEU4MUNCNzEwMEIyNTk2NSAvKiBSZW5kZXJTdHlsZUNvbnN0
YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4QzExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJl
bmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY3NDdFQjI3MEY2RDg4MDA4RkVF
RUMgLyogUmVuZGVyU1ZHQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzY3MDhD
NDMzRjhDQTRDMTAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQjM2NUM4NDE1MjUxMTlFMDA5MUQyN0IgLyogUmVuZGVyU1ZHRWxsaXBzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDNDMDkyQkMxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEM1MTJEOUNBNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDI0MzIyZGFlYjAyNzY4NDIyMzZiMjU2OWQzMzky
NjU1OGU2NDQwZDYuLjRkYmE5Yzg1NDdkOGU3OGE5N2MxMTBmMTFlYzAyZDVhNjZiZDVkYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMyOSw2ICszMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lTVkdSb290KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeVNWR0NvbnRhaW5lcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDJmMzljZjcx
OWYyZWMyZmI2NWU0OGFhNzUzNTE0ODI5YjFjMGVhMjIuLjAwZjU3MjQzYzU1ZDYxZWZhMjk2MTI0
ZWIzYjc4M2VlNGYxZWEwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFy
a2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5Lmgi
CisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdJbmxpbmVUZXh0LmgiCkBAIC01NzgsNiArNTc5LDEyIEBAIHZvaWQgd3JpdGUoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZs
YWc+IGJlCiAgICAgICAgIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIodHMsIGRvd25jYXN0PFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyPihvKSwgYmVoYXZpb3IpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIGlmIChpczxS
ZW5kZXJTVkdDb250YWluZXI+KG8pKSB7CisgICAgICAgIHdyaXRlU1ZHQ29udGFpbmVyKHRzLCBk
b3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KG8pLCBiZWhhdmlvcik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyPihv
KSkgewogICAgICAgICB3cml0ZVNWR0NvbnRhaW5lcih0cywgZG93bmNhc3Q8TGVnYWN5UmVuZGVy
U1ZHQ29udGFpbmVyPihvKSwgYmVoYXZpb3IpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODY5YjMxNDIyYjZiOWFmNDQwOWFkZmE1ZDcwZjQ2ZTUyNjViNmFjNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICog
Q29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCisKKyNpZiBFTkFCTEUo
TEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNp
bmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyVHJlZUJ1aWxkZXIuaCIK
KyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR0Nv
bnRhaW5lckxheW91dAorLy8gI2luY2x1ZGUgIlNWR0NvbnRhaW5lckxheW91dC5oIgorI2luY2x1
ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZXNDYWNoZS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyU1ZHQ29udGFpbmVyKTsKKwor
UmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKKyAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQoreworfQorCitSZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJT
VkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlv
dXQoKQoreworICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2lu
dDsKKyAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CisKKyAgICBMYXlvdXRSZXBhaW50ZXIgcmVw
YWludGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CisKKyAgICBjYWxj
dWxhdGVWaWV3cG9ydCgpOworCisgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9ybSBiZWZvcmUg
bGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJhbnNmb3JtIG1h
dHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6ZSBjYWxjdWxh
dGlvbnMpLgorICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFuc2Zvcm0gcmVm
ZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBjaGFuZ2VkIGR1
cmluZyBsYXlvdXQuCisgICAgeworICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNW
R0xheWVyVHJhbnNmb3JtVXBkYXRlcgorICAgICAgICAvLyBTVkdMYXllclRyYW5zZm9ybVVwZGF0
ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIGxheW91dENoaWxkcmVuKCk7Cisg
ICAgfQorCisgICAgdXBkYXRlTGF5ZXJJbmZvcm1hdGlvbigpOworCisgICAgLy8gSW52YWxpZGF0
ZSBhbGwgcmVzb3VyY2VzIG9mIHRoaXMgY2xpZW50IGlmIG91ciBsYXlvdXQgY2hhbmdlZC4KKyAg
ICBpZiAoZXZlckhhZExheW91dCgpICYmIG5lZWRzTGF5b3V0KCkpCisgICAgICAgIFNWR1Jlc291
cmNlc0NhY2hlOjpjbGllbnRMYXlvdXRDaGFuZ2VkKCp0aGlzKTsKKworICAgIHJlcGFpbnRlci5y
ZXBhaW50QWZ0ZXJMYXlvdXQoKTsKKyAgICBjbGVhck5lZWRzTGF5b3V0KCk7Cit9CisKK3ZvaWQg
UmVuZGVyU1ZHQ29udGFpbmVyOjpjYWxjdWxhdGVWaWV3cG9ydCgpCit7CisgICAgLy8gRklYTUU6
IFtMQlNFXSBVcHN0cmVhbSBTVkdMZW5ndGhDb250ZXh0IGNoYW5nZXMKKyAgICAvLyBlbGVtZW50
KCkudXBkYXRlTGVuZ3RoQ29udGV4dCgpOworfQorCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6
bGF5b3V0Q2hpbGRyZW4oKQoreworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHQ29u
dGFpbmVyTGF5b3V0CisgICAgLy8gU1ZHQ29udGFpbmVyTGF5b3V0IGNvbnRhaW5lckxheW91dCgq
dGhpcyk7CisgICAgLy8gY29udGFpbmVyTGF5b3V0LmxheW91dENoaWxkcmVuKHNlbGZOZWVkc0xh
eW91dCgpIHx8IFNWR1JlbmRlclN1cHBvcnQ6OmZpbHRlcnNGb3JjZUNvbnRhaW5lckxheW91dCgq
dGhpcykpOworCisgICAgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbiBib3VuZGluZ0JveENvbXB1
dGF0aW9uKCp0aGlzKTsKKyAgICBtX29iamVjdEJvdW5kaW5nQm94ID0gYm91bmRpbmdCb3hDb21w
dXRhdGlvbi5jb21wdXRlRGVjb3JhdGVkQm91bmRpbmdCb3goU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbjo6b2JqZWN0Qm91bmRpbmdCb3hEZWNvcmF0aW9uLCAmbV9vYmplY3RCb3VuZGluZ0JveFZh
bGlkKTsKKyAgICBtX3N0cm9rZUJvdW5kaW5nQm94ID0gYm91bmRpbmdCb3hDb21wdXRhdGlvbi5j
b21wdXRlRGVjb3JhdGVkQm91bmRpbmdCb3goU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6c3Ry
b2tlQm91bmRpbmdCb3hEZWNvcmF0aW9uKTsKKyAgICBzZXRMYXlvdXRSZWN0KGVuY2xvc2luZ0xh
eW91dFJlY3QobV9vYmplY3RCb3VuZGluZ0JveCkpOworCisgICAgLy8gRklYTUU6IFtMQlNFXSBV
cHN0cmVhbSBTVkdDb250YWluZXJMYXlvdXQKKyAgICAvLyBjb250YWluZXJMYXlvdXQucG9zaXRp
b25DaGlsZHJlblJlbGF0aXZlVG9Db250YWluZXIoKTsKK30KKwordm9pZCBSZW5kZXJTVkdDb250
YWluZXI6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpCit7CisgICAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hh
bmdlKGRpZmYsIG9sZFN0eWxlKTsKKworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVu
ZGVyTGF5ZXIgY2hhbmdlcworICAgIC8vIGlmIChoYXNMYXllcigpKQorICAgIC8vICAgICBsYXll
cigpLT5zZXRJc09wcG9ydHVuaXN0aWNTdGFja2luZ0NvbnRleHQodHJ1ZSk7Cit9CisKK2Jvb2wg
UmVuZGVyU1ZHQ29udGFpbmVyOjpzZWxmV2lsbFBhaW50KCkKK3sKKyAgICBhdXRvKiByZXNvdXJj
ZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIoKnRoaXMp
OworICAgIHJldHVybiByZXNvdXJjZXMgJiYgcmVzb3VyY2VzLT5maWx0ZXIoKTsKK30KKwordm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCit7CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHUmVuZGVyU3VwcG9ydCBjaGFu
Z2VzCisgICAgLy8gaWYgKCFTVkdSZW5kZXJTdXBwb3J0OjpzaG91bGRQYWludEhpZGRlblJlbmRl
cmVyKCp0aGlzKSkKKyAgICAvLyAgICAgcmV0dXJuOworCisgICAgLy8gU3BlYzogZ3JvdXBzIHcv
byBjaGlsZHJlbiBzdGlsbCBtYXkgcmVuZGVyIGZpbHRlciBjb250ZW50LgorICAgIGlmICghZmly
c3RDaGlsZCgpICYmICFzZWxmV2lsbFBhaW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6Q2xpcHBpbmdNYXNrKSB7CisgICAgICAg
IC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHUmVuZGVyU3VwcG9ydCBjaGFuZ2VzCisgICAg
ICAgIC8vIFNWR1JlbmRlclN1cHBvcnQ6OnBhaW50U1ZHQ2xpcHBpbmdNYXNrKCp0aGlzLCBwYWlu
dEluZm8pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBhZGp1c3RlZFBhaW50
T2Zmc2V0ID0gcGFpbnRPZmZzZXQgKyBsYXlvdXRMb2NhdGlvbigpOworICAgIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6TWFzaykgeworICAgICAgICAvLyBGSVhNRTogW0xCU0Vd
IFVwc3RyZWFtIFNWR1JlbmRlclN1cHBvcnQgY2hhbmdlcworICAgICAgICAvLyBTVkdSZW5kZXJT
dXBwb3J0OjpwYWludFNWR01hc2soKnRoaXMsIHBhaW50SW5mbywgYWRqdXN0ZWRQYWludE9mZnNl
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHZpc3VhbE92ZXJmbG93UmVj
dCA9IHZpc3VhbE92ZXJmbG93UmVjdEVxdWl2YWxlbnQoKTsKKyAgICB2aXN1YWxPdmVyZmxvd1Jl
Y3QubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOworICAgIGlmICghdmlzdWFsT3ZlcmZsb3dS
ZWN0LmludGVyc2VjdHMocGFpbnRJbmZvLnJlY3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2U6Ok91dGxpbmUgfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2U6OlNlbGZPdXRsaW5lKSB7CisgICAgICAgIC8vIEZJWE1FOiBbTEJT
RV0gVXBzdHJlYW0gb3V0bGluZSBwYWludGluZworICAgICAgICAvLyBwYWludFNWR091dGxpbmUo
cGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVy
U1ZHQ29udGFpbmVyOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbiBoaXRUZXN0QWN0aW9uKQoreworICAgIGF1dG8gYWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3Vt
dWxhdGVkT2Zmc2V0ICsgbGF5b3V0TG9jYXRpb24oKTsKKworICAgIGF1dG8gdmlzdWFsT3ZlcmZs
b3dSZWN0ID0gdmlzdWFsT3ZlcmZsb3dSZWN0RXF1aXZhbGVudCgpOworICAgIHZpc3VhbE92ZXJm
bG93UmVjdC5tb3ZlQnkoYWRqdXN0ZWRMb2NhdGlvbik7CisgICAgaWYgKCFsb2NhdGlvbkluQ29u
dGFpbmVyLmludGVyc2VjdHModmlzdWFsT3ZlcmZsb3dSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgYXV0byBsb2NhbFBvaW50ID0gbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgp
OworICAgIGF1dG8gYm91bmRpbmdCb3hUb3BMZWZ0Q29ybmVyID0gZmxvb3JlZExheW91dFBvaW50
KG9iamVjdEJvdW5kaW5nQm94KCkubWluWE1pbllDb3JuZXIoKSk7CisgICAgYXV0byBjb29yZGlu
YXRlU3lzdGVtT3JpZ2luVHJhbnNsYXRpb24gPSBib3VuZGluZ0JveFRvcExlZnRDb3JuZXIgLSBh
ZGp1c3RlZExvY2F0aW9uOworICAgIGxvY2FsUG9pbnQubW92ZShjb29yZGluYXRlU3lzdGVtT3Jp
Z2luVHJhbnNsYXRpb24pOworCisgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xp
cHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gR2l2ZSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciBhIGNoYW5jZSB0byBhcHBseSBp
dHMgdmlld3BvcnQgY2xpcAorICAgIGlmICghcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChsb2Nh
bFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1ZHSGl0VGVzdEN5Y2xlRGV0
ZWN0aW9uU2NvcGUgaGl0VGVzdFNjb3BlKCp0aGlzKTsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0g
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewor
ICAgICAgICBpZiAoIWNoaWxkLT5oYXNMYXllcigpICYmIGNoaWxkLT5ub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFkanVzdGVkTG9jYXRpb24sIGhpdFRl
c3RBY3Rpb24pKSB7CisgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9j
YXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24p
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChj
aGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCB2aXN1YWxPdmVyZmxv
d1JlY3QpID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFjY2Vzc2liaWxpdHkgd2FudHMgdG8g
cmV0dXJuIFNWRyBjb250YWluZXJzLCBpZiBhcHByb3ByaWF0ZS4KKyAgICBpZiAocmVxdWVzdC50
eXBlKCkgJiBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWNjZXNzaWJpbGl0eUhpdFRlc3QgJiYgbV9v
YmplY3RCb3VuZGluZ0JveC5jb250YWlucyhsb2NhbFBvaW50KSkgeworICAgICAgICB1cGRhdGVI
aXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlv
dXRTaXplKGFkanVzdGVkTG9jYXRpb24pKTsKKyAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9M
aXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5D
b250YWluZXIsIHZpc3VhbE92ZXJmbG93UmVjdCkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIFNwZWM6IE9ubHkg
Z3JhcGhpY2FsIGVsZW1lbnRzIGNhbiBiZSB0YXJnZXRlZCBieSB0aGUgbW91c2UsIHBlcmlvZC4K
KyAgICAvLyAxNi40OiAiSWYgdGhlcmUgYXJlIG5vIGdyYXBoaWNzIGVsZW1lbnRzIHdob3NlIHJl
bGV2YW50IGdyYXBoaWNzIGNvbnRlbnQgaXMgdW5kZXIgdGhlIHBvaW50ZXIgKGkuZS4sIHRoZXJl
IGlzIG5vIHRhcmdldCBlbGVtZW50KSwgdGhlIGV2ZW50IGlzIG5vdCBkaXNwYXRjaGVkLiIKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShMQVlFUl9CQVNFRF9T
VkdfRU5HSU5FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk1NzQwZGY2NmUyMzFjOTc5YWRmOTU0NzhiYjg2ZDgy
MzU0YTE3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisj
aW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJTVkdCb3VuZGluZ0Jv
eENvbXB1dGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHRWxlbWVu
dDsKKworY2xhc3MgUmVuZGVyU1ZHQ29udGFpbmVyIDogcHVibGljIFJlbmRlclNWR01vZGVsT2Jq
ZWN0IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJlbmRlclNWR0NvbnRhaW5lcik7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UmVuZGVyU1ZHQ29udGFpbmVyKCk7CisKKyAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5n
Qm94VmFsaWQ7IH0KKworICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3Qgc3Ryb2tl
Qm91bmRpbmdCb3goKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9
CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6Y29tcHV0ZVJlcGFpbnRCb3Vu
ZGluZ0JveCgqdGhpcyk7IH0KKworcHJvdGVjdGVkOgorICAgIFJlbmRlclNWR0NvbnRhaW5lcihT
VkdFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0NvbnRhaW5lciI7IH0KKyAgICBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0Q2hpbGRyZW4oKTsKKyAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXll
ckluZm9ybWF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZVZpZXdwb3J0KCk7
CisgICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQ
b2ludCYpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGJvb2wgc2VsZldpbGxQYWludCgpOworCisg
ICAgYm9vbCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQgeyBmYWxzZSB9OworICAgIEZsb2F0UmVj
dCBtX29iamVjdEJvdW5kaW5nQm94OworICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94
OworCitwcml2YXRlOgorICAgIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdDb250YWluZXIsIGlzU1ZHQ29udGFp
bmVyKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0JvdW5kaW5nQm94Q29t
cHV0YXRpb24uY3BwCmluZGV4IGMwNzYwZjliZWUyYTg4MWQzNWViZjBjMWMzYzNhM2M1YzgxNDIy
NDMuLjc5ODA5OGRlYjJjOTg1NDY1YjkxNjA3ODY0Nzk0Yzg2ZWZiNDY3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1
dGF0aW9uLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NW
R19FTkdJTkUpCiAjaW5jbHVkZSAiUmVuZGVyQ2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJl
bmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZS5o
IgpAQCAtNjMsOSArNjQsNyBAQCBGbG9hdFJlY3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6
Y29tcHV0ZURlY29yYXRlZEJvdW5kaW5nQm94KGNvbnN0IFNWR0JvdW5kaQogCiAgICAgLy8gLSBh
IGNvbnRhaW5lciBlbGVtZW50IChSZW5kZXJTVkdSb290IC8gUmVuZGVyU1ZHQ29udGFpbmVyKQog
ICAgIC8vIC0gInVzZSIgKFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIpCi0gICAgLy8g
RklYTUU6IFtMQlNFXSBVcHN0cmVhbSBuZXcgUmVuZGVyU1ZHQ29udGFpbmVyIGltcGxlbWVudGF0
aW9uCi0gICAgLy8gaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KG1fcmVuZGVyZXIpIHx8IGlzPFJlbmRl
clNWR0NvbnRhaW5lcj4obV9yZW5kZXJlcikpCi0gICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KG1f
cmVuZGVyZXIpKQorICAgIGlmIChpczxSZW5kZXJTVkdSb290PihtX3JlbmRlcmVyKSB8fCBpczxS
ZW5kZXJTVkdDb250YWluZXI+KG1fcmVuZGVyZXIpKQogICAgICAgICByZXR1cm4gaGFuZGxlUm9v
dE9yQ29udGFpbmVyKG9wdGlvbnMsIGJvdW5kaW5nQm94VmFsaWQpOwogCiAgICAgLy8gLSAiZm9y
ZWlnbk9iamVjdCIKQEAgLTE0MSwxMCArMTQwLDggQEAgRmxvYXRSZWN0IFNWR0JvdW5kaW5nQm94
Q29tcHV0YXRpb246OmhhbmRsZVJvb3RPckNvbnRhaW5lcihjb25zdCBTVkdCb3VuZGluZ0JveEMK
ICAgICAgICAgcmV0dXJuIGxheWVyVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGxheWVyVHJhbnNmb3JtKSk7CiAgICAgfTsK
IAotICAgIGF1dG8gdW5pdGVCb3VuZGluZ0JveFJlc3BlY3RpbmdWYWxpZGl0eSA9IFtdIChib29s
JiBib3hWYWxpZCwgRmxvYXRSZWN0JiBib3gsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qm
IC8qIGNoaWxkICovLCBjb25zdCBGbG9hdFJlY3QmIGNoaWxkQm91bmRpbmdCb3gpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBuZXcgUmVuZGVyU1ZHQ29udGFpbmVyIGltcGxl
bWVudGF0aW9uCi0gICAgICAgIC8vIGJvb2wgaXNCb3VuZGluZ0JveFZhbGlkID0gaXM8UmVuZGVy
U1ZHQ29udGFpbmVyPihjaGlsZCkgPyBkb3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KGNoaWxk
KS5pc09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSA6IHRydWU7Ci0gICAgICAgIGJvb2wgaXNCb3Vu
ZGluZ0JveFZhbGlkID0gdHJ1ZTsKKyAgICBhdXRvIHVuaXRlQm91bmRpbmdCb3hSZXNwZWN0aW5n
VmFsaWRpdHkgPSBbXSAoYm9vbCYgYm94VmFsaWQsIEZsb2F0UmVjdCYgYm94LCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0JiBjaGlsZCwgY29uc3QgRmxvYXRSZWN0JiBjaGlsZEJvdW5kaW5n
Qm94KSB7CisgICAgICAgIGJvb2wgaXNCb3VuZGluZ0JveFZhbGlkID0gaXM8UmVuZGVyU1ZHQ29u
dGFpbmVyPihjaGlsZCkgPyBkb3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KGNoaWxkKS5pc09i
amVjdEJvdW5kaW5nQm94VmFsaWQoKSA6IHRydWU7CiAgICAgICAgIGlmICghaXNCb3VuZGluZ0Jv
eFZhbGlkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjgsMTYgKzE2NSwxNSBAQCBGbG9h
dFJlY3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6aGFuZGxlUm9vdE9yQ29udGFpbmVyKGNv
bnN0IFNWR0JvdW5kaW5nQm94QwogICAgIC8vICAgIC0gT3RoZXJ3aXNlLCBzZXQgYm94IHRvIGJl
IHRoZSB1bmlvbiBvZiBib3ggYW5kIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhlIGFsZ29yaXRo
bSB0byBjb21wdXRlIGEgYm91bmRpbmcgYm94IHdpdGggY2hpbGQKICAgICAvLyAgICAgIGFzIHRo
ZSBlbGVtZW50IGFuZCB0aGUgc2FtZSB2YWx1ZXMgZm9yIHNwYWNlLCBmaWxsLCBzdHJva2UsIG1h
cmtlcnMgYW5kIGNsaXBwZWQgYXMgdGhlIGNvcnJlc3BvbmRpbmcgYWxnb3JpdGhtIGlucHV0IHZh
bHVlcy4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyTGF5ZXJN
b2RlbE9iamVjdD4obV9yZW5kZXJlcikpIHsKLSAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0
cmVhbSBuZXcgUmVuZGVyU1ZHQ29udGFpbmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIC8vIEZJ
WE1FOiBbTEJTRV0gVXBzdHJlYW0gbmV3IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciBpbXBsZW1l
bnRhdGlvbgogICAgICAgICAvLyBpZiAoaXM8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPihjaGls
ZCkgfHwgKGlzPFJlbmRlclNWR1NoYXBlPihjaGlsZCkgJiYgZG93bmNhc3Q8UmVuZGVyU1ZHU2hh
cGU+KGNoaWxkKS5pc1JlbmRlcmluZ0Rpc2FibGVkKCkpKQogICAgICAgICBpZiAoaXM8UmVuZGVy
U1ZHU2hhcGU+KGNoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4oY2hpbGQpLmlzUmVu
ZGVyaW5nRGlzYWJsZWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFNWR0Jv
dW5kaW5nQm94Q29tcHV0YXRpb24gY2hpbGRCb3VuZGluZ0JveENvbXB1dGF0aW9uKGNoaWxkKTsK
ICAgICAgICAgYXV0byBjaGlsZEJveCA9IGNoaWxkQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jb21w
dXRlRGVjb3JhdGVkQm91bmRpbmdCb3gob3B0aW9ucyk7Ci0gICAgICAgIC8vIEZJWE1FOiBVcHN0
cmVhbSBuZXcgUmVuZGVyU1ZHQ29udGFpbmVyIGltcGxlbWVudGF0aW9uCi0gICAgICAgIC8vIGlm
IChvcHRpb25zLmNvbnRhaW5zKERlY29yYXRpb25PcHRpb246Ok92ZXJyaWRlQm94V2l0aEZpbHRl
ckJveEZvckNoaWxkcmVuKSAmJiBpczxSZW5kZXJTVkdDb250YWluZXI+KGNoaWxkKSkKLSAgICAg
ICAgLy8gICAgY2hpbGRCb3VuZGluZ0JveENvbXB1dGF0aW9uLmFkanVzdEJveEZvckNsaXBwaW5n
QW5kRWZmZWN0cyh7IERlY29yYXRpb25PcHRpb246Ok92ZXJyaWRlQm94V2l0aEZpbHRlckJveCB9
LCBjaGlsZEJveCk7CisgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKERlY29yYXRpb25PcHRp
b246Ok92ZXJyaWRlQm94V2l0aEZpbHRlckJveEZvckNoaWxkcmVuKSAmJiBpczxSZW5kZXJTVkdD
b250YWluZXI+KGNoaWxkKSkKKyAgICAgICAgICAgIGNoaWxkQm91bmRpbmdCb3hDb21wdXRhdGlv
bi5hZGp1c3RCb3hGb3JDbGlwcGluZ0FuZEVmZmVjdHMoeyBEZWNvcmF0aW9uT3B0aW9uOjpPdmVy
cmlkZUJveFdpdGhGaWx0ZXJCb3ggfSwgY2hpbGRCb3gpOwogCiAgICAgICAgIGlmIChhdXRvIGxh
eWVyVHJhbnNmb3JtID0gdHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tQ2hpbGQoY2hpbGQpKQogICAg
ICAgICAgICAgY2hpbGRCb3ggPSBsYXllclRyYW5zZm9ybS0+bWFwUmVjdChjaGlsZEJveCk7CkBA
IC0yMDAsNyArMTk2LDcgQEAgRmxvYXRSZWN0IFNWR0JvdW5kaW5nQm94Q29tcHV0YXRpb246Omhh
bmRsZVJvb3RPckNvbnRhaW5lcihjb25zdCBTVkdCb3VuZGluZ0JveEMKICAgICBpZiAob3B0aW9u
cy5jb250YWlucyhEZWNvcmF0aW9uT3B0aW9uOjpJbmNsdWRlQ2xpcHBlcnMpICYmIG1fcmVuZGVy
ZXIuaGFzTm9uVmlzaWJsZU92ZXJmbG93KCkpIHsKICAgICAgICAgQVNTRVJUKG1fcmVuZGVyZXIu
aGFzTGF5ZXIoKSk7CiAKLSAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBuZXcgUmVu
ZGVyU1ZHQ29udGFpbmVyIC8gUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBuZXcgUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXIgLyBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciBpbXBsZW1lbnRhdGlvbgogICAgICAg
ICAvLyBBU1NFUlQoaXM8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KG1fcmVuZGVyZXIpIHx8
IGlzPFJlbmRlclNWR1Jlc291cmNlTWFya2VyPihtX3JlbmRlcmVyKSB8fCBpczxSZW5kZXJTVkdS
b290PihtX3JlbmRlcmVyKSk7CiAgICAgICAgIEFTU0VSVChpczxSZW5kZXJTVkdSb290PihtX3Jl
bmRlcmVyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDRlOGM3MDExOWQwNDkzODMyZWQ2NjQxZTBiODYyYTI1
NTZiYjkyMWYuLmZlNTU5YmQ3MGIxZDBjZjRiMWM1YTViMWM5MGEyOTYzNWU4YjI3MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdHcmFkaWVudFN0
b3BJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdJbmxpbmVUZXh0LmgiCkBAIC01MzcsNiArNTM4LDE3IEBAIHZvaWQgd3JpdGVTVkdSZXNv
dXJjZUNvbnRhaW5lcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHUmVzb3VyY2VDb250
YWluZXImCiAgICAgd3JpdGVDaGlsZHJlbih0cywgcmVzb3VyY2UsIGJlaGF2aW9yKTsKIH0KIAor
I2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQordm9pZCB3cml0ZVNWR0NvbnRhaW5l
cihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyU1ZHQ29udGFpbmVyJiBjb250YWluZXIsIE9w
dGlvblNldDxSZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikKK3sKKyAgICB3cml0ZVN0YW5kYXJk
UHJlZml4KHRzLCBjb250YWluZXIsIGJlaGF2aW9yKTsKKyAgICB3cml0ZVBvc2l0aW9uQW5kU3R5
bGUodHMsIGNvbnRhaW5lciwgYmVoYXZpb3IpOworICAgIHRzIDw8ICJcbiI7CisgICAgd3JpdGVS
ZXNvdXJjZXModHMsIGNvbnRhaW5lciwgYmVoYXZpb3IpOworICAgIHdyaXRlQ2hpbGRyZW4odHMs
IGNvbnRhaW5lciwgYmVoYXZpb3IpOworfQorI2VuZGlmCisKIHZvaWQgd3JpdGVTVkdDb250YWlu
ZXIoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lciYgY29udGFp
bmVyLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4gYmVoYXZpb3IpCiB7CiAgICAgLy8gQ3Vy
cmVudGx5IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIGhhcyBubyBtZWFuaW5nZnVs
IG91dHB1dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmgKaW5kZXggYWUyZmVmOGM2OGMwOGYyNmI2MTY0ZmE5YzEyMGQwZGY4NDQ3NDUw
Ni4uNzY1OTMyMjYyMzBkNTAyNWQ3OGYyM2IwZTM4NTE0ZjU4YmYzMWYyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmgKQEAgLTM0
LDEyICszNCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBDb2xvcjsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIExlZ2FjeVJlbmRlclNWR0NvbnRh
aW5lcjsKIGNsYXNzIExlZ2FjeVJlbmRlclNWR1Jvb3Q7CiBjbGFzcyBMZWdhY3lSZW5kZXJTVkdT
aGFwZTsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJJbWFnZTsKIGNsYXNzIFJlbmRlck9iamVj
dDsKLWNsYXNzIExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lcjsKK2NsYXNzIFJlbmRlclNWR0NvbnRh
aW5lcjsKIGNsYXNzIFJlbmRlclNWR0dyYWRpZW50U3RvcDsKIGNsYXNzIFJlbmRlclNWR0ltYWdl
OwogY2xhc3MgUmVuZGVyU1ZHSW5saW5lVGV4dDsKQEAgLTU5LDYgKzYwLDkgQEAgdm9pZCB3cml0
ZShXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBSZW5kZXJTVkdTaGFwZSYsIE9wdGlvblNldDxSZW5k
ZXJBc1RleHRGbGFnPikKIHZvaWQgd3JpdGVTVkdHcmFkaWVudFN0b3AoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgUmVuZGVyU1ZHR3JhZGllbnRTdG9wJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZs
YWc+KTsKIHZvaWQgd3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcihXVEY6OlRleHRTdHJlYW0mLCBj
b25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYsIE9wdGlvblNldDxSZW5kZXJBc1RleHRG
bGFnPik7CiB2b2lkIHdyaXRlU1ZHQ29udGFpbmVyKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExl
Z2FjeVJlbmRlclNWR0NvbnRhaW5lciYsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPik7Cisj
aWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIHdyaXRlU1ZHQ29udGFpbmVy
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJlbmRlclNWR0NvbnRhaW5lciYsIE9wdGlvblNldDxS
ZW5kZXJBc1RleHRGbGFnPik7CisjZW5kaWYKIHZvaWQgd3JpdGVTVkdJbWFnZShXVEY6OlRleHRT
dHJlYW0mLCBjb25zdCBSZW5kZXJTVkdJbWFnZSYsIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFn
Pik7CiB2b2lkIHdyaXRlU1ZHSW5saW5lVGV4dChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBSZW5k
ZXJTVkdJbmxpbmVUZXh0JiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKIHZvaWQgd3Jp
dGVTVkdUZXh0KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJlbmRlclNWR1RleHQmLCBPcHRpb25T
ZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKaW5kZXggZWMzNjlmMjFkOWRhOWRh
YWI1ZWNlMzY5YWVmZTk2MzA5NmIwNGQ4Mi4uNDM3Yzk5OTdmZGJjZDMzNTMxYmQwOTk1MzU4ODY2
ODU0MzAyOGI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyUnVieS5oIgogI2luY2x1ZGUgIlJlbmRlclJ1YnlCYXNlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyUnVieVJ1bi5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR0lubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJTVkdUZXh0LmgiCkBAIC0yODEsNiArMjgyLDEzIEBAIHZvaWQgUmVuZGVyVHJlZUJ1
aWxkZXI6OmF0dGFjaEludGVybmFsKFJlbmRlckVsZW1lbnQmIHBhcmVudCwgUmVuZGVyUHRyPFJl
bmRlck9iCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICBpZiAoaXM8UmVuZGVyU1ZHQ29udGFpbmVyPihwYXJlbnQpKSB7Cisg
ICAgICAgIHN2Z0J1aWxkZXIoKS5hdHRhY2goZG93bmNhc3Q8UmVuZGVyU1ZHQ29udGFpbmVyPihw
YXJlbnQpLCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyPihwYXJl
bnQpKSB7CiAgICAgICAgIHN2Z0J1aWxkZXIoKS5hdHRhY2goZG93bmNhc3Q8TGVnYWN5UmVuZGVy
U1ZHQ29udGFpbmVyPihwYXJlbnQpLCBXVEZNb3ZlKGNoaWxkKSwgYmVmb3JlQ2hpbGQpOwogICAg
ICAgICByZXR1cm47CkBAIC0zNzksNiArMzg3LDExIEBAIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IFJlbmRlclRyZWVCdWlsZGVyOjpkZXRhY2goUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJP
CiAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZT4ocGFyZW50KSkKICAgICAgICAgcmV0dXJuIHN2
Z0J1aWxkZXIoKS5kZXRhY2goZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lPihwYXJlbnQpLCBjaGls
ZCk7CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICBpZiAoaXM8UmVu
ZGVyU1ZHQ29udGFpbmVyPihwYXJlbnQpKQorICAgICAgICByZXR1cm4gc3ZnQnVpbGRlcigpLmRl
dGFjaChkb3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCksIGNoaWxkKTsKKyNlbmRp
ZgorCiAgICAgaWYgKGlzPExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lcj4ocGFyZW50KSkKICAgICAg
ICAgcmV0dXJuIHN2Z0J1aWxkZXIoKS5kZXRhY2goZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHQ29u
dGFpbmVyPihwYXJlbnQpLCBjaGlsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJTVkcuY3BwCmluZGV4IDhiMzVl
YzVlMGIzODViYTBlNmVlZmI1MGU3NmZhOTc1MWVhNWNlYzYuLmUxYjQ4OTlhMWFlNjViNjZjNjhl
MjYzMjUwNWY4Y2Y1NzdlMmJmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
TGVnYWN5UmVuZGVyU1ZHUm9vdC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR0lubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCkBAIC01MCw2ICs1MSwxNSBAQCB2b2lkIFJlbmRl
clRyZWVCdWlsZGVyOjpTVkc6OmF0dGFjaChMZWdhY3lSZW5kZXJTVkdSb290JiBwYXJlbnQsIFJl
bmRlclB0cjxSZW5kZQogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXYXNBZGRlZFRvVHJl
ZShjaGlsZFRvQWRkKTsKIH0KIAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQor
dm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6U1ZHOjphdHRhY2goUmVuZGVyU1ZHQ29udGFpbmVyJiBw
YXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkKQoreworICAgIGF1dG8mIGNoaWxkVG9BZGQgPSAqY2hpbGQ7CisgICAgbV9idWlsZGVy
LmF0dGFjaFRvUmVuZGVyRWxlbWVudChwYXJlbnQsIFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGls
ZCk7CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVkVG9UcmVlKGNoaWxkVG9B
ZGQpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OlNWRzo6YXR0YWNoKExl
Z2FjeVJlbmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsKICAgICBhdXRvJiBjaGlsZFRvQWRk
ID0gKmNoaWxkOwpAQCAtMTE3LDYgKzEyNywxNCBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBS
ZW5kZXJUcmVlQnVpbGRlcjo6U1ZHOjpkZXRhY2goUmVuZGVyU1ZHSW5saW5lJiBwYXJlbnQsCiAg
ICAgcmV0dXJuIHRha2VuQ2hpbGQ7CiB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKK1JlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGVyOjpTVkc6OmRl
dGFjaChSZW5kZXJTVkdDb250YWluZXImIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkKK3sK
KyAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJlUmVtb3ZlZEZyb21UcmVlKGNoaWxk
KTsKKyAgICByZXR1cm4gbV9idWlsZGVyLmRldGFjaEZyb21SZW5kZXJFbGVtZW50KHBhcmVudCwg
Y2hpbGQpOworfQorI2VuZGlmCisKIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVC
dWlsZGVyOjpTVkc6OmRldGFjaChMZWdhY3lSZW5kZXJTVkdDb250YWluZXImIHBhcmVudCwgUmVu
ZGVyT2JqZWN0JiBjaGlsZCkKIHsKICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50V2lsbEJl
UmVtb3ZlZEZyb21UcmVlKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmgKaW5kZXggNzY1ZmU0MGQ2MTVj
MzY5NTcwZGRmMzY0Nzg1YzcyZmQ2NDg4OTQ3YS4uYmRiOGNmZGNjMWVhYmY2ODQwYzFjZDc4ZmRj
MjkwNWE2Y2JhZmM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmgKQEAgLTI5LDggKzI5LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZWdhY3lSZW5kZXJTVkdSb290OwogY2xhc3MgTGVn
YWN5UmVuZGVyU1ZHQ29udGFpbmVyOworY2xhc3MgTGVnYWN5UmVuZGVyU1ZHUm9vdDsKK2NsYXNz
IFJlbmRlclNWR0NvbnRhaW5lcjsKIGNsYXNzIFJlbmRlclNWR0lubGluZTsKIGNsYXNzIFJlbmRl
clNWR1Jvb3Q7CiBjbGFzcyBSZW5kZXJTVkdUZXh0OwpAQCAtNDAsMjAgKzQxLDI0IEBAIGNsYXNz
IFJlbmRlclRyZWVCdWlsZGVyOjpTVkcgewogcHVibGljOgogICAgIFNWRyhSZW5kZXJUcmVlQnVp
bGRlciYpOwogCi0gICAgdm9pZCBhdHRhY2goTGVnYWN5UmVuZGVyU1ZHUm9vdCYgcGFyZW50LCBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7
Ci0gICAgdm9pZCBhdHRhY2goTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyJiBwYXJlbnQsIFJlbmRl
clB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKLSAg
ICB2b2lkIGF0dGFjaChSZW5kZXJTVkdJbmxpbmUmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9i
amVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogI2lmIEVOQUJMRShMQVlF
Ul9CQVNFRF9TVkdfRU5HSU5FKQogICAgIHZvaWQgYXR0YWNoKFJlbmRlclNWR1Jvb3QmIHBhcmVu
dCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpOworICAgIHZvaWQgYXR0YWNoKFJlbmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJQ
dHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAjZW5k
aWYKKyAgICB2b2lkIGF0dGFjaChMZWdhY3lSZW5kZXJTVkdSb290JiBwYXJlbnQsIFJlbmRlclB0
cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKKyAgICB2
b2lkIGF0dGFjaChMZWdhY3lSZW5kZXJTVkdDb250YWluZXImIHBhcmVudCwgUmVuZGVyUHRyPFJl
bmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOworICAgIHZvaWQg
YXR0YWNoKFJlbmRlclNWR0lubGluZSYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBj
aGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CisKICAgICB2b2lkIGF0dGFjaChSZW5k
ZXJTVkdUZXh0JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkKTsKIAotICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGRldGFj
aChMZWdhY3lSZW5kZXJTVkdSb290JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5f
VU5VU0VEX1JFVFVSTjsKLSAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5V
U0VEX1JFVFVSTjsKLSAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goUmVuZGVyU1ZH
SW5saW5lJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
ICNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKICAgICBSZW5kZXJQdHI8UmVuZGVy
T2JqZWN0PiBkZXRhY2goUmVuZGVyU1ZHUm9vdCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxk
KSBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gZGV0YWNo
KFJlbmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VO
VVNFRF9SRVRVUk47CiAjZW5kaWYKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2go
TGVnYWN5UmVuZGVyU1ZHUm9vdCYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VO
VVNFRF9SRVRVUk47CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gZGV0YWNoKExlZ2FjeVJl
bmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VOVVNF
RF9SRVRVUk47CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gZGV0YWNoKFJlbmRlclNWR0lu
bGluZSYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VOVVNFRF9SRVRVUk47CisK
ICAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goUmVuZGVyU1ZHVGV4dCYgcGFyZW50
LCBSZW5kZXJPYmplY3QmIGNoaWxkKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448931</attachid>
            <date>2022-01-12 04:11:27 -0800</date>
            <delta_ts>2022-01-12 04:15:04 -0800</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-235100-20220112041125.patch</filename>
            <type>text/plain</type>
            <size>34809</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ1ZGU3Y2NlZWRhY2Uw
NGRkODVjNGNmNzMxOGMwZTBkMTg4YTgyMi4uOWVlMjFiZmU5MTE0ZjdkMWJhMTEzMjc5OTIxMmZl
ZjY5NDJhNTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAxLTEyICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBCZWdpbiBsYXllci1hd2FyZSBSZW5kZXJTVkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTEwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBSZW5k
ZXJTVkdDb250YWluZXIgYmFzZWQgb24gdGhlIGRvd25zdHJlYW0gTEJTRSBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXMgbm90IHlldCBlbmFibGUgdGhlIGNyZWF0aW9u
IG9mIFJlbmRlclNWR0NvbnRhaW5lcgorICAgICAgICByZW5kZXJlcnMgaWYgTEJTRSBpcyBlbmFi
bGVkLCBzaW5jZSB0aGUgZGVyaXZlZCBjbGFzc2VzLCBzdWNoIGFzCisgICAgICAgIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lciAvIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIC8gLi4uLCBhcmUg
c3RpbGwKKyAgICAgICAgbWlzc2luZyBpbiBMQlNFLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0Ojppc1NWR0NvbnRhaW5lciBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6OmNhbGN1bGF0ZVZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHQ29udGFpbmVyOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250
YWluZXI6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
aXNPYmplY3RCb3VuZGluZ0JveFZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdDb250YWluZXI6OnBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpjb21wdXRlRGVjb3JhdGVkQm91
bmRpbmdCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbjo6aGFuZGxlUm9vdE9yQ29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdD
b250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OmRldGFjaCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyU1ZHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRyZWVCdWlsZGVyOjpTVkc6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUcmVlQnVpbGRlcjo6U1ZHOjpkZXRhY2gpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5oOgorCiAyMDIyLTAxLTEyICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBEZWZl
ciB0aGUgZW1pc3Npb24gb2YgQWRkQWNjZXNzaWJsZSBzaWduYWwgd2l0aCBBVFNQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCAwOGVjYmU4YmQ2YmFlMTc1MGFjNDM5Yzg3Y2NiMDhiMDBlMjQ5MjFiLi41ODY2
MTBlYTg3OWQ1YmQ2ZjI0YjRhNWVhMTE1ZGNkM2M4Yjk0NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjQ3Miw2ICsyNDcyLDcgQEAgcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSZWN0LmNwcAog
cmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAogcmVuZGVyaW5nL3N2Zy9MZWdh
Y3lSZW5kZXJTVkdTaGFwZS5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwCity
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRWxsaXBzZS5jcHAKIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFiZGZjMDViMjlm
M2UxNTFkMTBiYjY5MjhlMmI5YmJkYzU4YzI4NmYuLjY0ZGIxZTZlZjRmOTczODE3OWMwMWQwY2U0
NjI1YzY1YTdhM2M4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMzksNiArMTIzOSw3IEBACiAJCTQzNThFODgxMTM2MEEz
MTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzNThFODdGMTM2MEEzMTcwMEU0NzQ4QyAvKiBGRURyb3BTaGFk
b3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MzU4RTg4NjEzNjBBMzNCMDBFNDc0OEMgLyogU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM1OEU4ODMxMzYwQTMz
QjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKIAkJNDM2NzA4QzEx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg4MjEyRDlDQTRBMDAwNDQyMzQgLyogUmVu
ZGVyU1ZHQmxvY2suaCAqLzsgfTsKKwkJNDM2NzA4QzQzM0Y4Q0E0QzEwMDQ0MjM0IC8qIFJlbmRl
clNWR0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDM2NzA3NzQxMkQ5QkM0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0NvbnRhaW5lci5oICov
OyB9OwogCQk0MzY3MDhDMzEyRDlDQTRCMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHQ29udGFp
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3
MDg4NDEyRDlDQTRBMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyLmggKi87IH07
CiAJCTQzNjcwOEM1MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwODg2MTJE
OUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCAqLzsgfTsKIAkJNDM2NzA4
QzcxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4ODgxMkQ5Q0E0QTAw
MDQ0MjM0IC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oICovOyB9OwpAQCAtODk4Myw4ICs4
OTg0LDEwIEBACiAJCTQzNThFODg0MTM2MEEzM0IwMEU0NzQ4QyAvKiBTVkdGRURyb3BTaGFkb3dF
bGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdGRURyb3BTaGFkb3dFbGVtZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODExMkQ5Q0E0QTAwMDQ0
MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclNWR0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDM2NzA4ODIxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR0Jsb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0Jsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQzNjcwODg0NDJBOUFDM0IxMDA0NDIzNCAvKiBSZW5kZXJTVkdDb250YWlu
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4ODMxMkQ5Q0E0
QTAwMDQ0MjM0IC8qIExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lSZW5kZXJTVkdDb250YWluZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4NDEyRDlDQTRBMDAwNDQyMzQgLyogTGVn
YWN5UmVuZGVyU1ZHQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MzY3MDc3NDEyRDlCQzRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0NvbnRhaW5lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4NTEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVy
U1ZHR3JhZGllbnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclNWR0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzNjcwODg2MTJEOUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwODg3MTJEOUNBNEEwMDA0NDIzNCAvKiBS
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4OTMxLDYgKzE4OTM0LDggQEAKIAkJCQk0MzY3MDg4MTEyRDlDQTRBMDAw
NDQyMzQgLyogUmVuZGVyU1ZHQmxvY2suY3BwICovLAogCQkJCTQzNjcwODgyMTJEOUNBNEEwMDA0
NDIzNCAvKiBSZW5kZXJTVkdCbG9jay5oICovLAogCQkJCUNERjc0N0VBMjcwRjZEODgwMDhGRUVF
QyAvKiBSZW5kZXJTVkdCbG9ja0lubGluZXMuaCAqLywKKwkJCQk0MzY3MDg4NDQyQTlBQzNCMTAw
NDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCAqLywKKwkJCQk0MzY3MDc3NDEyRDlCQzRB
MDAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggKi8sCiAJCQkJMkI0MjM1OUYxNTI1MEY2
MDAwREJCQ0Q4IC8qIFJlbmRlclNWR0VsbGlwc2UuY3BwICovLAogCQkJCTJCNDIzNUEwMTUyNTBG
NjAwMERCQkNEOCAvKiBSZW5kZXJTVkdFbGxpcHNlLmggKi8sCiAJCQkJNDNDMDkyQjkxMkQ5RTRF
RTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovLApAQCAtMzY3MzgsNiAr
MzY3NDMsNyBAQAogCQkJCUJDNUVCNjY4MEU4MUNCNzEwMEIyNTk2NSAvKiBSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDM2NzA4QzExMkQ5Q0E0QjAwMDQ0MjM0IC8q
IFJlbmRlclNWR0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY3NDdFQjI3MEY2RDg4MDA4
RkVFRUMgLyogUmVuZGVyU1ZHQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MzY3
MDhDNDMzRjhDQTRDMTAwNDQyMzQgLyogUmVuZGVyU1ZHQ29udGFpbmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQjM2NUM4NDE1MjUxMTlFMDA5MUQyN0IgLyogUmVuZGVyU1ZHRWxsaXBzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDNDMDkyQkMxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0Zv
cmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzNjcwOEM1MTJEOUNBNEIwMDA0NDIz
NCAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDI0MzIyZGFlYjAyNzY4NDIyMzZiMjU2OWQz
MzkyNjU1OGU2NDQwZDYuLjRkYmE5Yzg1NDdkOGU3OGE5N2MxMTBmMTFlYzAyZDVhNjZiZDVkYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTMyOSw2ICszMjks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfTsKICAgICB2aXJ0dWFsIGJvb2wgaXNMZWdhY3lTVkdSb290KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdSb290KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkdDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FjeVNWR0NvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzU1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDJmMzlj
ZjcxOWYyZWMyZmI2NWU0OGFhNzUzNTE0ODI5YjFjMGVhMjIuLjAwZjU3MjQzYzU1ZDYxZWZhMjk2
MTI0ZWIzYjc4M2VlNGYxZWEwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0
TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyUXVvdGUuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5
LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdJbmxpbmVUZXh0LmgiCkBAIC01NzgsNiArNTc5LDEyIEBAIHZvaWQgd3JpdGUoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4
dEZsYWc+IGJlCiAgICAgICAgIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIodHMsIGRvd25jYXN0
PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyPihvKSwgYmVoYXZpb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIGlmIChp
czxSZW5kZXJTVkdDb250YWluZXI+KG8pKSB7CisgICAgICAgIHdyaXRlU1ZHQ29udGFpbmVyKHRz
LCBkb3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KG8pLCBiZWhhdmlvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVy
PihvKSkgewogICAgICAgICB3cml0ZVNWR0NvbnRhaW5lcih0cywgZG93bmNhc3Q8TGVnYWN5UmVu
ZGVyU1ZHQ29udGFpbmVyPihvKSwgYmVoYXZpb3IpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmJjZDVmZWFkNzE5NWZjNmM1NzJlY2IzYzc1Y2UwYjEyODk5NmQ4OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLCAyMDIxLCAyMDIyIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKKworI2lmIEVOQUJMRShMQVlFUl9C
QVNFRF9TVkdfRU5HSU5FKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkhpdFRlc3RSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUg
IkxheW91dFJlcGFpbnRlci5oIgorI2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKy8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHQ29udGFpbmVy
TGF5b3V0CisvLyAjaW5jbHVkZSAiU1ZHQ29udGFpbmVyTGF5b3V0LmgiCisjaW5jbHVkZSAiU1ZH
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlcy5oIgorI2luY2x1ZGUg
IlNWR1Jlc291cmNlc0NhY2hlLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
KyNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJTVkdDb250YWluZXIpOworCitSZW5kZXJT
VkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQorICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpCit7Cit9CisKK1JlbmRlclNWR0NvbnRhaW5lcjo6flJlbmRlclNWR0NvbnRh
aW5lcigpID0gZGVmYXVsdDsKKwordm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCit7
CisgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OworICAg
IEFTU0VSVChuZWVkc0xheW91dCgpKTsKKworICAgIExheW91dFJlcGFpbnRlciByZXBhaW50ZXIo
KnRoaXMsIGNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKTsKKworICAgIGNhbGN1bGF0ZVZp
ZXdwb3J0KCk7CisKKyAgICAvLyBVcGRhdGUgbGF5ZXIgdHJhbnNmb3JtIGJlZm9yZSBsYXlpbmcg
b3V0IGNoaWxkcmVuIChTVkcgbmVlZHMgYWNjZXNzIHRvIHRoZSB0cmFuc2Zvcm0gbWF0cmljZXMg
ZHVyaW5nIGxheW91dCBmb3Igb24tc2NyZWVuIHRleHQgZm9udC1zaXplIGNhbGN1bGF0aW9ucyku
CisgICAgLy8gRXZlbnR1YWxseSByZS11cGRhdGUgaWYgdGhlIHRyYW5zZm9ybSByZWZlcmVuY2Ug
Ym94LCByZWxldmFudCBmb3IgdHJhbnNmb3JtLW9yaWdpbiwgaGFzIGNoYW5nZWQgZHVyaW5nIGxh
eW91dC4KKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHTGF5ZXJU
cmFuc2Zvcm1VcGRhdGVyCisgICAgICAgIC8vIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlciB0cmFu
c2Zvcm1VcGRhdGVyKCp0aGlzKTsKKyAgICAgICAgbGF5b3V0Q2hpbGRyZW4oKTsKKyAgICB9CisK
KyAgICB1cGRhdGVMYXllckluZm9ybWF0aW9uKCk7CisKKyAgICAvLyBJbnZhbGlkYXRlIGFsbCBy
ZXNvdXJjZXMgb2YgdGhpcyBjbGllbnQgaWYgb3VyIGxheW91dCBjaGFuZ2VkLgorICAgIGlmIChl
dmVySGFkTGF5b3V0KCkgJiYgbmVlZHNMYXlvdXQoKSkKKyAgICAgICAgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudExheW91dENoYW5nZWQoKnRoaXMpOworCisgICAgcmVwYWludGVyLnJlcGFpbnRB
ZnRlckxheW91dCgpOworICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKK30KKwordm9pZCBSZW5kZXJT
VkdDb250YWluZXI6OmNhbGN1bGF0ZVZpZXdwb3J0KCkKK3sKKyAgICAvLyBGSVhNRTogW0xCU0Vd
IFVwc3RyZWFtIFNWR0xlbmd0aENvbnRleHQgY2hhbmdlcworICAgIC8vIGVsZW1lbnQoKS51cGRh
dGVMZW5ndGhDb250ZXh0KCk7Cit9CisKK3ZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXRD
aGlsZHJlbigpCit7CisgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdDb250YWluZXJM
YXlvdXQKKyAgICAvLyBTVkdDb250YWluZXJMYXlvdXQgY29udGFpbmVyTGF5b3V0KCp0aGlzKTsK
KyAgICAvLyBjb250YWluZXJMYXlvdXQubGF5b3V0Q2hpbGRyZW4oc2VsZk5lZWRzTGF5b3V0KCkg
fHwgU1ZHUmVuZGVyU3VwcG9ydDo6ZmlsdGVyc0ZvcmNlQ29udGFpbmVyTGF5b3V0KCp0aGlzKSk7
CisKKyAgICBTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uIGJvdW5kaW5nQm94Q29tcHV0YXRpb24o
KnRoaXMpOworICAgIG1fb2JqZWN0Qm91bmRpbmdCb3ggPSBib3VuZGluZ0JveENvbXB1dGF0aW9u
LmNvbXB1dGVEZWNvcmF0ZWRCb3VuZGluZ0JveChTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpv
YmplY3RCb3VuZGluZ0JveERlY29yYXRpb24sICZtX29iamVjdEJvdW5kaW5nQm94VmFsaWQpOwor
ICAgIG1fc3Ryb2tlQm91bmRpbmdCb3ggPSBib3VuZGluZ0JveENvbXB1dGF0aW9uLmNvbXB1dGVE
ZWNvcmF0ZWRCb3VuZGluZ0JveChTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpzdHJva2VCb3Vu
ZGluZ0JveERlY29yYXRpb24pOworICAgIHNldExheW91dFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVj
dChtX29iamVjdEJvdW5kaW5nQm94KSk7CisKKyAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFt
IFNWR0NvbnRhaW5lckxheW91dAorICAgIC8vIGNvbnRhaW5lckxheW91dC5wb3NpdGlvbkNoaWxk
cmVuUmVsYXRpdmVUb0NvbnRhaW5lcigpOworfQorCit2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkKK3sKKyAgICBSZW5kZXJTVkdNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UoZGlm
Ziwgb2xkU3R5bGUpOworCisgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBSZW5kZXJMYXll
ciBjaGFuZ2VzCisgICAgLy8gaWYgKGhhc0xheWVyKCkpCisgICAgLy8gICAgIGxheWVyKCktPnNl
dElzT3Bwb3J0dW5pc3RpY1N0YWNraW5nQ29udGV4dCh0cnVlKTsKK30KKworYm9vbCBSZW5kZXJT
VkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQoreworICAgIGF1dG8qIHJlc291cmNlcyA9IFNW
R1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcyk7CisgICAg
cmV0dXJuIHJlc291cmNlcyAmJiByZXNvdXJjZXMtPmZpbHRlcigpOworfQorCit2b2lkIFJlbmRl
clNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKK3sKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdCgqdGhpcykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdHls
ZSgpLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdSZW5kZXJTdXBwb3J0IGNoYW5nZXMKKyAg
ICAvLyBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnNob3VsZFBhaW50SGlkZGVuUmVuZGVyZXIoKnRo
aXMpKQorICAgIC8vICAgICByZXR1cm47CisKKyAgICAvLyBTcGVjOiBncm91cHMgdy9vIGNoaWxk
cmVuIHN0aWxsIG1heSByZW5kZXIgZmlsdGVyIGNvbnRlbnQuCisgICAgaWYgKCFmaXJzdENoaWxk
KCkgJiYgIXNlbGZXaWxsUGFpbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhaW50
SW5mby5waGFzZSA9PSBQYWludFBoYXNlOjpDbGlwcGluZ01hc2spIHsKKyAgICAgICAgLy8gRklY
TUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdSZW5kZXJTdXBwb3J0IGNoYW5nZXMKKyAgICAgICAgLy8g
U1ZHUmVuZGVyU3VwcG9ydDo6cGFpbnRTVkdDbGlwcGluZ01hc2soKnRoaXMsIHBhaW50SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGFkanVzdGVkUGFpbnRPZmZzZXQg
PSBwYWludE9mZnNldCArIGxheW91dExvY2F0aW9uKCk7CisgICAgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlOjpNYXNrKSB7CisgICAgICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJl
YW0gU1ZHUmVuZGVyU3VwcG9ydCBjaGFuZ2VzCisgICAgICAgIC8vIFNWR1JlbmRlclN1cHBvcnQ6
OnBhaW50U1ZHTWFzaygqdGhpcywgcGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gdmlzdWFsT3ZlcmZsb3dSZWN0ID0gdmlz
dWFsT3ZlcmZsb3dSZWN0RXF1aXZhbGVudCgpOworICAgIHZpc3VhbE92ZXJmbG93UmVjdC5tb3Zl
QnkoYWRqdXN0ZWRQYWludE9mZnNldCk7CisgICAgaWYgKCF2aXN1YWxPdmVyZmxvd1JlY3QuaW50
ZXJzZWN0cyhwYWludEluZm8ucmVjdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZTo6T3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZTo6U2VsZk91dGxpbmUpIHsKKyAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0
cmVhbSBvdXRsaW5lIHBhaW50aW5nCisgICAgICAgIC8vIHBhaW50U1ZHT3V0bGluZShwYWludElu
Zm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOworICAgIH0KK30KKworYm9vbCBSZW5kZXJTVkdDb250
YWluZXI6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhp
dFRlc3RBY3Rpb24pCit7CisgICAgYXV0byBhZGp1c3RlZExvY2F0aW9uID0gYWNjdW11bGF0ZWRP
ZmZzZXQgKyBsYXlvdXRMb2NhdGlvbigpOworCisgICAgYXV0byB2aXN1YWxPdmVyZmxvd1JlY3Qg
PSB2aXN1YWxPdmVyZmxvd1JlY3RFcXVpdmFsZW50KCk7CisgICAgdmlzdWFsT3ZlcmZsb3dSZWN0
Lm1vdmVCeShhZGp1c3RlZExvY2F0aW9uKTsKKyAgICBpZiAoIWxvY2F0aW9uSW5Db250YWluZXIu
aW50ZXJzZWN0cyh2aXN1YWxPdmVyZmxvd1JlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBhdXRvIGxvY2FsUG9pbnQgPSBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCk7CisgICAg
YXV0byBib3VuZGluZ0JveFRvcExlZnRDb3JuZXIgPSBmbG9vcmVkTGF5b3V0UG9pbnQob2JqZWN0
Qm91bmRpbmdCb3goKS5taW5YTWluWUNvcm5lcigpKTsKKyAgICBhdXRvIGNvb3JkaW5hdGVTeXN0
ZW1PcmlnaW5UcmFuc2xhdGlvbiA9IGJvdW5kaW5nQm94VG9wTGVmdENvcm5lciAtIGFkanVzdGVk
TG9jYXRpb247CisgICAgbG9jYWxQb2ludC5tb3ZlKGNvb3JkaW5hdGVTeXN0ZW1PcmlnaW5UcmFu
c2xhdGlvbik7CisKKyAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0Fy
ZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBH
aXZlIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIGEgY2hhbmNlIHRvIGFwcGx5IGl0cyB2aWV3
cG9ydCBjbGlwLgorICAgIGlmICghcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChsb2NhbFBvaW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9u
U2NvcGUgaGl0VGVzdFNjb3BlKCp0aGlzKTsKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0gbGFzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoIWNoaWxkLT5oYXNMYXllcigpICYmIGNoaWxkLT5ub2RlQXRQb2ludChyZXF1ZXN0LCBy
ZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFkanVzdGVkTG9jYXRpb24sIGhpdFRlc3RBY3Rp
b24pKSB7CisgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24pKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+
bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCB2aXN1YWxPdmVyZmxvd1JlY3Qp
ID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFjY2Vzc2liaWxpdHkgd2FudHMgdG8gcmV0dXJu
IFNWRyBjb250YWluZXJzLCBpZiBhcHByb3ByaWF0ZS4KKyAgICBpZiAocmVxdWVzdC50eXBlKCkg
JiBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWNjZXNzaWJpbGl0eUhpdFRlc3QgJiYgbV9vYmplY3RC
b3VuZGluZ0JveC5jb250YWlucyhsb2NhbFBvaW50KSkgeworICAgICAgICB1cGRhdGVIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXpl
KGFkanVzdGVkTG9jYXRpb24pKTsKKyAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFz
ZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWlu
ZXIsIHZpc3VhbE92ZXJmbG93UmVjdCkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8vIFNwZWM6IE9ubHkgZ3JhcGhp
Y2FsIGVsZW1lbnRzIGNhbiBiZSB0YXJnZXRlZCBieSB0aGUgbW91c2UsIHBlcmlvZC4KKyAgICAv
LyAxNi40OiAiSWYgdGhlcmUgYXJlIG5vIGdyYXBoaWNzIGVsZW1lbnRzIHdob3NlIHJlbGV2YW50
IGdyYXBoaWNzIGNvbnRlbnQgaXMgdW5kZXIgdGhlIHBvaW50ZXIgKGkuZS4sIHRoZXJlIGlzIG5v
IHRhcmdldCBlbGVtZW50KSwgdGhlIGV2ZW50IGlzIG5vdCBkaXNwYXRjaGVkLiIKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5H
SU5FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTc1YThmNjJjZDAzYzMyMTNhYmI4NTRjZjc0ZDE2NjVkOWM5NDQ1
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyNpbmNsdWRlICJSZW5kZXJT
VkdNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlNWR0JvdW5kaW5nQm94Q29tcHV0YXRpb24uaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdFbGVtZW50OworCitjbGFzcyBSZW5k
ZXJTVkdDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgeworICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoUmVuZGVyU1ZHQ29udGFpbmVyKTsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5SZW5kZXJTVkdDb250YWluZXIoKTsKKworICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGlzT2JqZWN0Qm91bmRpbmdC
b3hWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZDsgfQorCisg
ICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9v
YmplY3RCb3VuZGluZ0JveDsgfQorICAgIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc3Ryb2tlQm91bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTVkdC
b3VuZGluZ0JveENvbXB1dGF0aW9uOjpjb21wdXRlUmVwYWludEJvdW5kaW5nQm94KCp0aGlzKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgUmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKKworICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHQ29udGFpbmVyIjsgfQorICAgIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXRDaGlsZHJlbigpOworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmlld3BvcnQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JikgeyByZXR1cm4g
dHJ1ZTsgfQorCisgICAgYm9vbCBzZWxmV2lsbFBhaW50KCk7CisKKyAgICBib29sIG1fb2JqZWN0
Qm91bmRpbmdCb3hWYWxpZCB7IGZhbHNlIH07CisgICAgRmxvYXRSZWN0IG1fb2JqZWN0Qm91bmRp
bmdCb3g7CisgICAgRmxvYXRSZWN0IG1fc3Ryb2tlQm91bmRpbmdCb3g7CisKK3ByaXZhdGU6Cisg
ICAgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5E
RVJfT0JKRUNUKFJlbmRlclNWR0NvbnRhaW5lciwgaXNTVkdDb250YWluZXIoKSkKKworI2VuZGlm
IC8vIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbi5jcHAKaW5k
ZXggYzA3NjBmOWJlZTJhODgxZDM1ZWJmMGMxYzNjM2EzYzVjODE0MjI0My4uNzk4MDk4ZGViMmM5
ODU0NjViOTE2MDc4NjQ3OTRjODZlZmI0NjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0JvdW5kaW5nQm94Q29tcHV0YXRpb24uY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKICNpbmNs
dWRlICJSZW5kZXJDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCkBAIC02Myw5ICs2NCw3
IEBAIEZsb2F0UmVjdCBTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpjb21wdXRlRGVjb3JhdGVk
Qm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpCiAKICAgICAvLyAtIGEgY29udGFpbmVyIGVsZW1l
bnQgKFJlbmRlclNWR1Jvb3QgLyBSZW5kZXJTVkdDb250YWluZXIpCiAgICAgLy8gLSAidXNlIiAo
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcikKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIG5ldyBSZW5kZXJTVkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KLSAgICAvLyBpZiAo
aXM8UmVuZGVyU1ZHUm9vdD4obV9yZW5kZXJlcikgfHwgaXM8UmVuZGVyU1ZHQ29udGFpbmVyPiht
X3JlbmRlcmVyKSkKLSAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4obV9yZW5kZXJlcikpCisgICAg
aWYgKGlzPFJlbmRlclNWR1Jvb3Q+KG1fcmVuZGVyZXIpIHx8IGlzPFJlbmRlclNWR0NvbnRhaW5l
cj4obV9yZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBoYW5kbGVSb290T3JDb250YWluZXIob3B0
aW9ucywgYm91bmRpbmdCb3hWYWxpZCk7CiAKICAgICAvLyAtICJmb3JlaWduT2JqZWN0IgpAQCAt
MTQxLDEwICsxNDAsOCBAQCBGbG9hdFJlY3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6aGFu
ZGxlUm9vdE9yQ29udGFpbmVyKGNvbnN0IFNWR0JvdW5kaW5nQm94QwogICAgICAgICByZXR1cm4g
bGF5ZXJUcmFuc2Zvcm0uaXNJZGVudGl0eSgpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29w
dGlvbmFsKFdURk1vdmUobGF5ZXJUcmFuc2Zvcm0pKTsKICAgICB9OwogCi0gICAgYXV0byB1bml0
ZUJvdW5kaW5nQm94UmVzcGVjdGluZ1ZhbGlkaXR5ID0gW10gKGJvb2wmIGJveFZhbGlkLCBGbG9h
dFJlY3QmIGJveCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgLyogY2hpbGQgKi8sIGNv
bnN0IEZsb2F0UmVjdCYgY2hpbGRCb3VuZGluZ0JveCkgewotICAgICAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIG5ldyBSZW5kZXJTVkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KLSAgICAg
ICAgLy8gYm9vbCBpc0JvdW5kaW5nQm94VmFsaWQgPSBpczxSZW5kZXJTVkdDb250YWluZXI+KGNo
aWxkKSA/IGRvd25jYXN0PFJlbmRlclNWR0NvbnRhaW5lcj4oY2hpbGQpLmlzT2JqZWN0Qm91bmRp
bmdCb3hWYWxpZCgpIDogdHJ1ZTsKLSAgICAgICAgYm9vbCBpc0JvdW5kaW5nQm94VmFsaWQgPSB0
cnVlOworICAgIGF1dG8gdW5pdGVCb3VuZGluZ0JveFJlc3BlY3RpbmdWYWxpZGl0eSA9IFtdIChi
b29sJiBib3hWYWxpZCwgRmxvYXRSZWN0JiBib3gsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QmIGNoaWxkLCBjb25zdCBGbG9hdFJlY3QmIGNoaWxkQm91bmRpbmdCb3gpIHsKKyAgICAgICAg
Ym9vbCBpc0JvdW5kaW5nQm94VmFsaWQgPSBpczxSZW5kZXJTVkdDb250YWluZXI+KGNoaWxkKSA/
IGRvd25jYXN0PFJlbmRlclNWR0NvbnRhaW5lcj4oY2hpbGQpLmlzT2JqZWN0Qm91bmRpbmdCb3hW
YWxpZCgpIDogdHJ1ZTsKICAgICAgICAgaWYgKCFpc0JvdW5kaW5nQm94VmFsaWQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTE2OCwxNiArMTY1LDE1IEBAIEZsb2F0UmVjdCBTVkdCb3VuZGlu
Z0JveENvbXB1dGF0aW9uOjpoYW5kbGVSb290T3JDb250YWluZXIoY29uc3QgU1ZHQm91bmRpbmdC
b3hDCiAgICAgLy8gICAgLSBPdGhlcndpc2UsIHNldCBib3ggdG8gYmUgdGhlIHVuaW9uIG9mIGJv
eCBhbmQgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgYWxnb3JpdGhtIHRvIGNvbXB1dGUgYSBi
b3VuZGluZyBib3ggd2l0aCBjaGlsZAogICAgIC8vICAgICAgYXMgdGhlIGVsZW1lbnQgYW5kIHRo
ZSBzYW1lIHZhbHVlcyBmb3Igc3BhY2UsIGZpbGwsIHN0cm9rZSwgbWFya2VycyBhbmQgY2xpcHBl
ZCBhcyB0aGUgY29ycmVzcG9uZGluZyBhbGdvcml0aG0gaW5wdXQgdmFsdWVzLgogICAgIGZvciAo
YXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxSZW5kZXJMYXllck1vZGVsT2JqZWN0PihtX3Jl
bmRlcmVyKSkgewotICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIG5ldyBSZW5kZXJT
VkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0
cmVhbSBuZXcgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyIGltcGxlbWVudGF0aW9uCiAgICAgICAg
IC8vIGlmIChpczxSZW5kZXJTVkdIaWRkZW5Db250YWluZXI+KGNoaWxkKSB8fCAoaXM8UmVuZGVy
U1ZHU2hhcGU+KGNoaWxkKSAmJiBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4oY2hpbGQpLmlzUmVu
ZGVyaW5nRGlzYWJsZWQoKSkpCiAgICAgICAgIGlmIChpczxSZW5kZXJTVkdTaGFwZT4oY2hpbGQp
ICYmIGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPihjaGlsZCkuaXNSZW5kZXJpbmdEaXNhYmxlZCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbiBjaGlsZEJvdW5kaW5nQm94Q29tcHV0YXRpb24oY2hpbGQpOwogICAgICAgICBhdXRvIGNo
aWxkQm94ID0gY2hpbGRCb3VuZGluZ0JveENvbXB1dGF0aW9uLmNvbXB1dGVEZWNvcmF0ZWRCb3Vu
ZGluZ0JveChvcHRpb25zKTsKLSAgICAgICAgLy8gRklYTUU6IFVwc3RyZWFtIG5ldyBSZW5kZXJT
VkdDb250YWluZXIgaW1wbGVtZW50YXRpb24KLSAgICAgICAgLy8gaWYgKG9wdGlvbnMuY29udGFp
bnMoRGVjb3JhdGlvbk9wdGlvbjo6T3ZlcnJpZGVCb3hXaXRoRmlsdGVyQm94Rm9yQ2hpbGRyZW4p
ICYmIGlzPFJlbmRlclNWR0NvbnRhaW5lcj4oY2hpbGQpKQotICAgICAgICAvLyAgICBjaGlsZEJv
dW5kaW5nQm94Q29tcHV0YXRpb24uYWRqdXN0Qm94Rm9yQ2xpcHBpbmdBbmRFZmZlY3RzKHsgRGVj
b3JhdGlvbk9wdGlvbjo6T3ZlcnJpZGVCb3hXaXRoRmlsdGVyQm94IH0sIGNoaWxkQm94KTsKKyAg
ICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRGVjb3JhdGlvbk9wdGlvbjo6T3ZlcnJpZGVCb3hX
aXRoRmlsdGVyQm94Rm9yQ2hpbGRyZW4pICYmIGlzPFJlbmRlclNWR0NvbnRhaW5lcj4oY2hpbGQp
KQorICAgICAgICAgICAgY2hpbGRCb3VuZGluZ0JveENvbXB1dGF0aW9uLmFkanVzdEJveEZvckNs
aXBwaW5nQW5kRWZmZWN0cyh7IERlY29yYXRpb25PcHRpb246Ok92ZXJyaWRlQm94V2l0aEZpbHRl
ckJveCB9LCBjaGlsZEJveCk7CiAKICAgICAgICAgaWYgKGF1dG8gbGF5ZXJUcmFuc2Zvcm0gPSB0
cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21DaGlsZChjaGlsZCkpCiAgICAgICAgICAgICBjaGlsZEJv
eCA9IGxheWVyVHJhbnNmb3JtLT5tYXBSZWN0KGNoaWxkQm94KTsKQEAgLTIwMCw3ICsxOTYsNyBA
QCBGbG9hdFJlY3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6aGFuZGxlUm9vdE9yQ29udGFp
bmVyKGNvbnN0IFNWR0JvdW5kaW5nQm94QwogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKERlY29y
YXRpb25PcHRpb246OkluY2x1ZGVDbGlwcGVycykgJiYgbV9yZW5kZXJlci5oYXNOb25WaXNpYmxl
T3ZlcmZsb3coKSkgewogICAgICAgICBBU1NFUlQobV9yZW5kZXJlci5oYXNMYXllcigpKTsKIAot
ICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIG5ldyBSZW5kZXJTVkdDb250YWluZXIg
LyBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICAvLyBGSVhN
RTogW0xCU0VdIFVwc3RyZWFtIG5ldyBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciAvIFJlbmRl
clNWR1Jlc291cmNlTWFya2VyIGltcGxlbWVudGF0aW9uCiAgICAgICAgIC8vIEFTU0VSVChpczxS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcj4obV9yZW5kZXJlcikgfHwgaXM8UmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXI+KG1fcmVuZGVyZXIpIHx8IGlzPFJlbmRlclNWR1Jvb3Q+KG1fcmVuZGVyZXIp
KTsKICAgICAgICAgQVNTRVJUKGlzPFJlbmRlclNWR1Jvb3Q+KG1fcmVuZGVyZXIpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAKaW5kZXggNGU4YzcwMTE5ZDA0OTM4MzJlZDY2NDFlMGI4NjJhMjU1NmJiOTIxZi4uZmU1NTli
ZDcwYjFkMGNmNGIxYzVhNWIxYzkwYTI5NjM1ZThiMjczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1h
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclNWR0Nv
bnRhaW5lci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0dyYWRpZW50U3RvcElubGluZXMuaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQu
aCIKQEAgLTUzNyw2ICs1MzgsMTcgQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICB3cml0
ZUNoaWxkcmVuKHRzLCByZXNvdXJjZSwgYmVoYXZpb3IpOwogfQogCisjaWYgRU5BQkxFKExBWUVS
X0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIHdyaXRlU1ZHQ29udGFpbmVyKFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJTVkdDb250YWluZXImIGNvbnRhaW5lciwgT3B0aW9uU2V0PFJlbmRlckFz
VGV4dEZsYWc+IGJlaGF2aW9yKQoreworICAgIHdyaXRlU3RhbmRhcmRQcmVmaXgodHMsIGNvbnRh
aW5lciwgYmVoYXZpb3IpOworICAgIHdyaXRlUG9zaXRpb25BbmRTdHlsZSh0cywgY29udGFpbmVy
LCBiZWhhdmlvcik7CisgICAgdHMgPDwgIlxuIjsKKyAgICB3cml0ZVJlc291cmNlcyh0cywgY29u
dGFpbmVyLCBiZWhhdmlvcik7CisgICAgd3JpdGVDaGlsZHJlbih0cywgY29udGFpbmVyLCBiZWhh
dmlvcik7Cit9CisjZW5kaWYKKwogdm9pZCB3cml0ZVNWR0NvbnRhaW5lcihUZXh0U3RyZWFtJiB0
cywgY29uc3QgTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyJiBjb250YWluZXIsIE9wdGlvblNldDxS
ZW5kZXJBc1RleHRGbGFnPiBiZWhhdmlvcikKIHsKICAgICAvLyBDdXJyZW50bHkgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUgaGFzIG5vIG1lYW5pbmdmdWwgb3V0cHV0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaAppbmRl
eCBhZTJmZWY4YzY4YzA4ZjI2YjYxNjRmYTljMTIwZDBkZjg0NDc0NTA2Li43NjU5MzIyNjIzMGQ1
MDI1ZDc4ZjIzYjBlMzg1MTRmNThiZjMxZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaApAQCAtMzQsMTIgKzM0LDEzIEBAIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIENvbG9yOwogY2xhc3MgRmxvYXRSZWN0OwogY2xh
c3MgRmxvYXRTaXplOworY2xhc3MgTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyOwogY2xhc3MgTGVn
YWN5UmVuZGVyU1ZHUm9vdDsKIGNsYXNzIExlZ2FjeVJlbmRlclNWR1NoYXBlOwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFJlbmRlckltYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwotY2xhc3MgTGVnYWN5
UmVuZGVyU1ZHQ29udGFpbmVyOworY2xhc3MgUmVuZGVyU1ZHQ29udGFpbmVyOwogY2xhc3MgUmVu
ZGVyU1ZHR3JhZGllbnRTdG9wOwogY2xhc3MgUmVuZGVyU1ZHSW1hZ2U7CiBjbGFzcyBSZW5kZXJT
VkdJbmxpbmVUZXh0OwpAQCAtNTksNiArNjAsOSBAQCB2b2lkIHdyaXRlKFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IFJlbmRlclNWR1NoYXBlJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KQog
dm9pZCB3cml0ZVNWR0dyYWRpZW50U3RvcChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBSZW5kZXJT
VkdHcmFkaWVudFN0b3AmLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOwogdm9pZCB3cml0
ZVNWR1Jlc291cmNlQ29udGFpbmVyKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKIHZvaWQgd3Jp
dGVTVkdDb250YWluZXIoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTGVnYWN5UmVuZGVyU1ZHQ29u
dGFpbmVyJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKKyNpZiBFTkFCTEUoTEFZRVJf
QkFTRURfU1ZHX0VOR0lORSkKK3ZvaWQgd3JpdGVTVkdDb250YWluZXIoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgUmVuZGVyU1ZHQ29udGFpbmVyJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+
KTsKKyNlbmRpZgogdm9pZCB3cml0ZVNWR0ltYWdlKFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJl
bmRlclNWR0ltYWdlJiwgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+KTsKIHZvaWQgd3JpdGVT
VkdJbmxpbmVUZXh0KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFJlbmRlclNWR0lubGluZVRleHQm
LCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4pOwogdm9pZCB3cml0ZVNWR1RleHQoV1RGOjpU
ZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyU1ZHVGV4dCYsIE9wdGlvblNldDxSZW5kZXJBc1RleHRG
bGFnPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCBlYzM2OWYyMWQ5ZGE5ZGFhYjVlY2UzNjlhZWZlOTYz
MDk2YjA0ZDgyLi40MzdjOTk5N2ZkYmNkMzM1MzFiZDA5OTUzNTg4NjY4NTQzMDI4YjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJSdWJ5LmgiCiAj
aW5jbHVkZSAiUmVuZGVyUnVieUJhc2UuaCIKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCisj
aW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5l
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQu
aCIKQEAgLTI4MSw2ICsyODIsMTMgQEAgdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6YXR0YWNoSW50
ZXJuYWwoUmVuZGVyRWxlbWVudCYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2IKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAg
IGlmIChpczxSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCkpIHsKKyAgICAgICAgc3ZnQnVpbGRl
cigpLmF0dGFjaChkb3duY2FzdDxSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCksIFdURk1vdmUo
Y2hpbGQpLCBiZWZvcmVDaGlsZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwog
ICAgIGlmIChpczxMZWdhY3lSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCkpIHsKICAgICAgICAg
c3ZnQnVpbGRlcigpLmF0dGFjaChkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdDb250YWluZXI+KHBh
cmVudCksIFdURk1vdmUoY2hpbGQpLCBiZWZvcmVDaGlsZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTM3OSw2ICszODcsMTEgQEAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxk
ZXI6OmRldGFjaChSZW5kZXJFbGVtZW50JiBwYXJlbnQsIFJlbmRlck8KICAgICBpZiAoaXM8UmVu
ZGVyU1ZHSW5saW5lPihwYXJlbnQpKQogICAgICAgICByZXR1cm4gc3ZnQnVpbGRlcigpLmRldGFj
aChkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmU+KHBhcmVudCksIGNoaWxkKTsKIAorI2lmIEVOQUJM
RShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIGlmIChpczxSZW5kZXJTVkdDb250YWluZXI+
KHBhcmVudCkpCisgICAgICAgIHJldHVybiBzdmdCdWlsZGVyKCkuZGV0YWNoKGRvd25jYXN0PFJl
bmRlclNWR0NvbnRhaW5lcj4ocGFyZW50KSwgY2hpbGQpOworI2VuZGlmCisKICAgICBpZiAoaXM8
TGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVyPihwYXJlbnQpKQogICAgICAgICByZXR1cm4gc3ZnQnVp
bGRlcigpLmRldGFjaChkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdDb250YWluZXI+KHBhcmVudCks
IGNoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyU1ZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlclNWRy5jcHAKaW5kZXggOGIzNWVjNWUwYjM4NWJhMGU2ZWVm
YjUwZTc2ZmE5NzUxZWE1Y2VjNi4uZTFiNDg5OWExYWU2NWI2NmM2OGUyNjMyNTA1ZjhjZjU3N2Uy
YmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVCdWlsZGVyU1ZHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJTVkcuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJMZWdhY3lSZW5kZXJTVkdDb250YWluZXIuaCIKICNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdS
b290LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHSW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1RleHQuaCIKQEAgLTUwLDYgKzUxLDE1IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OlNW
Rzo6YXR0YWNoKExlZ2FjeVJlbmRlclNWR1Jvb3QmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlCiAg
ICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVkVG9UcmVlKGNoaWxkVG9BZGQpOwog
fQogCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlclRyZWVC
dWlsZGVyOjpTVkc6OmF0dGFjaChSZW5kZXJTVkdDb250YWluZXImIHBhcmVudCwgUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCit7CisgICAg
YXV0byYgY2hpbGRUb0FkZCA9ICpjaGlsZDsKKyAgICBtX2J1aWxkZXIuYXR0YWNoVG9SZW5kZXJF
bGVtZW50KHBhcmVudCwgV1RGTW92ZShjaGlsZCksIGJlZm9yZUNoaWxkKTsKKyAgICBTVkdSZXNv
dXJjZXNDYWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUoY2hpbGRUb0FkZCk7Cit9CisjZW5kaWYK
Kwogdm9pZCBSZW5kZXJUcmVlQnVpbGRlcjo6U1ZHOjphdHRhY2goTGVnYWN5UmVuZGVyU1ZHQ29u
dGFpbmVyJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKQogewogICAgIGF1dG8mIGNoaWxkVG9BZGQgPSAqY2hpbGQ7CkBAIC0x
MTcsNiArMTI3LDE0IEBAIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGVy
OjpTVkc6OmRldGFjaChSZW5kZXJTVkdJbmxpbmUmIHBhcmVudCwKICAgICByZXR1cm4gdGFrZW5D
aGlsZDsKIH0KIAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxkZXI6OlNWRzo6ZGV0YWNoKFJlbmRlclNWR0Nv
bnRhaW5lciYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxkKQoreworICAgIFNWR1Jlc291cmNl
c0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVkRnJvbVRyZWUoY2hpbGQpOworICAgIHJldHVybiBt
X2J1aWxkZXIuZGV0YWNoRnJvbVJlbmRlckVsZW1lbnQocGFyZW50LCBjaGlsZCk7Cit9CisjZW5k
aWYKKwogUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVuZGVyVHJlZUJ1aWxkZXI6OlNWRzo6ZGV0
YWNoKExlZ2FjeVJlbmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJPYmplY3QmIGNoaWxk
KQogewogICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXaWxsQmVSZW1vdmVkRnJvbVRyZWUo
Y2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyU1ZHLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZUJ1aWxkZXJTVkcuaAppbmRleCA3NjVmZTQwZDYxNWMzNjk1NzBkZGYzNjQ3ODVj
NzJmZDY0ODg5NDdhLi5iZGI4Y2ZkY2MxZWFiZjY4NDBjMWNkNzhmZGMyOTA1YTZjYmFmYzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1
aWxkZXJTVkcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZUJ1aWxkZXJTVkcuaApAQCAtMjksOCArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIExlZ2FjeVJlbmRlclNWR1Jvb3Q7CiBjbGFzcyBMZWdhY3lSZW5kZXJTVkdDb250
YWluZXI7CitjbGFzcyBMZWdhY3lSZW5kZXJTVkdSb290OworY2xhc3MgUmVuZGVyU1ZHQ29udGFp
bmVyOwogY2xhc3MgUmVuZGVyU1ZHSW5saW5lOwogY2xhc3MgUmVuZGVyU1ZHUm9vdDsKIGNsYXNz
IFJlbmRlclNWR1RleHQ7CkBAIC00MCwyMCArNDEsMjQgQEAgY2xhc3MgUmVuZGVyVHJlZUJ1aWxk
ZXI6OlNWRyB7CiBwdWJsaWM6CiAgICAgU1ZHKFJlbmRlclRyZWVCdWlsZGVyJik7CiAKLSAgICB2
b2lkIGF0dGFjaChMZWdhY3lSZW5kZXJTVkdSb290JiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJP
YmplY3Q+IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKLSAgICB2b2lkIGF0dGFj
aChMZWdhY3lSZW5kZXJTVkdDb250YWluZXImIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVj
dD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwotICAgIHZvaWQgYXR0YWNoKFJl
bmRlclNWR0lubGluZSYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGlsZCwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJ
TkUpCiAgICAgdm9pZCBhdHRhY2goUmVuZGVyU1ZHUm9vdCYgcGFyZW50LCBSZW5kZXJQdHI8UmVu
ZGVyT2JqZWN0PiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CisgICAgdm9pZCBh
dHRhY2goUmVuZGVyU1ZHQ29udGFpbmVyJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKICNlbmRpZgorICAgIHZvaWQgYXR0
YWNoKExlZ2FjeVJlbmRlclNWR1Jvb3QmIHBhcmVudCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4g
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOworICAgIHZvaWQgYXR0YWNoKExlZ2Fj
eVJlbmRlclNWR0NvbnRhaW5lciYgcGFyZW50LCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjaGls
ZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CisgICAgdm9pZCBhdHRhY2goUmVuZGVyU1ZH
SW5saW5lJiBwYXJlbnQsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKTsKKwogICAgIHZvaWQgYXR0YWNoKFJlbmRlclNWR1RleHQmIHBhcmVu
dCwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hp
bGQpOwogCi0gICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gZGV0YWNoKExlZ2FjeVJlbmRlclNW
R1Jvb3QmIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURfUkVUVVJOOwot
ICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGRldGFjaChMZWdhY3lSZW5kZXJTVkdDb250YWlu
ZXImIHBhcmVudCwgUmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURfUkVUVVJOOwotICAg
IFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGRldGFjaChSZW5kZXJTVkdJbmxpbmUmIHBhcmVudCwg
UmVuZGVyT2JqZWN0JiBjaGlsZCkgV0FSTl9VTlVTRURfUkVUVVJOOwogI2lmIEVOQUJMRShMQVlF
Ul9CQVNFRF9TVkdfRU5HSU5FKQogICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGRldGFjaChS
ZW5kZXJTVkdSb290JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JF
VFVSTjsKKyAgICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goUmVuZGVyU1ZHQ29udGFp
bmVyJiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICNl
bmRpZgorICAgIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGRldGFjaChMZWdhY3lSZW5kZXJTVkdS
b290JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goTGVnYWN5UmVuZGVyU1ZHQ29udGFpbmVy
JiBwYXJlbnQsIFJlbmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBS
ZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBkZXRhY2goUmVuZGVyU1ZHSW5saW5lJiBwYXJlbnQsIFJl
bmRlck9iamVjdCYgY2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKwogICAgIFJlbmRlclB0cjxS
ZW5kZXJPYmplY3Q+IGRldGFjaChSZW5kZXJTVkdUZXh0JiBwYXJlbnQsIFJlbmRlck9iamVjdCYg
Y2hpbGQpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogcHJpdmF0ZToK
</data>
<flag name="review"
          id="474906"
          type_id="1"
          status="+"
          setter="rbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>