<?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>218374</bug_id>
          
          <creation_ts>2020-10-29 22:23:00 -0700</creation_ts>
          <short_desc>Convert ScrollingTreeNode change flags to an OptionSet&lt;&gt;</short_desc>
          <delta_ts>2020-10-30 07:00:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702975</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-29 22:23:00 -0700</bug_when>
    <thetext>Convert ScrollingTreeNode change flags to an OptionSet&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702976</commentid>
    <comment_count>1</comment_count>
      <attachid>412713</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-29 22:23:55 -0700</bug_when>
    <thetext>Created attachment 412713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702978</commentid>
    <comment_count>2</comment_count>
      <attachid>412715</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-29 22:32:00 -0700</bug_when>
    <thetext>Created attachment 412715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702979</commentid>
    <comment_count>3</comment_count>
      <attachid>412715</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-29 22:37:02 -0700</bug_when>
    <thetext>Comment on attachment 412715
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:110
&gt; +template&lt;&gt; struct EnumTraits&lt;WebCore::ScrollingStateNode::Property&gt; {
&gt; +    using values = EnumValues&lt;
&gt; +        WebCore::ScrollingStateNode::Property,
&gt; +        WebCore::ScrollingStateNode::Property::Layer,
&gt; +        WebCore::ScrollingStateNode::Property::ChildNodes,
&gt; +        WebCore::ScrollingStateNode::Property::ScrollableAreaSize,

Sad that this thing has to list all values again. Does it at least fail at compile time if you miss something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702980</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-29 22:57:14 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 412715 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412715&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:110
&gt; &gt; +template&lt;&gt; struct EnumTraits&lt;WebCore::ScrollingStateNode::Property&gt; {
&gt; &gt; +    using values = EnumValues&lt;
&gt; &gt; +        WebCore::ScrollingStateNode::Property,
&gt; &gt; +        WebCore::ScrollingStateNode::Property::Layer,
&gt; &gt; +        WebCore::ScrollingStateNode::Property::ChildNodes,
&gt; &gt; +        WebCore::ScrollingStateNode::Property::ScrollableAreaSize,
&gt; 
&gt; Sad that this thing has to list all values again. Does it at least fail at
&gt; compile time if you miss something?

It does compile but I assume IPC decoding would throw a failure at runtime. Not ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703044</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-30 06:59:26 -0700</bug_when>
    <thetext>Committed r269184: &lt;https://trac.webkit.org/changeset/269184&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412715.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703045</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-30 07:00:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/70873217&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412713</attachid>
            <date>2020-10-29 22:23:55 -0700</date>
            <delta_ts>2020-10-29 22:31:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218374-20201029222354.patch</filename>
            <type>text/plain</type>
            <size>146810</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2OWI0YzJlYzgyOTE2
NzA1NGU2ZmMzMWVlN2I1NDU5ZDQ3NDRhMi4uNjFmNGMxNTQ0MDdhNTUwZGFlMmYwMTE0MDA1YzAx
YWE0MjVhNjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0xMC0yOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFNj
cm9sbGluZ1RyZWVOb2RlIGNoYW5nZSBmbGFncyB0byBhbiBPcHRpb25TZXQ8PgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcmVzcyB0aGUgRklYTUUg
aW4gU2Nyb2xsaW5nU3RhdGVOb2RlLmggYW5kIHVzZSBhbiBPcHRpb25TZXQ8PiBmb3IgdGhlCisg
ICAgICAgIFNjcm9sbGluZ1N0YXRlIHRyZWUgY2hhbmdlIGZsYWdzLiBUaGlzIHJlcXVpcmVkIG1v
dmluZyB0aGVtIGFsbCBpbnRvCisgICAgICAgIHRoZSBzYW1lIGVudW0gY2xhc3MgaW4gU2Nyb2xs
aW5nU3RhdGVOb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
aXhlZE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6
OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVGaXhlZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJS
ZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFByb3Bl
cnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEZyYW1lU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEV2ZW50VHJhY2tpbmdS
ZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldExheW91dFZpZXdwb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRN
aW5MYXlvdXRWaWV3cG9ydE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldE92ZXJyaWRl
VmlzdWFsVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0VG9wQ29udGVu
dEluc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRSb290Q29udGVudHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRJbnNldENs
aXBMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFZp
c3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNl
dFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbGluZ1N0YXRlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVh
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6cmVtb3ZlQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRz
QWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omhh
c0NoYW5nZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZTo6aGFzQ2hhbmdlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6cmVzZXRDaGFuZ2VkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmNoYW5nZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0Q2hhbmdlZFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3Bl
cnR5Q2hhbmdlZEJpdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZXNB
ZnRlclJlYXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU6OnNldE92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpzZXRQcm9wZXJ0eUNo
YW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2Vz
QWZ0ZXJSZWF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9u
ZWROb2RlOjpzZXRSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjp1cGRhdGVDb25zdHJhaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFBy
b3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxhYmxlQXJlYVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGlj
YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UmVxdWVzdGVkU2Nyb2xsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldElz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0Fm
dGVyUmVhdHRhY2gpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjp1cGRhdGVDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OnNldFByb3BlcnR5Q2hhbmdl
ZEJpdHNBZnRlclJlYXR0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVl
Ojpub2RlV2FzUmVhdHRhY2hlZFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21t
aXRUcmVlU3RhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
aXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2Ev
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRTY3JvbGxlckltcHNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21t
aXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRl
RnJvbVN0YXRlTm9kZSk6CisKIDIwMjAtMTAtMjkgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVtb3ZlIHNvZnQgbGlua2luZyBvZiBOZXR3
b3JrRXh0ZW5zaW9uLmZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NjQ1M2Q4MWIzZmVkMzkzZTYwZmZk
N2ZkNmU3NDc2YWI3MGI2Mjc2Li5iNTU1ZDBlZTA3ZWIxNTRkOWY2MjRhZGNjZWMwZDYzYTBjYTkz
NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTEwLTI5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgU2Nyb2xsaW5nVHJl
ZU5vZGUgY2hhbmdlIGZsYWdzIHRvIGFuIE9wdGlvblNldDw+CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzNzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRyZXNzIHRoZSBGSVhNRSBpbiBTY3JvbGxp
bmdTdGF0ZU5vZGUuaCBhbmQgdXNlIGFuIE9wdGlvblNldDw+IGZvciB0aGUKKyAgICAgICAgU2Ny
b2xsaW5nU3RhdGUgdHJlZSBjaGFuZ2UgZmxhZ3MuIFRoaXMgcmVxdWlyZWQgbW92aW5nIHRoZW0g
YWxsIGludG8KKyAgICAgICAgdGhlIHNhbWUgZW51bSBjbGFzcyBpbiBTY3JvbGxpbmdTdGF0ZU5v
ZGUuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZU5vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdT
dGF0ZU5vZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+OjplbmNvZGUpOgorICAg
ICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUp
OgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3Jv
bGxpbmdTdGF0ZUZpeGVkTm9kZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNj
cm9sbGluZ1N0YXRlRml4ZWROb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29k
ZXI8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKEFyZ3VtZW50
Q29kZXI8U2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZT46OmVuY29kZSk6CisgICAgICAgIChB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU+OjpkZWNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2RlTGF5ZXJzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6Y29tbWl0U3Rh
dGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVSZW1vdGVNYWM6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorCiAy
MDIwLTEwLTI5ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFJlbW92ZSBzb2Z0IGxpbmtpbmcgb2YgTmV0d29ya0V4dGVuc2lvbi5mcmFtZXdv
cmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRml4ZWROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlRml4ZWROb2RlLmNwcAppbmRleCA5MDhkZDBjMWI5ZDM0OWYyODZiMjMzNjIwOTNiNzky
MjY1ZWFkNjA1Li5mOGJiYjNmYTVkNDk1MmIyZGMxYjljZjBmZjg3ZDEzYmY2YWI5MTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVk
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUuY3BwCkBAIC01OCwxMCArNTgsMTAgQEAgUmVmPFNjcm9sbGluZ1N0YXRlTm9k
ZT4gU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OmNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRv
cHQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSgqdGhp
cywgYWRvcHRpdmVUcmVlKSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OnNl
dFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVG
aXhlZE5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2goKQogewotICAgIHNldFBy
b3BlcnR5Q2hhbmdlZEJpdChWaWV3cG9ydENvbnN0cmFpbnRzKTsKLSAgICBTY3JvbGxpbmdTdGF0
ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCk7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpOworICAg
IFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjp1cGRhdGVDb25zdHJhaW50cyhjb25z
dCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgY29uc3RyYWludHMpCkBAIC03Miw3
ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRz
KGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGlu
Z05vZGVJRCgpIDw8ICIgdXBkYXRlQ29uc3RyYWludHMgd2l0aCB2aWV3cG9ydCByZWN0ICIgPDwg
Y29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXllciBwb3MgYXQg
bGFzdCBsYXlvdXQgIiA8PCBjb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkg
PDwgIiBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dCgpLnkoKSAtIGNvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpLnko
KSkpOwogCiAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZChWaWV3cG9ydENvbnN0cmFpbnRzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRml4
ZWROb2RlOjpyZWNvbmNpbGVMYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGNvbnN0IExheW91
dFJlY3QmIHZpZXdwb3J0UmVjdCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBhY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUuaAppbmRleCA2ZGI3MjJiODIyNTkzM2QzYjk3MDcyMzA1NDc5NjdmMzY2MDMz
MDg0Li4zOTFkMjkyOWMwYzhhMDMzOTBhZWY4YmExZjI5NjhmNjhhMTY3YzhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWRO
b2RlLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlKCk7CiAKLSAgICBlbnVtIHsKLSAgICAgICAgVmlld3BvcnRDb25zdHJh
aW50cyA9IE51bVN0YXRlTm9kZUJpdHMKLSAgICB9OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVDb25zdHJhaW50cyhjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
cyYpOwogICAgIGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiB2aWV3cG9y
dENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50czsgfQogCkBAIC01NSw3
ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUoU2Nyb2xsaW5n
U3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKICAgICBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9k
ZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYpOwog
Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZWNvbmNpbGVMYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHZpZXdwb3J0UmVjdCwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcAppbmRleCBhZmY0M2I1
ZWRhMmJjMGI3OGMxNDI4YjE0ZTkzMTM5ZjQ4MDlhZGY0Li5iMmYzNGFjN2ZkMzNjNjZhZWM1ZmE2
OTZlZjYyZDBiYzY0Y2U1NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3Bw
CkBAIC02MCwyMiArNjAsMjIgQEAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGkKICAgICAsIG1fdmlz
dWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQoc3RhdGVOb2RlLnZpc3VhbFZp
ZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0KCkpCiAgICAgLCBtX2FzeW5jRnJhbWVP
ck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZChzdGF0ZU5vZGUuYXN5bmNGcmFtZU9yT3ZlcmZsb3dT
Y3JvbGxpbmdFbmFibGVkKCkpCiB7Ci0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShSb290Q29u
dGVudHNMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6Um9vdENv
bnRlbnRzTGF5ZXIpKQogICAgICAgICBzZXRSb290Q29udGVudHNMYXllcihzdGF0ZU5vZGUucm9v
dENvbnRlbnRzTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRM
YXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAotICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoQ291
bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFByb3BlcnR5
OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQogICAgICAgICBzZXRDb3VudGVyU2Nyb2xsaW5nTGF5
ZXIoc3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRv
cHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwogCi0gICAgaWYgKGhh
c0NoYW5nZWRQcm9wZXJ0eShJbnNldENsaXBMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9w
ZXJ0eShQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICBzZXRJbnNldENsaXBMYXll
cihzdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJl
ZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAotICAgIGlmIChoYXNDaGFuZ2Vk
UHJvcGVydHkoQ29udGVudFNoYWRvd0xheWVyKSkKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5
KFByb3BlcnR5OjpDb250ZW50U2hhZG93TGF5ZXIpKQogICAgICAgICBzZXRDb250ZW50U2hhZG93
TGF5ZXIoc3RhdGVOb2RlLmNvbnRlbnRTaGFkb3dMYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRv
cHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwogCi0gICAgaWYgKGhh
c0NoYW5nZWRQcm9wZXJ0eShIZWFkZXJMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0
eShQcm9wZXJ0eTo6SGVhZGVyTGF5ZXIpKQogICAgICAgICBzZXRIZWFkZXJMYXllcihzdGF0ZU5v
ZGUuaGVhZGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRM
YXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAotICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoRm9v
dGVyTGF5ZXIpKQorICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoUHJvcGVydHk6OkZvb3Rlckxh
eWVyKSkKICAgICAgICAgc2V0Rm9vdGVyTGF5ZXIoc3RhdGVOb2RlLmZvb3RlckxheWVyKCkudG9S
ZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigp
KSk7CiB9CiAKQEAgLTg2LDMwICs4NiwzMCBAQCBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y2xvbmUoU2Nyb2xsaW5nU3RhdGVUcgogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKCp0
aGlzLCBhZG9wdGl2ZVRyZWUpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRhY2goKQordm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0
dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEZyYW1lU2NhbGVGYWN0b3IpOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChFdmVudFRyYWNraW5nUmVnaW9uKTsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWRCaXQoUm9vdENvbnRlbnRzTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hh
bmdlZEJpdChTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJp
dChDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChJbnNl
dENsaXBMYXllcik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KENvbnRlbnRTaGFkb3dMYXll
cik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEhlYWRlckhlaWdodCk7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkQml0KEZvb3RlckhlaWdodCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KEhlYWRlckxheWVyKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoRm9vdGVyTGF5ZXIpOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwotICAg
IHNldFByb3BlcnR5Q2hhbmdlZEJpdChUb3BDb250ZW50SW5zZXQpOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZEJpdChGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWRCaXQoVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3Bv
cnQpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9s
bGluZ0VuYWJsZWQpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChMYXlvdXRWaWV3cG9ydCk7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KE1pbkxheW91dFZpZXdwb3J0T3JpZ2luKTsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoTWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pOwotICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSk7Ci0KLSAgICBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJl
YXR0YWNoKCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkZyYW1l
U2NhbGVGYWN0b3IpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpF
dmVudFRyYWNraW5nUmVnaW9uKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9w
ZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFs
KFByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdl
ZEludGVybmFsKFByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOworICAgIHNldFByb3Bl
cnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpJbnNldENsaXBMYXllcik7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkNvbnRlbnRTaGFkb3dMYXllcik7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkhlYWRlckhlaWdodCk7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkZvb3RlckhlaWdodCk7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkhlYWRlckxheWVyKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Rm9vdGVyTGF5ZXIpOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpUb3BDb250ZW50
SW5zZXQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpGaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRl
cm5hbChQcm9wZXJ0eTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQp
OworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpBc3luY0ZyYW1lT3JP
dmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFs
KFByb3BlcnR5OjpMYXlvdXRWaWV3cG9ydCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJu
YWwoUHJvcGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luKTsKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0
U2l6ZSk7CisKKyAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFByb3BlcnR5Q2hh
bmdlc0FmdGVyUmVhdHRhY2goKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6c2V0RnJhbWVTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTExOSw3
ICsxMTksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGcmFt
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogCiAgICAgbV9mcmFtZVNjYWxlRmFjdG9y
ID0gc2NhbGVGYWN0b3I7CiAKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRnJhbWVTY2FsZUZhY3Rv
cik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpGcmFtZVNjYWxlRmFjdG9yKTsK
IH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0RXZlbnRUcmFj
a2luZ1JlZ2lvbnMoY29uc3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMmIGV2ZW50VHJhY2tpbmdSZWdp
b25zKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zKGNvbnN0IEV2ZW50VHJhY2tpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnMgPSBldmVudFRyYWNraW5nUmVn
aW9uczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRXZlbnRUcmFja2luZ1JlZ2lvbik7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpFdmVudFRyYWNraW5nUmVnaW9uKTsKIH0KIAog
dm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzKFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBiZWhhdmlvckZv
ckZpeGVkKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6OnNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyhTY3JvbGxCCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fYmVoYXZpb3JGb3JGaXhlZCA9IGJlaGF2aW9yRm9yRml4ZWQ7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRMYXlvdXRWaWV3
cG9ydChjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TGF5b3V0Vmlld3BvcnQoY29uc3QgRmxvYXRS
ZWN0JiByKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2xheW91dFZpZXdwb3J0ID0gcjsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoTGF5b3V0Vmlld3BvcnQpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbihjb25zdCBGbG9h
dFBvaW50JiBwKQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OnNldE1pbkxheW91dFZpZXdwb3J0T3JpZ2luKGNvbnN0IEZsb2F0UG9pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fbWluTGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBwOwotICAg
IHNldFByb3BlcnR5Q2hhbmdlZChNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbik7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbik7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldE1heExheW91dFZpZXdwb3J0
T3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4o
Y29uc3QgRmxvYXRQb2kKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9tYXhMYXlvdXRWaWV3cG9y
dE9yaWdpbiA9IHA7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKE1heExheW91dFZpZXdwb3J0T3Jp
Z2luKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6Ok1heExheW91dFZpZXdwb3J0
T3JpZ2luKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoT3B0aW9uYWw8RmxvYXRTaXplPiB2aWV3cG9ydFNp
emUpCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoT3B0aW9uYWw8RmwKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6
ZTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoT3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpOwor
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFk
ZXJIZWlnaHQoaW50IGhlYWRlckhlaWdodCkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJIZWlnaHQoaW50IGhlYWRlckhl
aWdodCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oZWFkZXJIZWlnaHQgPSBoZWFkZXJIZWln
aHQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhlYWRlckhlaWdodCk7CisgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKFByb3BlcnR5OjpIZWFkZXJIZWlnaHQpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGb290ZXJIZWlnaHQoaW50IGZvb3RlckhlaWdodCkK
QEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRGb290ZXJIZWlnaHQoaW50IGZvb3RlckhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9mb290ZXJIZWlnaHQgPSBmb290ZXJIZWlnaHQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2Vk
KEZvb3RlckhlaWdodCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpGb290ZXJI
ZWlnaHQpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQgdG9wQ29udGVudEluc2V0KQpAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFRvcENvbnRlbnRJbnNl
dChmbG9hdCB0b3BDb250ZW50SW5zZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdG9wQ29u
dGVudEluc2V0ID0gdG9wQ29udGVudEluc2V0OwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChUb3BD
b250ZW50SW5zZXQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VG9wQ29udGVu
dEluc2V0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
Um9vdENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNl
bnRhdGlvbikKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpzZXRSb290Q29udGVudHNMYXllcihjb25zdCBMYXllclJlcHJlc2VudAogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3Jvb3RDb250ZW50c0xheWVyID0gbGF5ZXJSZXByZXNlbnRh
dGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUm9vdENvbnRlbnRzTGF5ZXIpOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIpOwogfQogCiB2b2lk
IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRDb3VudGVyU2Nyb2xsaW5nTGF5
ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAgLTIx
OCw3ICsyMTgsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRD
b3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJSZXByZQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q291bnRlclNjcm9sbGluZ0xheWVyKTsKIH0KIAogdm9p
ZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0SW5zZXRDbGlwTGF5ZXIoY29u
c3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAgLTIyNyw3ICsy
MjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRJbnNldENs
aXBMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgbV9pbnNldENsaXBMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247Ci0gICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKEluc2V0Q2xpcExheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVy
dHk6Okluc2V0Q2xpcExheWVyKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
IGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKGNvbnN0IExheWVy
UmVwcmVzZW4KICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fY29udGVudFNoYWRvd0xheWVy
ID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ29udGVudFNo
YWRvd0xheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OkNvbnRlbnRTaGFk
b3dMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNl
dEhlYWRlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRp
b24pCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIG1faGVhZGVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChIZWFkZXJMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFu
Z2VkKFByb3BlcnR5OjpIZWFkZXJMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24m
IGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNl
bnRhdGlvbiYKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fZm9vdGVyTGF5ZXIgPSBsYXll
clJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChGb290ZXJMYXllcik7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpGb290ZXJMYXllcik7CiB9CiAKIHZvaWQg
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFZpc3VhbFZpZXdwb3J0SXNTbWFs
bGVyVGhhbkxheW91dFZpZXdwb3J0KGJvb2wgdmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5
b3V0Vmlld3BvcnQpCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6c2V0VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3AK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fdmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFu
TGF5b3V0Vmlld3BvcnQgPSB2aXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9y
dDsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5
b3V0Vmlld3BvcnQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VmlzdWFsVmll
d3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0Zy
YW1lKGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSkKQEAgLTI3Miw3ICsy
NzIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGJvbwogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgbV9maXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lID0gZml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRml4ZWRFbGVtZW50
c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5
OjpGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGlu
Z0VuYWJsZWQoYgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9hc3luY0ZyYW1lT3JPdmVy
Zmxvd1Njcm9sbGluZ0VuYWJsZWQgPSBlbmFibGVkOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChB
c3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChQcm9wZXJ0eTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9y
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKaW5kZXggMTA5OGYyOTUwMWEw
ZTI5NWY4MGNkMjFlOGM3N2I0NDdiNTk0ZmM1YS4uOWZkZjg4ZGYzNzQ2NzY3MjBhZjZhZjllYjU0
ZDZmYzRiZmNiYzI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCkBAIC00NSwy
OSArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZSgpOwogCi0gICAgZW51bSBDaGFuZ2VkUHJvcGVydHkgewotICAgICAgICBGcmFt
ZVNjYWxlRmFjdG9yID0gTnVtU2Nyb2xsaW5nU3RhdGVOb2RlQml0cywKLSAgICAgICAgRXZlbnRU
cmFja2luZ1JlZ2lvbiwKLSAgICAgICAgUm9vdENvbnRlbnRzTGF5ZXIsCi0gICAgICAgIFNjcm9s
bGVkQ29udGVudHNMYXllciwKLSAgICAgICAgQ291bnRlclNjcm9sbGluZ0xheWVyLAotICAgICAg
ICBJbnNldENsaXBMYXllciwKLSAgICAgICAgQ29udGVudFNoYWRvd0xheWVyLAotICAgICAgICBI
ZWFkZXJIZWlnaHQsCi0gICAgICAgIEZvb3RlckhlaWdodCwKLSAgICAgICAgSGVhZGVyTGF5ZXIs
Ci0gICAgICAgIEZvb3RlckxheWVyLAotICAgICAgICBCZWhhdmlvckZvckZpeGVkRWxlbWVudHMs
Ci0gICAgICAgIFRvcENvbnRlbnRJbnNldCwKLSAgICAgICAgRml4ZWRFbGVtZW50c0xheW91dFJl
bGF0aXZlVG9GcmFtZSwKLSAgICAgICAgVmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0
Vmlld3BvcnQsCi0gICAgICAgIEFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCwK
LSAgICAgICAgTGF5b3V0Vmlld3BvcnQsCi0gICAgICAgIE1pbkxheW91dFZpZXdwb3J0T3JpZ2lu
LAotICAgICAgICBNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiwKLSAgICAgICAgT3ZlcnJpZGVWaXN1
YWxWaWV3cG9ydFNpemUsCi0gICAgfTsKLQogICAgIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX2ZyYW1lU2NhbGVGYWN0b3I7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEZyYW1lU2NhbGVGYWN0b3IoZmxvYXQpOwogCkBAIC0xNDAsNyArMTE3LDcgQEAgcHJp
dmF0ZToKICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0
ZVRyZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKTsKICAgICBTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYpOwogCi0gICAgdm9pZCBzZXRQcm9wZXJ0eUNo
YW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvcGVydHlD
aGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwogCiAgICAgTGF5ZXJSZXByZXNlbnRhdGlv
biBtX3Jvb3RDb250ZW50c0xheWVyOwogICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCBiZTU3YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3
ZDM0Yzg0MGM4MTY1Li4xM2EyYmY0NTI3OTg2MGM2NDM2OTk1YzkwNDVjOGUyZDk0NjNkNmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
Tm9kZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxpbmdT
dGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUsIFNjcm8KICAgICAs
IG1fY2hhbmdlZFByb3BlcnRpZXMoc3RhdGVOb2RlLmNoYW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAg
LCBtX3Njcm9sbGluZ1N0YXRlVHJlZShhZG9wdGl2ZVRyZWUpCiB7Ci0gICAgaWYgKGhhc0NoYW5n
ZWRQcm9wZXJ0eShMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6
TGF5ZXIpKQogICAgICAgICBzZXRMYXllcihzdGF0ZU5vZGUubGF5ZXIoKS50b1JlcHJlc2VudGF0
aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAogICAg
IHNjcm9sbGluZ1N0YXRlVHJlZSgpLmFkZE5vZGUoKnRoaXMpOwpAQCAtNTksMTkgKzU5LDE5IEBA
IFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsaW5nU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgc3RhdGVOb2RlLCBTY3JvCiAKIFNjcm9sbGluZ1N0YXRlTm9kZTo6flNjcm9sbGlu
Z1N0YXRlTm9kZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFBy
b3BlcnR5Q2hhbmdlZCh1bnNpZ25lZCBwcm9wZXJ0eUJpdCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVO
b2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHkgcHJvcGVydHkpCiB7Ci0gICAgaWYgKGhh
c0NoYW5nZWRQcm9wZXJ0eShwcm9wZXJ0eUJpdCkpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0
eShwcm9wZXJ0eSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJp
dChwcm9wZXJ0eUJpdCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwocHJvcGVydHkp
OwogICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLnNldEhhc0NoYW5nZWRQcm9wZXJ0aWVzKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJS
ZWF0dGFjaCgpCit2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0
ZXJSZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KExheWVyKTsKLSAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRCaXQoQ2hpbGROb2Rlcyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2Vk
SW50ZXJuYWwoUHJvcGVydHk6OkxheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5h
bChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7CiAgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUuc2V0SGFz
Q2hhbmdlZFByb3BlcnRpZXMoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU2Nyb2xs
aW5nU3RhdGVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxk
Tm9kZSkKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAgICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5p
cXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4+KCk7CiAgICAgbV9jaGlsZHJl
bi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKENo
aWxkTm9kZXMpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5n
U3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90IGluZGV4KQpAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVO
b2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2hpbGRyZW4t
Pmluc2VydChpbmRleCwgV1RGTW92ZShjaGlsZE5vZGUpKTsKICAgICAKLSAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpD
aGlsZE5vZGVzKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OnJlbW92ZUZyb21QYXJl
bnQoKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpyZW1vdmVD
aGlsZEF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIEFTU0VSVChtX2NoaWxkcmVuICYmIGluZGV4
IDwgbV9jaGlsZHJlbi0+c2l6ZSgpKTsKICAgICBpZiAobV9jaGlsZHJlbiAmJiBpbmRleCA8IG1f
Y2hpbGRyZW4tPnNpemUoKSkgewogICAgICAgICBtX2NoaWxkcmVuLT5yZW1vdmUoaW5kZXgpOwot
ICAgICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CisgICAgICAgIHNldFByb3Bl
cnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7CiAgICAgfQogfQogCkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldExheWVyKGNvbnN0IExheWVyUmVw
cmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24KICAgICAKICAgICBtX2xheWVyID0gbGF5
ZXJSZXByZXNlbnRhdGlvbjsKIAotICAgIHNldFByb3BlcnR5Q2hhbmdlZChMYXllcik7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
U3RhdGVOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCmluZGV4IGYxZmEzYmQwYTkxODAy
ODA0ZTUxZDAxNjFmMDJhOWI3MTZiNGVmZjEuLjBhOTc0MzE0YmVkOTczYmQ2ZDFmYzRjZTIzMzI3
Y2EzYjgyMzhlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlTm9kZS5oCkBAIC0yMTcsMjIgKzIxNyw2OSBAQCBwdWJsaWM6CiAgICAgUmVm
PFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xvbmVBbmRSZXNldChTY3JvbGxpbmdTdGF0ZVRyZWUmIGFk
b3B0aXZlVHJlZSk7CiAgICAgdm9pZCBjbG9uZUFuZFJlc2V0Q2hpbGRyZW4oU2Nyb2xsaW5nU3Rh
dGVOb2RlJiwgU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2ZVRyZWUpOwogCi0gICAgLy8gRklY
TUU6IHVzaW5nIGFuIE9wdGlvblNldDw+IGZvciB0aGVzZSBhbmQgZGVyaXZlZCBjbGFzcyBiaXRz
IHdvdWxkIHNpbXBsaWZ5IGNvZGUuCi0gICAgZW51bSB7Ci0gICAgICAgIExheWVyID0gMCwKLSAg
ICAgICAgQ2hpbGROb2RlcywKLSAgICAgICAgTnVtU3RhdGVOb2RlQml0cyAvLyBUaGlzIG11c3Qg
cmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgorICAgIGVudW0gY2xhc3MgUHJvcGVydHkgOiB1
aW50NjRfdCB7CisgICAgICAgIC8vIFNjcm9sbGluZ1N0YXRlTm9kZQorICAgICAgICBMYXllciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAwLAorICAgICAg
ICBDaGlsZE5vZGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAx
LAorICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUKKyAgICAgICAgU2Nyb2xs
YWJsZUFyZWFTaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMiwKKyAgICAg
ICAgVG90YWxDb250ZW50c1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MywKKyAgICAgICAgUmVhY2hhYmxlQ29udGVudHNTaXplICAgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNCwKKyAgICAgICAgU2Nyb2xsUG9zaXRpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDFMTFUgPDwgNSwKKyAgICAgICAgU2Nyb2xsT3JpZ2luICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNiwKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWFQYXJh
bXMgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNywKKyAgICAgICAgUmVhc29uc0Zv
clN5bmNocm9ub3VzU2Nyb2xsaW5nICAgICAgICAgICAgICA9IDFMTFUgPDwgOCwKKyAgICAgICAg
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgOSwK
KyAgICAgICAgSG9yaXpvbnRhbFNuYXBPZmZzZXRzICAgICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMTAsCisgICAgICAgIFZlcnRpY2FsU25hcE9mZnNldHMgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDExLAorICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMiwKKyAgICAgICAgVmVydGljYWxTbmFwT2Zmc2V0
UmFuZ2VzICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTMsCisgICAgICAgIEN1cnJlbnRI
b3Jpem9udGFsU25hcE9mZnNldEluZGV4ICAgICAgICAgICAgPSAxTExVIDw8IDE0LAorICAgICAg
ICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXggICAgICAgICAgICAgID0gMUxMVSA8PCAx
NSwKKyAgICAgICAgSXNNb25pdG9yaW5nV2hlZWxFdmVudHMgICAgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgMTYsCisgICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVyICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxTExVIDw8IDE3LAorICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIgICAg
ICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOCwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTksCisgICAgICAgIFZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIwLAorICAg
ICAgICBQYWludGVyRm9yU2Nyb2xsYmFyICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8
PCAyMSwKKyAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUKKyAgICAg
ICAgRnJhbWVTY2FsZUZhY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MjIsCisgICAgICAgIEV2ZW50VHJhY2tpbmdSZWdpb24gICAgICAgICAgICAgICAgICAgICAgICAg
PSAxTExVIDw8IDIzLAorICAgICAgICBSb290Q29udGVudHNMYXllciAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMUxMVSA8PCAyNCwKKyAgICAgICAgQ291bnRlclNjcm9sbGluZ0xheWVyICAg
ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjUsCisgICAgICAgIEluc2V0Q2xpcExheWVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI2LAorICAgICAgICBDb250
ZW50U2hhZG93TGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNywKKyAg
ICAgICAgSGVhZGVySGVpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMjgsCisgICAgICAgIEZvb3RlckhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDI5LAorICAgICAgICBIZWFkZXJMYXllciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAzMCwKKyAgICAgICAgRm9vdGVyTGF5ZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzEsCisgICAgICAgIEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cyAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDMyLAorICAgICAgICBU
b3BDb250ZW50SW5zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMywK
KyAgICAgICAgRml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSAgICAgICAgICA9IDFM
TFUgPDwgMzQsCisgICAgICAgIFZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdw
b3J0ICAgPSAxTExVIDw8IDM1LAorICAgICAgICBBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGlu
Z0VuYWJsZWQgICAgICAgID0gMUxMVSA8PCAzNiwKKyAgICAgICAgTGF5b3V0Vmlld3BvcnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMzcsCisgICAgICAgIE1pbkxheW91
dFZpZXdwb3J0T3JpZ2luICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDM4LAorICAgICAg
ICBNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAz
OSwKKyAgICAgICAgT3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUgICAgICAgICAgICAgICAgICA9
IDFMTFUgPDwgNDAsCisgICAgICAgIC8vIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUKKyAg
ICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgICAgICAgICAgICAgICA9IDFMTFUg
PDwgNDEsCisgICAgICAgIExheW91dENvbnN0cmFpbnREYXRhICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDQyLAorICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSwgU2Ny
b2xsaW5nU3RhdGVTdGlja3lOb2RlCisgICAgICAgIFZpZXdwb3J0Q29uc3RyYWludHMgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQzLAorICAgICAgICAvLyBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlCisgICAgICAgIE92ZXJmbG93U2Nyb2xsaW5nTm9kZSAg
ICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ0LAogICAgIH07Ci0gICAgdHlwZWRlZiB1
aW50NjRfdCBDaGFuZ2VkUHJvcGVydGllczsKKyAgICAKKyAgICBib29sIGhhc0NoYW5nZWRQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydHkoUHJvcGVydHkgcHJvcGVydHkpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhbmdlZFByb3BlcnRpZXMuY29udGFpbnMocHJvcGVydHkpOyB9CisgICAgdm9p
ZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0geyB9OyB9
CisgICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHkpOwogCi0gICAgYm9vbCBoYXND
aGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZFByb3BlcnRpZXM7IH0K
LSAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0eSh1bnNpZ25lZCBwcm9wZXJ0eUJpdCkgY29uc3Qg
eyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllcyAmIChzdGF0aWNfY2FzdDxDaGFuZ2VkUHJvcGVy
dGllcz4oMSkgPDwgcHJvcGVydHlCaXQpOyB9Ci0gICAgdm9pZCByZXNldENoYW5nZWRQcm9wZXJ0
aWVzKCkgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0gMDsgfQotICAgIHZvaWQgc2V0UHJvcGVydHlD
aGFuZ2VkKHVuc2lnbmVkIHByb3BlcnR5Qml0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVy
dHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogCi0gICAgQ2hhbmdlZFByb3BlcnRpZXMgY2hhbmdl
ZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRQcm9wZXJ0aWVzOyB9Ci0gICAg
dm9pZCBzZXRDaGFuZ2VkUHJvcGVydGllcyhDaGFuZ2VkUHJvcGVydGllcyBjaGFuZ2VkUHJvcGVy
dGllcykgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0gY2hhbmdlZFByb3BlcnRpZXM7IH0KKyAgICBP
cHRpb25TZXQ8UHJvcGVydHk+IGNoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFuZ2VkUHJvcGVydGllczsgfQorICAgIHZvaWQgc2V0Q2hhbmdlZFByb3BlcnRpZXMoT3B0aW9u
U2V0PFByb3BlcnR5PiBjaGFuZ2VkUHJvcGVydGllcykgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0g
Y2hhbmdlZFByb3BlcnRpZXM7IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcmVjb25jaWxlTGF5
ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiAvKnZpZXdwb3J0UmVj
dCovLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKSB7IH0KIApAQCAtMjY2LDE2ICszMTMs
MTYgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbGluZ1N0YXRlTm9kZShjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUo
U2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0OworICAgIHZvaWQgc2V0UHJvcGVy
dHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHkgcHJvcGVydHkpIHsgbV9jaGFuZ2VkUHJvcGVydGll
cy5hZGQocHJvcGVydHkpOyB9CiAKLSAgICBpbmxpbmUgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQodW5zaWduZWQgcHJvcGVydHlCaXQpOworICAgIHZpcnR1YWwgdm9pZCBkdW1wUHJvcGVydGll
cyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGlu
Z1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdDsKIAogICAgIGNvbnN0IFNjcm9sbGluZ05v
ZGVUeXBlIG1fbm9kZVR5cGU7CiAgICAgY29uc3QgU2Nyb2xsaW5nTm9kZUlEIG1fbm9kZUlEOwot
ICAgIENoYW5nZWRQcm9wZXJ0aWVzIG1fY2hhbmdlZFByb3BlcnRpZXMgeyAwIH07CisgICAgT3B0
aW9uU2V0PFByb3BlcnR5PiBtX2NoYW5nZWRQcm9wZXJ0aWVzOwogCiAgICAgU2Nyb2xsaW5nU3Rh
dGVUcmVlJiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsKIApAQCAtMjg1LDExICszMzIsNiBAQCBwcml2
YXRlOgogICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9sYXllcjsKIH07CiAKLXZvaWQgU2Nyb2xs
aW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXQodW5zaWduZWQgcHJvcGVydHlCaXQp
Ci17Ci0gICAgbV9jaGFuZ2VkUHJvcGVydGllcyB8PSAoc3RhdGljX2Nhc3Q8Q2hhbmdlZFByb3Bl
cnRpZXM+KDEpIDw8IHByb3BlcnR5Qml0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX1NUQVRFX05PREUoVG9W
YWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZS5jcHAKaW5kZXggOWNkYmQzNmRkNWVlYmNmNmFiM2FmYTBiMzBhYmM1Yzc1MDBk
YmM0Yi4uMTkyOWEyZDc2MDhiODgzYjgwNTk5YmNjZjk3NzM2ODc5ZWI4ZmRlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbFByb3h5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKQEAgLTU3LDExICs1NywxMSBA
QCBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJv
eHlOb2RlOjpjbG9uZShTY3JvbGxpbmdTdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUoKnRoaXMsIGFkb3B0aXZlVHJlZSkpOwog
fQogCi12b2lkIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU6OnNldFByb3Bl
cnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpCiB7Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KE92ZXJmbG93U2Nyb2xsaW5nTm9kZSk7CisgICAgc2V0
UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6Ok92ZXJmbG93U2Nyb2xsaW5nTm9kZSk7
CiAKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJl
YXR0YWNoKCk7CisgICAgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZXNBZnRl
clJlYXR0YWNoKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5
Tm9kZTo6c2V0T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZTo6c2V0T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBtX292ZXJmbG93U2Nyb2xsaW5nTm9kZUlEID0gbm9kZUlEOwotICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChPdmVyZmxvd1Njcm9sbGluZ05vZGUpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChQcm9wZXJ0eTo6T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFt
JiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmgKaW5kZXggYmU5ZDllOWU4MDAw
YTIyYmQwNTc5NDZmN2Y2MTM0MWNiNWY0MWEzNS4uNzdmY2UzYzc4NzliNTFkMmNjYWYxMDNiMzVl
YzdkOTQyNjY5MGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUu
aApAQCAtMzksMTAgKzM5LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZSgpOwogCi0gICAgZW51bSB7Ci0gICAgICAgIE92ZXJm
bG93U2Nyb2xsaW5nTm9kZSA9IE51bVN0YXRlTm9kZUJpdHMKLSAgICB9OwotCiAgICAgLy8gVGhp
cyBpcyB0aGUgbm9kZSB3ZSBnZXQgb3VyIHNjcm9sbCBwb3NpdGlvbiBmcm9tLgogICAgIFNjcm9s
bGluZ05vZGVJRCBvdmVyZmxvd1Njcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX292ZXJm
bG93U2Nyb2xsaW5nTm9kZUlEOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPdmVyZmxv
d1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEKTsKQEAgLTUzLDcgKzQ5LDcgQEAgcHJpdmF0
ZToKICAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlKFNjcm9sbGluZ1N0
YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAgICAgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbFByb3h5Tm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2Rl
JiwgU2Nyb2xsaW5nU3RhdGVUcmVlJik7CiAKLSAgICB2b2lkIHNldFByb3BlcnR5Q2hhbmdlZEJp
dHNBZnRlclJlYXR0YWNoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZXNB
ZnRlclJlYXR0YWNoKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgU2Nyb2xsaW5nTm9kZUlEIG1fb3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSUQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNw
cAppbmRleCBlZDRiOWRkZmMxNzQ3NTYxYmU2OGEwM2ZlMzM0NDFmNjZhNTQzNjRjLi5kY2Q1OGE5
OTg3MDg0MTI4NzdhYzE3NWM0Y2ViZWZkZDA2MWVjODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWRO
b2RlLmNwcApAQCAtNTksMTEgKzU5LDExIEBAIFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+IFNjcm9s
bGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OmNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlKCp0aGlzLCBh
ZG9wdGl2ZVRyZWUpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpz
ZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpCit2b2lkIFNjcm9sbGluZ1N0YXRl
UG9zaXRpb25lZE5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2goKQogewotICAg
IHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcyk7Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KExheW91dENvbnN0cmFpbnREYXRhKTsKLSAgICBTY3Jv
bGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCk7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OlJlbGF0ZWRPdmVyZmxvd1Nj
cm9sbGluZ05vZGVzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6
TGF5b3V0Q29uc3RyYWludERhdGEpOworICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVy
dHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRp
b25lZE5vZGU6OnNldFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKFZlY3RvcjxTY3JvbGxp
bmdOb2RlSUQ+JiYgbm9kZXMpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVQ
b3NpdGlvbmVkTm9kZTo6c2V0UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoVmVjdG9yPFNj
cm9sCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9k
ZXMgPSBXVEZNb3ZlKG5vZGVzKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUmVsYXRlZE92ZXJm
bG93U2Nyb2xsaW5nTm9kZXMpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6UmVs
YXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlUG9z
aXRpb25lZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRzKGNvbnN0IEFic29sdXRlUG9zaXRpb25Db25z
dHJhaW50cyYgY29uc3RyYWludHMpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVQb3NpdGlvbmVkTm9kZTo6dXBkYXRlQ29uc3RyYWludHMoY29uc3QgQWJzb2x1dGVQb3NpdGlv
bkNvbnN0CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxp
bmdTdGF0ZVBvc2l0aW9uZWROb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVD
b25zdHJhaW50cyAiIDw8IGNvbnN0cmFpbnRzKTsKIAogICAgIG1fY29uc3RyYWludHMgPSBjb25z
dHJhaW50czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoTGF5b3V0Q29uc3RyYWludERhdGEpOwor
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6TGF5b3V0Q29uc3RyYWludERhdGEpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRl
eHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlUG9zaXRpb25lZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaAppbmRleCBhYzQyYWNkNWVjY2Q3ZjI1Y2M0MDcy
MThkOTFmZjdlZmVkMDUyNjM2Li4zOGU0YjM4ZWEzODdlODQ1MTdhZmQ3ZWRmOGI1ZWRiZjA2ZThj
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZVBvc2l0aW9uZWROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oCkBAIC00NSwxMSArNDUsNiBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlKCk7CiAKLSAgICBl
bnVtIHsKLSAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgPSBOdW1TdGF0ZU5v
ZGVCaXRzLAotICAgICAgICBMYXlvdXRDb25zdHJhaW50RGF0YSwKLSAgICB9OwotCiAgICAgLy8g
VGhlc2UgYXJlIHRoZSBvdmVyZmxvdyBzY3JvbGxpbmcgbm9kZXMgd2hvc2Ugc2Nyb2xsIHBvc2l0
aW9uIGFmZmVjdHMgdGhlIGxheWVycyBpbiB0aGlzIG5vZGUuCiAgICAgY29uc3QgVmVjdG9yPFNj
cm9sbGluZ05vZGVJRD4mIHJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlczsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoVmVjdG9yPFNjcm9sbGlu
Z05vZGVJRD4mJik7CkBAIC02MSw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3Rh
dGVQb3NpdGlvbmVkTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwog
ICAgIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVQb3Np
dGlvbmVkTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYpOwogCi0gICAgdm9pZCBzZXRQcm9wZXJ0
eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvcGVy
dHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVy
dGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDI1ZmQ1MmM1
YjViYTYxOWQ1Yjk0NTgwNDY0YTU3ODc3MTdkMWNhMzEuLjk0ZjA2N2Q2MWJkZDJmZjcwZjFhOTAz
ZGQ3OTcxY2QwZWJlNDY1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtNjIsMTYg
KzYyLDE2IEBAIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2NyCiB7CiAgICAgc2Nyb2xsaW5nU3RhdGVU
cmVlKCkuc2Nyb2xsaW5nTm9kZUFkZGVkKCk7CiAKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFByb3Bl
cnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpCiAgICAgICAgIHNldFNjcm9sbENvbnRhaW5lckxh
eWVyKHN0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpLnRvUmVwcmVzZW50YXRpb24oYWRv
cHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50YXRpb24oKSkpOwogCi0gICAgaWYgKGhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgIGlmIChoYXNDaGFu
Z2VkUHJvcGVydHkoUHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgIHNl
dFNjcm9sbGVkQ29udGVudHNMYXllcihzdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCku
dG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlv
bigpKSk7CiAKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXIpKQorICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoUHJvcGVydHk6OlZlcnRpY2FsU2Nyb2xs
YmFyTGF5ZXIpKQogICAgICAgICBzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKHN0YXRlTm9kZS52
ZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJl
ZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3Bl
cnR5KEhvcml6b250YWxTY3JvbGxiYXJMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0
eShQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkKICAgICAgICAgc2V0SG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyKHN0YXRlTm9kZS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoKS50
b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9u
KCkpKTsKIH0KIApAQCAtODAsMzMgKzgwLDMzIEBAIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6flNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgpCiAgICAgc2Nyb2xsaW5nU3RhdGVUcmVl
KCkuc2Nyb2xsaW5nTm9kZVJlbW92ZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCkKK3ZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZXNBZnRlclJlYXR0YWNo
KCkKIHsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFTaXplKTsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoVG90YWxDb250ZW50c1NpemUpOwotICAgIHNldFByb3Bl
cnR5Q2hhbmdlZEJpdChSZWFjaGFibGVDb250ZW50c1NpemUpOwotICAgIHNldFByb3BlcnR5Q2hh
bmdlZEJpdChTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9s
bE9yaWdpbik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGFibGVBcmVhUGFyYW1z
KTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFy
ZWFTaXplKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6VG90YWxD
b250ZW50c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpS
ZWFjaGFibGVDb250ZW50c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFBy
b3BlcnR5OjpTY3JvbGxQb3NpdGlvbik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwo
UHJvcGVydHk6OlNjcm9sbE9yaWdpbik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwo
UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zKTsKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RI
UkVBRCkKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUmVhc29uc0ZvclN5bmNocm9ub3VzU2Ny
b2xsaW5nKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6UmVhc29u
c0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEhvcml6b250YWxTbmFwT2Zmc2V0cyk7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFZlcnRpY2FsU25hcE9mZnNldHMpOwotICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7Ci0gICAgc2V0
UHJvcGVydHlDaGFuZ2VkQml0KFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkQml0KEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KTsKLSAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRCaXQoQ3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6VmVydGljYWxT
bmFwT2Zmc2V0cyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6Okhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5h
bChQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgp
OworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpDdXJyZW50VmVydGlj
YWxTbmFwT2Zmc2V0SW5kZXgpOwogI2VuZGlmCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KElz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xs
Q29udGFpbmVyTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3JvbGxlZENvbnRl
bnRzTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChIb3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChWZXJ0aWNhbFNjcm9sbGJhckxheWVy
KTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFpbnRlckZvclNjcm9sbGJhcik7Ci0KLSAg
ICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNo
KCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OklzTW9uaXRvcmlu
Z1doZWVsRXZlbnRzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6
U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFBy
b3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZElu
dGVybmFsKFByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpOworICAgIHNldFByb3Bl
cnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6UGFpbnRlckZvclNjcm9sbGJh
cik7CisKKyAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVh
dHRhY2goKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bGFibGVBcmVhU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGFibGVBcmVhU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Nyb2xsYWJs
ZUFyZWFTaXplID0gc2l6ZTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoU2Nyb2xsYWJsZUFyZWFT
aXplKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNjcm9sbGFibGVBcmVhU2l6
ZSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRl
bnRzU2l6ZShjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29udGVudHNTaXplKQpAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRlbnRz
U2l6ZShjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29uCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
dG90YWxDb250ZW50c1NpemUgPSB0b3RhbENvbnRlbnRzU2l6ZTsKLSAgICBzZXRQcm9wZXJ0eUNo
YW5nZWQoVG90YWxDb250ZW50c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0
eTo6VG90YWxDb250ZW50c1NpemUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxl
Q29udGVudHNTaXplKQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRSZWFjaGFibGVDb250ZW50c1NpemUoY29uc3QgRmxvYXRTaXplJiByZWFj
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVhY2hhYmxlQ29udGVudHNTaXplID0gcmVhY2hh
YmxlQ29udGVudHNTaXplOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChSZWFjaGFibGVDb250ZW50
c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVu
dHNTaXplKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
c2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQo
U2Nyb2xsUG9zaXRpb24pOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6U2Nyb2xs
UG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Ny
b2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4pCkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbE9yaWdpbihjb25z
dCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Njcm9s
bE9yaWdpbiA9IHNjcm9sbE9yaWdpbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoU2Nyb2xsT3Jp
Z2luKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNjcm9sbE9yaWdpbik7CiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldHMoY29u
c3QgVmVjdG9yPGZsb2F0PiYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zbmFwT2Zmc2V0c0lu
Zm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgc2V0UHJvcGVydHlD
aGFuZ2VkKEhvcml6b250YWxTbmFwT2Zmc2V0cyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFBy
b3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+
JiBzbmFwT2Zmc2V0cykKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBz
bgogICAgICAgICByZXR1cm47CiAKICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBP
ZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFZlcnRpY2FsU25h
cE9mZnNldHMpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VmVydGljYWxTbmFw
T2Zmc2V0cyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhjb25z
dCBWZWN0b3I8U2NyCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc25hcE9mZnNldHNJbmZvLmhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0gc2Nyb2xsT2Zmc2V0UmFuZ2VzOwotICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7CisgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJh
bmdlcykKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKGNvbnN0IFZlY3RvcjxTY3JvbAogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRleCkK
QEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbgogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgbV9jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
KTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25h
cE9mZnNldEluZGV4KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHVuc2lnbmVkIGluZGV4KQpAQCAtMjA2LDcg
KzIwNiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRlCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4ID0gaW5kZXg7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKEN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCk7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpOwog
fQogI2VuZGlmCiAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKGNvbnN0IFNjcm9sbGFibGVBcgog
ICAgICAgICByZXR1cm47CiAKICAgICBtX3Njcm9sbGFibGVBcmVhUGFyYW1ldGVycyA9IHBhcmFt
ZXRlcnM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbGFibGVBcmVhUGFyYW1zKTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zKTsKIH0K
IAogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMoT3B0aW9uU2V0PFN5bmNoCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zID0gcmVhc29uczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUmVhc29u
c0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVy
dHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZyk7CiB9CiAjZW5kaWYKIApAQCAtMjM0
LDcgKzIzNCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRSZXF1ZXN0
ZWRTY3JvbGxEYXRhKGNvbnN0IFJlcXVlc3RlZFNjcm9sbERhCiB7CiAgICAgLy8gU2Nyb2xsIHBv
c2l0aW9uIHJlcXVlc3RzIGFyZSBpbXBlcmF0aXZlLCBub3Qgc3RhdGVmdWwsIHNvIHdlIGNhbid0
IGVhcmx5IHJldHVybiBoZXJlLgogICAgIG1fcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNjcm9sbERh
dGE7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKTsK
IH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldElzTW9uaXRvcmluZ1do
ZWVsRXZlbnRzKGJvb2wgaXNNb25pdG9yaW5nV2hlZWxFdmVudHMpCkBAIC0yNDMsNyArMjQzLDcg
QEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldElzTW9uaXRvcmluZ1doZWVs
RXZlbnRzKGJvb2wgaXNNb25pdG9yaW5nV2gKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc01v
bml0b3JpbmdXaGVlbEV2ZW50cyA9IGlzTW9uaXRvcmluZ1doZWVsRXZlbnRzOwotICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChJc01vbml0b3JpbmdXaGVlbEV2ZW50cyk7CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkKFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cyk7CiB9CiAKIHZvaWQgU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxDb250YWluZXJMYXllcihjb25zdCBM
YXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQpAQCAtMjUyLDcgKzI1Miw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxDb250YWluZXJM
YXllcihjb25zdCBMYXllclJlcHJlc2VudGF0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2Ny
b2xsQ29udGFpbmVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZChTY3JvbGxDb250YWluZXJMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFBy
b3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNl
bnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGNvbnN0
IExheWVyUmVwcmVzZW50YQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Njcm9sbGVkQ29udGVu
dHNMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNj
cm9sbGVkQ29udGVudHNMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRp
b24mIGxheWVyKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyID0gbGF5ZXI7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhvcml6b250YWxTY3JvbGxiYXJMYXllcik7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTY3JvbGxi
YXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllcikKQEAgLTI3OSw3ICsyNzks
NyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTY3JvbGxi
YXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudAogICAgICAgICByZXR1cm47CiAKICAgICBtX3Zl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmVy
dGljYWxTY3JvbGxiYXJMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpW
ZXJ0aWNhbFNjcm9sbGJhckxheWVyKTsKIH0KIAogI2lmICFQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCmluZGV4IDA2ZmRiZTFjZWNmMmU4N2U5ODhiZTUwMDU3NTBiZDMyMzRiYmZh
ZWQuLjU1OWI2OWI0NGI5NjVlN2JjNzBhMjRlMjczMTUzNjhhNTExNGZjMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZS5oCkBAIC01NSwzNCArNTUsNiBAQCBjbGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nU3RhdGVOb2RlIHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoKTsKIAotICAgIGVudW0gQ2hhbmdlZFBy
b3BlcnR5IHsKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWFTaXplID0gTnVtU3RhdGVOb2RlQml0cywK
LSAgICAgICAgVG90YWxDb250ZW50c1NpemUsCi0gICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKLSAgICAgICAgU2Nyb2xsUG9zaXRpb24sCi0gICAgICAgIFNjcm9sbE9yaWdpbiwKLSAgICAg
ICAgU2Nyb2xsYWJsZUFyZWFQYXJhbXMsCi0jaWYgRU5BQkxFKFNDUk9MTElOR19USFJFQUQpCi0g
ICAgICAgIFJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZywKLSNlbmRpZgotICAgICAgICBS
ZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwKLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAg
ICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMsCi0gICAgICAgIFZlcnRpY2FsU25hcE9mZnNldHMs
Ci0gICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAotICAgICAgICBWZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMsCi0gICAgICAgIEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4
LAotICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsCi0jZW5kaWYKLSAgICAg
ICAgSXNNb25pdG9yaW5nV2hlZWxFdmVudHMsCi0gICAgICAgIFNjcm9sbENvbnRhaW5lckxheWVy
LAotICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIsCi0gICAgICAgIEhvcml6b250YWxTY3Jv
bGxiYXJMYXllciwKLSAgICAgICAgVmVydGljYWxTY3JvbGxiYXJMYXllciwKLSAgICAgICAgUGFp
bnRlckZvclNjcm9sbGJhciwKLSAgICAgICAgTnVtU2Nyb2xsaW5nU3RhdGVOb2RlQml0cyAvLyBU
aGlzIG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgotICAgIH07Ci0KICAgICBjb25z
dCBGbG9hdFNpemUmIHNjcm9sbGFibGVBcmVhU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWFTaXplOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxhYmxlQXJl
YVNpemUoY29uc3QgRmxvYXRTaXplJik7CiAKQEAgLTE1Niw3ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNj
cm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwogICAgIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmLCBTY3JvbGxpbmdT
dGF0ZVRyZWUmKTsKIAotICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRh
Y2goKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2go
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwg
U2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlLmNwcAppbmRleCBjMThhODRiZDlhZjUxMTNiYzc1NjA4ZGM0MGU0OGIwMzU4MDlk
MTZiLi4wNjgwOWJhYTVhYzc3Y2E0NTBkZGI3ZTEwNjZjNWE4NjIxZDdkZTM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OmNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSgqdGhpcywg
YWRvcHRpdmVUcmVlKSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpzZXRQ
cm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpCit2b2lkIFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkQml0KFZpZXdwb3J0Q29uc3RyYWludHMpOwotICAgIFNjcm9sbGluZ1N0YXRl
Tm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRhY2goKTsKKyAgICBzZXRQcm9w
ZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cyk7CisgICAg
U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZXNBZnRlclJlYXR0YWNoKCk7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjp1cGRhdGVDb25zdHJhaW50cyhjb25z
dCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQpAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6dXBkYXRlQ29uc3RyYWlu
dHMoY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbgogICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlICIgPDwgc2Nyb2xs
aW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVDb25zdHJhaW50cyB3aXRoIGNvbnN0cmFpbmluZyByZWN0
ICIgPDwgY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpIDw8ICIgc3Rp
Y2t5IG9mZnNldCAiIDw8IGNvbnN0cmFpbnRzLnN0aWNreU9mZnNldEF0TGFzdExheW91dCgpIDw8
ICIgbGF5ZXIgcG9zIGF0IGxhc3QgbGF5b3V0ICIgPDwgY29uc3RyYWludHMubGF5ZXJQb3NpdGlv
bkF0TGFzdExheW91dCgpKTsKIAogICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmlld3BvcnRDb25zdHJhaW50cyk7CisgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKFByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKTsKIH0KIAogRmxvYXRQb2lu
dCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OmNvbXB1dGVMYXllclBvc2l0aW9uKGNvbnN0IExh
eW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgKaW5kZXggMWZiYmE0
ZDJkZmI2MmFhZTFlOGQwZWY1NzUxYjY4OTE1YzBjYzczMy4uNTM0ZWNhYTRmOTllMTQ1N2ViZDhm
NmY2ZGU1ZTE5ZTFkMzY4OGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgKQEAgLTQ0LDEwICs0NCw2IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSgpOwogCi0g
ICAgZW51bSB7Ci0gICAgICAgIFZpZXdwb3J0Q29uc3RyYWludHMgPSBOdW1TdGF0ZU5vZGVCaXRz
Ci0gICAgfTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ29uc3RyYWludHMoY29u
c3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7CiAgICAgY29uc3QgU3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiB2aWV3cG9ydENvbnN0cmFpbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25zdHJhaW50czsgfQogCkBAIC01NSw3ICs1MSw3IEBAIHByaXZhdGU6CiAg
ICAgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGlu
Z05vZGVJRCk7CiAgICAgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlKGNvbnN0IFNjcm9sbGluZ1N0
YXRlU3RpY2t5Tm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYpOwogCi0gICAgdm9pZCBzZXRQcm9w
ZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJv
cGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBj
b21wdXRlTGF5ZXJQb3NpdGlvbihjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0
OwogICAgIHZvaWQgcmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBM
YXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlVHJlZS5jcHAKaW5kZXggYjRkYmExYzY3NjNjZDViYzllNjUzMzZlYzljODFkZTA1ZDhl
NzI5OS4uZGYyYjI0ZTNiMmU3NWUyNzk0MGRhMTRhN2M3YTVkZjRiNTA1OGQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3Bw
CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVRyZWU6OmNsZWFyKCkKIHZv
aWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjpub2RlV2FzUmVhdHRhY2hlZFJlY3Vyc2l2ZShTY3JvbGxp
bmdTdGF0ZU5vZGUmIG5vZGUpCiB7CiAgICAgLy8gV2hlbiBhIG5vZGUgaXMgcmUtYXR0YWNoZWQs
IHRoZSBTY3JvbGxpbmdUcmVlIGlzIHJlY3JlYXRpbmcgdGhlIFNjcm9sbGluZ05vZGUgZnJvbSBz
Y3JhdGNoLCBzbyB3ZSBuZWVkIHRvIHNldCBhbGwgdGhlIGRpcnR5IGJpdHMuCi0gICAgbm9kZS5z
ZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpOworICAgIG5vZGUuc2V0UHJvcGVy
dHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogCiAgICAgaWYgKGF1dG8qIGNoaWxkcmVuID0gbm9k
ZS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiAqY2hpbGRyZW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4
IGFlNjcyMjAyNmY4OTI0YWFlN2I5ODI0OGI0MjllNzQxODI5NTgwZTkuLmU3M2U2ZjdlMDUyM2Ux
YTlkMTYxNmJhNmM3YzMyOTYxNGVhOGEyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0yNTYsMjIgKzI1NiwyMiBAQCB2b2lkIFNj
cm9sbGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZShzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3Rh
dGVUcmVlPiYmIHNjcm9sbAogICAgIGF1dG8qIHJvb3ROb2RlID0gc2Nyb2xsaW5nU3RhdGVUcmVl
LT5yb290U3RhdGVOb2RlKCk7CiAgICAgaWYgKHJvb3ROb2RlCiAgICAgICAgICYmIChyb290U3Rh
dGVOb2RlQ2hhbmdlZAotICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikK
LSAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpCi0gICAgICAgICAgICB8fCBy
b290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpCi0gICAgICAgICAgICB8
fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cykpKSB7CisgICAgICAgICAgICB8fCByb290
Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkV2
ZW50VHJhY2tpbmdSZWdpb24pCisgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXll
cikKKyAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVk
KQorICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cykpKSB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9jayhtX3RyZWVTdGF0ZU11dGV4KTsKIAotICAgICAgICBpZiAocm9vdFN0
YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgIGlmIChy
b290U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAg
ICAgICBtX3RyZWVTdGF0ZS5tYWluRnJhbWVTY3JvbGxQb3NpdGlvbiA9IHsgfTsKIAotICAgICAg
ICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikp
CisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkV2ZW50VHJhY2tpbmdSZWdp
b24pKQogICAgICAgICAgICAgbV90cmVlU3RhdGUuZXZlbnRUcmFja2luZ1JlZ2lvbnMgPSBzY3Jv
bGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsK
IAotICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6QXN5bmNGcmFtZU9y
T3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKSkKKyAgICAgICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFu
Z2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKSkKICAgICAgICAg
ICAgIG1fYXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkID0gc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5yb290U3RhdGVOb2RlKCktPmFzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5h
YmxlZCgpOwogCi0gICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpJc01v
bml0b3JpbmdXaGVlbEV2ZW50cykpCisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdlZCB8
fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRzKSkKICAgICAgICAgICAgIG1faXNNb25pdG9yaW5n
V2hlZWxFdmVudHMgPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+aXNNb25p
dG9yaW5nV2hlZWxFdmVudHMoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZS5jcHAKaW5kZXggNThjZWZlY2Q1YjBhNmVlOWUwMzE4NWUxZDhjNTczYWY1NDNlMWQxMC4uNTQw
YzgxZGJiOWIwOGE3Yjk5M2ZhZmIwZmUxNmUyYjIxNGZiMjljNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTUxLDM5ICs1MSwzOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xs
aW5nUwogICAgIAogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBz
dGF0ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihzdGF0ZU5v
ZGUpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvcikpCisgICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGcmFtZVNjYWxlRmFj
dG9yKSkKICAgICAgICAgbV9mcmFtZVNjYWxlRmFjdG9yID0gc3RhdGUuZnJhbWVTY2FsZUZhY3Rv
cigpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0KSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckhlaWdodCkpCiAg
ICAgICAgIG1faGVhZGVySGVpZ2h0ID0gc3RhdGUuaGVhZGVySGVpZ2h0KCk7CiAKLSAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpGb290ZXJIZWlnaHQpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVySGVpZ2h0KSkKICAgICAgICAgbV9mb290ZXJI
ZWlnaHQgPSBzdGF0ZS5mb290ZXJIZWlnaHQoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkJlaGF2aW9yRm9yRml4
ZWRFbGVtZW50cykpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpKQogICAgICAgICBt
X2JlaGF2aW9yRm9yRml4ZWQgPSBzdGF0ZS5zY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMo
KTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OlRvcENvbnRlbnRJbnNldCkpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3BDb250ZW50SW5zZXQp
KQogICAgICAgICBtX3RvcENvbnRlbnRJbnNldCA9IHN0YXRlLnRvcENvbnRlbnRJbnNldCgpOwog
Ci0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpKQor
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpKQogICAgICAg
ICBtX3Zpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0ID0gc3RhdGUudmlz
dWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQoKTsKIAotICAgIGlmIChzdGF0
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZp
eGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSkpCiAgICAgICAgIG1fZml4ZWRFbGVtZW50c0xheW91dFJlbGF0
aXZlVG9GcmFtZSA9IHN0YXRlLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKTsK
IAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OkxheW91dFZpZXdwb3J0KSkgeworICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQpKSB7
CiAgICAgICAgIG1fbGF5b3V0Vmlld3BvcnQgPSBzdGF0ZS5sYXlvdXRWaWV3cG9ydCgpOwogICAg
ICAgICB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3JvbGxQb3NpdGlvbih7IH0pOwogICAgIH0K
IAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luKSkKKyAgICBpZiAoc3RhdGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1pbkxheW91dFZp
ZXdwb3J0T3JpZ2luKSkKICAgICAgICAgbV9taW5MYXlvdXRWaWV3cG9ydE9yaWdpbiA9IHN0YXRl
Lm1pbkxheW91dFZpZXdwb3J0T3JpZ2luKCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpNYXhMYXlvdXRWaWV3cG9y
dE9yaWdpbikpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbikpCiAgICAgICAgIG1fbWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBzdGF0ZS5tYXhMYXlvdXRWaWV3cG9ydE9yaWdpbigpOwog
Ci0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpKQorICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcnJpZGVW
aXN1YWxWaWV3cG9ydFNpemUpKQogICAgICAgICBtX292ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXpl
ID0gc3RhdGUub3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDA4ODdiOWQwZmUxYzRjYWI0NGNkZjg0ZmFmN2Q1NDExNjZjODIzZjYu
Ljk5OGMxOGNlNTFlMTIyNTUzZDQ3ZjRhYjZmZmNlZDRmZGY2NWMyNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTgog
ewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgc3RhdGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc3Rh
dGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
YWJsZUFyZWFTaXplKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhU2l6ZSkpCiAgICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWFTaXplID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWFTaXplKCk7CiAKLSAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90
YWxDb250ZW50c1NpemUpKSB7CisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSkpIHsKICAgICAgICAg
aWYgKHNjcm9sbGluZ1RyZWUoKS5pc1J1YmJlckJhbmRJblByb2dyZXNzRm9yTm9kZShzY3JvbGxp
bmdOb2RlSUQoKSkpCiAgICAgICAgICAgICBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFu
ZCA9IG1fdG90YWxDb250ZW50c1NpemU7CiAgICAgICAgIGVsc2UKQEAgLTYyLDU3ICs2Miw1NyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAgICBtX3RvdGFsQ29udGVudHNTaXplID0g
c3RhdGUudG90YWxDb250ZW50c1NpemUoKTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVu
dHNTaXplKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkpCiAgICAgICAgIG1fcmVhY2hh
YmxlQ29udGVudHNTaXplID0gc3RhdGUucmVhY2hhYmxlQ29udGVudHNTaXplKCk7CiAKLSAgICBp
ZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsUG9zaXRpb24pKSB7CisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbikpIHsKICAgICAgICAgbV9s
YXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24gPSBzdGF0ZS5zY3JvbGxQb3NpdGlvbigpOwotICAg
ICAgICBpZiAobV9pc0ZpcnN0Q29tbWl0ICYmICFzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCisgICAg
ICAgIGlmIChtX2lzRmlyc3RDb21taXQgJiYgIXN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCiAgICAg
ICAgICAgICBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbiA9IG1fbGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQorICAgIGlmIChzdGF0ZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2lu
KSkKICAgICAgICAgbV9zY3JvbGxPcmlnaW4gPSBzdGF0ZS5zY3JvbGxPcmlnaW4oKTsKIAogI2lm
IEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cykpCisg
ICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpKQogICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby5o
b3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKQog
ICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc3RhdGUudmVy
dGljYWxTbmFwT2Zmc2V0cygpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkK
KyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKICAgICAgICAgbV9zbmFwT2Zmc2V0
c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS5ob3Jpem9udGFsU25hcE9m
ZnNldFJhbmdlcygpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCisgICAgaWYg
KHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpW
ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQogICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsK
IAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCisgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50
SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAgICAgIG1fY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsK
IAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZl
cnRpY2FsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgbV9jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCA9IHN0YXRlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CiAjZW5kaWYK
IAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFt
cykpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzID0gc3RhdGUuc2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzKCk7CiAKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKLSAgICBp
ZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcpKQorICAgIGlmIChzdGF0ZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhc29uc0ZvclN5
bmNocm9ub3VzU2Nyb2xsaW5nKSkKICAgICAgICAgbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMgPSBzdGF0ZS5zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKTsKICNlbmRpZgogCi0gICAg
aWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKICAg
ICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IHN0YXRlLnNjcm9sbENvbnRhaW5lckxheWVy
KCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpCiAgICAgICAgIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyID0gc3RhdGUuc2Nyb2xs
ZWRDb250ZW50c0xheWVyKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRl
Tm9kZSkKIHsKICAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGlu
Z1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVO
b2RlKTsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgewogICAgICAgICBjb25z
dCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3Rl
ZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2Rl
UmVxdWVzdHNTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCksIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Ny
b2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5jbGFtcGluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KaW5kZXgg
ZTBlNzBlODY5OGQ0NDUyNDU0ZDA5MmU4ZjY5MTJmZDE0Zjk0NzI5MC4uNmE2ZTc3ZDc1NWU0M2I2
YTNlYTM4YTNlMGQzOTllMWY4ZDlmOGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCkBA
IC02MSwxMCArNjEsMTAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYKIHsKICAgICBjb25zdCBT
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChmaXhlZFN0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisgICAgaWYgKGZp
eGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpMYXllcikpCiAgICAgICAgIG1fbGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oZml4
ZWRTdGF0ZU5vZGUubGF5ZXIoKSk7CiAKLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpCisgICAg
aWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cykpCiAgICAgICAgIG1fY29uc3RyYWludHMgPSBmaXhl
ZFN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbQppbmRleCAyZGQxNjlhNDhmNzMyZDRi
YWEzZDI5NmI1MTY5Nzc1NjZjMWFhNzM5Li45YTA4ZjgzYWM2MGQzYjg2ZTYzNDI5NTM2NzQ3ZDNh
OWRlZjM3NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2Nv
YS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJv
eHlOb2RlLm1tCkBAIC01MSwxMCArNTEsMTAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2wKIHsK
ICAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlJiBvdmVyZmxv
d1Byb3h5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKICAgICAg
ICAgbV9sYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzdGF0ZU5vZGUubGF5ZXIoKSk7CiAK
LSAgICBpZiAob3ZlcmZsb3dQcm94eVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKSkK
KyAgICBpZiAob3ZlcmZsb3dQcm94eVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKSkKICAgICAgICAg
bV9vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCA9IG92ZXJmbG93UHJveHlTdGF0ZU5vZGUub3ZlcmZs
b3dTY3JvbGxpbmdOb2RlKCk7CiAKICAgICBpZiAobV9vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tCmluZGV4IGEyNWE5ZDA2NjAzMDQw
NmU1NzZjNDllMTU4Zjg1NThjYjg1MjI2MDEuLmNmZDE2ZjQyYzZlYWNhYmMzNTkwYmRmY2QzNjI0
ZmJiZjExZDY1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUubW0KQEAgLTU0
LDEzICs1NCwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZQogewogICAgIGNvbnN0IFNjcm9s
bGluZ1N0YXRlUG9zaXRpb25lZE5vZGUmIHBvc2l0aW9uZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxT
Y3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHBvc2l0
aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5
ZXIpKQorICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCiAgICAgICAgIG1fbGF5ZXIgPSBzdGF0
aWNfY2FzdDxDQUxheWVyKj4ocG9zaXRpb25lZFN0YXRlTm9kZS5sYXllcigpKTsKIAotICAgIGlm
IChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykpCisgICAgaWYgKHBv
c2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSkKICAgICAgICAgbV9yZWxh
dGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUucmVsYXRlZE92
ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsKIAotICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpMYXlvdXRDb25z
dHJhaW50RGF0YSkpCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENvbnN0cmFpbnREYXRhKSkK
ICAgICAgICAgbV9jb25zdHJhaW50cyA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUubGF5b3V0Q29uc3Ry
YWludHMoKTsKIAogICAgIGlmICghbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcy5pc0Vt
cHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCmluZGV4IDNmZjVkMGRiODA5ZjBlYjA4
Y2UyMjg5YjYxYmM4MWRmZjE2NzM0NDQuLjAyZTM1Y2Q2Yjk3MGQ2ZjFhOWEyNWU0M2NmYjRiN2M3
ZWE0NjA4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29h
L1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCkBAIC02MCwxMCArNjAsMTAg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUKIHsKICAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5
Tm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgIGlmIChzdGlja3lTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVy
KSkKICAgICAgICAgbV9sYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzdGlja3lTdGF0ZU5v
ZGUubGF5ZXIoKSk7CiAKLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgIGlmIChzdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZp
ZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICBtX2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVO
b2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGVNYWMubW0KaW5kZXggNTg1OTRmZTNhNzMzZDUzMzhlODc0NDhjZTQ0NWNhYWNjMTFhMTM5
NS4uZWQyNjE5MDliMWJmODZlY2JkYTI5YzY3NGQ2ZGQ2MjIzMTkwNTljMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxlckltcHNGcm9tU2Nyb2xsYmFycyhTY3Jv
bGxiYXIqIHZlcnRpCiAgICAgbV92ZXJ0aWNhbFNjcm9sbGVySW1wID0gdmVydGljYWxQYWludGVy
OwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGVySW1wID0gaG9yaXpvbnRhbFBhaW50ZXI7CiAKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoUGFpbnRlckZvclNjcm9sbGJhcik7CisgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKFByb3BlcnR5OjpQYWludGVyRm9yU2Nyb2xsYmFyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bQppbmRleCAzZTdlMTQxYmRhMTE3YjgwNmIxNjFjZmNhYjRlZGRjYjk0M2JjMDRjLi43YmU5MzFh
ODk5NmQ0ZTY0YjQ4YjM2YzJmMGEwMmNhODU4OGZmZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtNjgsMjYgKzY4LDI2IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihj
b25zdCBTY3JvbGxpCiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y29tbWl0
U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGlu
Z1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihz
dGF0ZU5vZGUpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlJvb3RDb250ZW50c0xheWVyKSkK
KyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpSb290Q29udGVudHNMYXllcikpCiAgICAgICAgIG1fcm9vdENv
bnRlbnRzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLnJv
b3RDb250ZW50c0xheWVyKCkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3Jv
bGxpbmdMYXllcikpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkK
ICAgICAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4o
c2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpKTsKIAotICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SW5zZXRD
bGlwTGF5ZXIpKQogICAgICAgICBtX2luc2V0Q2xpcExheWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXll
cio+KHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNldENsaXBMYXllcigpKTsKIAotICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvbnRl
bnRTaGFkb3dMYXllcikpCiAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gc3RhdGljX2Nh
c3Q8Q0FMYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKSk7CiAK
LSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkhlYWRlckxheWVyKSkKICAgICAgICAgbV9oZWFkZXJMYXllciA9IHN0YXRpY19jYXN0PENBTGF5
ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKSk7CiAKLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkZvb3RlckxheWVyKSkK
ICAgICAgICAgbV9mb290ZXJMYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxpbmdT
dGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAKICAgICBib29sIGxvZ1Njcm9sbGluZ01vZGUgPSAh
bV9oYWRGaXJzdFVwZGF0ZTsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0ZvclN5bmNo
cm9ub3VzU2Nyb2xsaW5nKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFzb25zRm9yU3luY2hyb25v
dXNTY3JvbGxpbmcpKQogICAgICAgICBsb2dTY3JvbGxpbmdNb2RlID0gdHJ1ZTsKIAogICAgIGlm
IChsb2dTY3JvbGxpbmdNb2RlICYmIGlzUm9vdE5vZGUoKSAmJiBzY3JvbGxpbmdUcmVlKCkuc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKQpAQCAtMTA1LDE1ICsxMDUsMTUgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUFmdGVy
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW4KICAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAK
ICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2RlcyBoYXZl
IGJlZW4gdXBkYXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNv
bnN0cmFpbnRzIGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhhcHBlbnMuCi0gICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbikpIHsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xs
RGF0YSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAg
IHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNj
cm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAgICAg
fQogCiAgICAgaWYgKGlzUm9vdE5vZGUoKQotICAgICAgICAmJiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVk
Q29udGVudHNMYXllcikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQot
ICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkpCisgICAgICAgICYmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikKKyAgICAgICAgfHwgc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpU
b3RhbENvbnRlbnRzU2l6ZSkKKyAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVNp
emUpKSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGluQW5kUnViYmVyYmFuZFN0YXRlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KaW5k
ZXggM2YzNDdkMDIzZDNiZmY1ZjAxOGZiNWQ5NjY3ZjQ0NmNlOGMyYTJlNS4uNmIwMmIxNmUxMzIy
YjAxNGRkNDk3M2I0N2ViMGZhZGRhM2MwNzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4o
Y29uc3QgU2Nyb2wKIAogICAgIGNvbnN0IGF1dG8mIG92ZXJmbG93U3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAg
ICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKSB7CisgICAgaWYgKG92ZXJm
bG93U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKICAgICAgICAgY29uc3QgYXV0byYgcmVx
dWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEo
KTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwg
cmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1w
aW5nKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCmluZGV4IGEzZmJjNTlhNDc2OTIyZTViYmMyYjY2NjI0OWY4NDVlZDdiMmI3ZTkuLmM3
ZmQyODJjN2FhZjRmNzFlZWI3YzVmMTEyM2E3ZGM1YTFhNmJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCkBAIC03OSwyMyArNzksMjMgQEAg
c3RhdGljIGlubGluZSBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8TGF5b3V0VW5pdD4+IGNvbnZl
cnRUb0xheW91dFVuaXRzKGNvbnN0IFYKIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQogewotICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UGFp
bnRlckZvclNjcm9sbGJhcikpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpQYWludGVyRm9yU2Nyb2xs
YmFyKSkgewogICAgICAgICByZWxlYXNlUmVmZXJlbmNlc1RvU2Nyb2xsZXJJbXBzT25UaGVNYWlu
VGhyZWFkKCk7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxlckltcCA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS52ZXJ0aWNhbFNjcm9sbGVySW1wKCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGVy
SW1wID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250YWxTY3JvbGxlckltcCgpOwogICAgIH0K
IAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhv
cml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZz
ZXRSYW5nZXMpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwg
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykpCiAgICAgICAgIHVwZGF0ZVNj
cm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBjb252ZXJ0VG9MYXlv
dXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpLCBjb252
ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMoKSkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMp
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykpCisgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpKQogICAgICAgICB1cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52
ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0
ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkpKTsKIAotICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1
cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgc2V0QWN0aXZlU2Nyb2xs
U25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0
YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIAotICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKKyAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICBzZXRBY3Rp
dmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9s
bGluZ1N0YXRlTm9kZS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24u
Y3BwCmluZGV4IDIxYTU1ZDU2NmZjYTIxMzMwMjQ5NjEzMjQ0MGIyNmNkZWMyYmI1YjEuLmE4YWYy
MjA1ZGM1Nzc4NWM4ZTQzMDQ5N2JjNTIwZDk5NWIwNWRkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRy
YW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTEwMCw2ICsxMDAs
NjEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZXF1ZXN0ZWRTY3JvbGxEYXRh
PiB7CiAKIH0gLy8gbmFtZXNwYWNlIElQQwogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eSwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OkNoaWxkTm9kZXMsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhU2l6ZSwKKyAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUsCisgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Ny
b2xsUG9zaXRpb24sCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbE9yaWdpbiwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZywKKyAg
ICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVzdGVkU2Ny
b2xsUG9zaXRpb24sCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywKKyAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMs
CisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2Fs
U25hcE9mZnNldFJhbmdlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsCisgICAgICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZz
ZXRJbmRleCwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
SXNNb25pdG9yaW5nV2hlZWxFdmVudHMsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyLAorICAgICAgICBXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIsCisgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTY3Jv
bGxiYXJMYXllciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6VmVydGljYWxTY3JvbGxiYXJMYXllciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6UGFpbnRlckZvclNjcm9sbGJhciwKKyAgICAgICAgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RnJhbWVTY2FsZUZhY3RvciwKKyAgICAgICAg
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RXZlbnRUcmFja2luZ1JlZ2lv
biwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Um9vdENv
bnRlbnRzTGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvbnRlbnRTaGFkb3dMYXllciwKKyAgICAgICAgV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SGVhZGVySGVpZ2h0LAorICAgICAg
ICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGb290ZXJIZWlnaHQsCisg
ICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckxheWVy
LAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGb290ZXJM
YXllciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6QmVo
YXZpb3JGb3JGaXhlZEVsZW1lbnRzLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpUb3BDb250ZW50SW5zZXQsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OkZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUs
CisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpc3VhbFZp
ZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0LAorICAgICAgICBXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0Vu
YWJsZWQsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okxh
eW91dFZpZXdwb3J0LAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4sCisgICAgICAgIFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJyaWRlVmlzdWFsVmlld3Bv
cnRTaXplLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpS
ZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcywKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Q29uc3RyYWludERhdGEsCisgICAgICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMsCisg
ICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJmbG93U2Ny
b2xsaW5nTm9kZQorICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogdXNpbmcgbmFt
ZXNwYWNlIElQQzsKIAogdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIG5vZGUpCkBA
IC0xMDksMTkgKzE2NCwxOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVOb2Rl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm9sbGluZwogICAgIGVuY29kZXIg
PDwgbm9kZS5wYXJlbnROb2RlSUQoKTsKICAgICBlbmNvZGVyIDw8IG5vZGUuY2hhbmdlZFByb3Bl
cnRpZXMoKTsKICAgICAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpMYXllcikpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUubGF5ZXIoKSk7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlKQogewogICAgIC8vIG5vZGVUeXBl
LCBzY3JvbGxpbmdOb2RlSUQgYW5kIHBhcmVudE5vZGVJRCBoYXZlIGFscmVhZHkgYmVlbiBkZWNv
ZGVkIGJ5IHRoZSBjYWxsZXIgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBub2RlLgotICAgIFNjcm9s
bGluZ1N0YXRlTm9kZTo6Q2hhbmdlZFByb3BlcnRpZXMgY2hhbmdlZFByb3BlcnRpZXM7CisgICAg
T3B0aW9uU2V0PFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk+IGNoYW5nZWRQcm9wZXJ0aWVz
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2hhbmdlZFByb3BlcnRpZXMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBub2RlLnNldENoYW5nZWRQcm9wZXJ0aWVzKGNoYW5nZWRQcm9w
ZXJ0aWVzKTsKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVy
SUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQzLDMzICsxOTgsMzMgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3Qg
U2Nyb2xsaW5nU3RhdGVOb2RlJj4obm9kZSk7CiAgICAgCi0gICAgU0NST0xMSU5HX05PREVfRU5D
T0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBzY3Jv
bGxhYmxlQXJlYVNpemUpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUsIHRvdGFsQ29udGVudHNTaXplKQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSwgcmVhY2hhYmxlQ29udGVudHNTaXplKQotICAgIFNDUk9MTElOR19O
T0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uLCBz
Y3JvbGxQb3NpdGlvbikKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdpbikKKyAgICBTQ1JPTExJTkdf
Tk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFT
aXplLCBzY3JvbGxhYmxlQXJlYVNpemUpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRz
U2l6ZSkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplLCByZWFjaGFibGVDb250ZW50c1NpemUpCisgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9s
bFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4pCiAj
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250
YWxTbmFwT2Zmc2V0cykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRzKQot
ICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhv
cml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykKLSAg
ICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykKLSAgICBTQ1JP
TExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50SG9y
aXpvbnRhbFNuYXBPZmZzZXRJbmRleCwgY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCkK
LSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpD
dXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0cykKKyAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGlj
YWxTbmFwT2Zmc2V0cywgdmVydGljYWxTbmFwT2Zmc2V0cykKKyAgICBTQ1JPTExJTkdfTk9ERV9F
TkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRS
YW5nZXMsIGhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5n
ZXMsIHZlcnRpY2FsU25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUo
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0
SW5kZXgsIGN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgpCisgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNu
YXBPZmZzZXRJbmRleCwgY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgpCiAjZW5kaWYKLSAg
ICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxhYmxlQXJlYVBhcmFtcywgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKQorICAgIFNDUk9MTElO
R19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJl
YVBhcmFtcywgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKQogICAgIC8vIFVJLXNpZGUgY29tcG9z
aXRpbmcgY2FuJ3QgZG8gc3luY2hyb25vdXMgc2Nyb2xsaW5nIHNvIGRvbid0IGVuY29kZSBzeW5j
aHJvbm91c1Njcm9sbGluZ1JlYXNvbnMuCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sIHJlcXVlc3Rl
ZFNjcm9sbERhdGEpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxEYXRh
KQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXll
cikpCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEPihub2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpOwogCi0gICAgaWYgKG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRD
b250ZW50c0xheWVyKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUu
c2Nyb2xsZWRDb250ZW50c0xheWVyKCkpOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIoKSk7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUudmVydGljYWxT
Y3JvbGxiYXJMYXllcigpKTsKIH0KIApAQCAtMTc3LDMwICsyMzIsMzAgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGMKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpOwogCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RF
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yLCBmcmFt
ZVNjYWxlRmFjdG9yKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lvbiwgZXZlbnRUcmFja2luZ1JlZ2lv
bnMpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFX0VOVU0oU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cywgc2Nyb2xsQmVoYXZpb3JGb3JG
aXhlZEVsZW1lbnRzKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0LCBoZWFkZXJIZWlnaHQpCi0gICAgU0NST0xM
SU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJI
ZWlnaHQsIGZvb3RlckhlaWdodCkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlRvcENvbnRlbnRJbnNldCwgdG9wQ29udGVudEluc2V0
KQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgZml4ZWRFbGVtZW50c0xh
eW91dFJlbGF0aXZlVG9GcmFtZSkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91
dFZpZXdwb3J0LCB2aXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCkKKyAg
ICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RnJh
bWVTY2FsZUZhY3RvciwgZnJhbWVTY2FsZUZhY3RvcikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNP
REUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RXZlbnRUcmFja2luZ1JlZ2lvbiwgZXZl
bnRUcmFja2luZ1JlZ2lvbnMpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFX0VOVU0oU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBzY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckhlaWdodCwgaGVhZGVySGVpZ2h0KQorICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGb290
ZXJIZWlnaHQsIGZvb3RlckhlaWdodCkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG9wQ29udGVudEluc2V0LCB0b3BDb250ZW50SW5zZXQp
CisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUsIGZpeGVkRWxlbWVudHNMYXlvdXRS
ZWxhdGl2ZVRvRnJhbWUpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0
LCB2aXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCkKICAgICAvLyBBc3lu
Y0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQgaXMgbm90IHJlbGV2YW50IGZvciBVSS1z
aWRlIGNvbXBvc2l0aW5nLgotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6TGF5b3V0Vmlld3BvcnQsIGxheW91dFZpZXdwb3J0KQotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
TWluTGF5b3V0Vmlld3BvcnRPcmlnaW4sIG1pbkxheW91dFZpZXdwb3J0T3JpZ2luKQotICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6TWF4
TGF5b3V0Vmlld3BvcnRPcmlnaW4sIG1heExheW91dFZpZXdwb3J0T3JpZ2luKQotICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6T3ZlcnJp
ZGVWaXN1YWxWaWV3cG9ydFNpemUsIG92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKQorICAgIFND
Uk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXlvdXRW
aWV3cG9ydCwgbGF5b3V0Vmlld3BvcnQpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luLCBtaW5MYXlv
dXRWaWV3cG9ydE9yaWdpbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4sIG1heExheW91dFZpZXdw
b3J0T3JpZ2luKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSwgb3ZlcnJpZGVWaXN1YWxWaWV3
cG9ydFNpemUpCiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCisgICAgaWYgKG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvdW50
ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpKTsK
IAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpJbnNldENsaXBMYXllcikpCiAgICAg
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
Pihub2RlLmluc2V0Q2xpcExheWVyKCkpOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIp
KQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpDb250ZW50U2hhZG93TGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb250ZW50U2hhZG93TGF5
ZXIoKSk7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OlJvb3RDb250ZW50c0xheWVyKSkKKyAgICBpZiAobm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Um9vdENvbnRlbnRz
TGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRD4obm9kZS5yb290Q29udGVudHNMYXllcigpKTsKIH0KIApAQCAtMjE3LDcg
KzI3Miw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiB2b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlJiBub2RlKQog
ewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJj4o
bm9kZSk7Ci0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU6Ok92ZXJmbG93U2Nyb2xsaW5nTm9kZSwgb3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpPdmVyZmxvd1Njcm9sbGluZ05vZGUsIG92ZXJmbG93U2Nyb2xsaW5nTm9kZSkKIH0KIAog
I2RlZmluZSBTQ1JPTExJTkdfTk9ERV9ERUNPREUocHJvcGVydHksIHR5cGUsIHNldHRlcikgXApA
QCAtMjQxLDQ0ICsyOTYsNDQgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGwKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBGbG9hdFNpemUsIHNldFNj
cm9sbGFibGVBcmVhU2l6ZSk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0VG90YWxD
b250ZW50c1NpemUpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRSZWFjaGFi
bGVDb250ZW50c1NpemUpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3Np
dGlvbik7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsT3JpZ2luLCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKKyAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsYWJs
ZUFyZWFTaXplLCBGbG9hdFNpemUsIHNldFNjcm9sbGFibGVBcmVhU2l6ZSk7CisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlRvdGFsQ29udGVu
dHNTaXplLCBGbG9hdFNpemUsIHNldFRvdGFsQ29udGVudHNTaXplKTsKKyAgICBTQ1JPTExJTkdf
Tk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVu
dHNTaXplLCBGbG9hdFNpemUsIHNldFJlYWNoYWJsZUNvbnRlbnRzU2l6ZSk7CisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0
aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CisgICAgU0NST0xMSU5HX05PREVf
REVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbiwgSW50UG9p
bnQsIHNldFNjcm9sbE9yaWdpbik7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9u
dGFsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4sIHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7
Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
VmVydGljYWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0
cyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxm
bG9hdD4+LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykKLSAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRS
YW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVuc2lnbmVkLCBz
ZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKLSAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50VmVydGljYWxTbmFwT2Zm
c2V0SW5kZXgsIHVuc2lnbmVkLCBzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCk7Cisg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhv
cml6b250YWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0SG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0VmVydGljYWxTbmFw
T2Zmc2V0cyk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8ZmxvYXQ+Piwgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldFZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcykKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIHVu
c2lnbmVkLCBzZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KTsKKyAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgpOwogI2VuZGlmCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsIFNjcm9sbGFibGVBcmVhUGFyYW1l
dGVycywgc2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
biwgUmVxdWVzdGVkU2Nyb2xsRGF0YSwgc2V0UmVxdWVzdGVkU2Nyb2xsRGF0YSk7CisgICAgU0NS
T0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFi
bGVBcmVhUGFyYW1zLCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMsIHNldFNjcm9sbGFibGVBcmVh
UGFyYW1ldGVycyk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLCBSZXF1ZXN0ZWRTY3JvbGxEYXRh
LCBzZXRSZXF1ZXN0ZWRTY3JvbGxEYXRhKTsKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkg
eworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5
ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5vZGUuc2V0U2Nyb2xs
Q29udGFpbmVyTGF5ZXIobGF5ZXJJRCk7CiAgICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xh
eWVyKSkgeworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CiAgICAgICAgIEdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBub2RlLnNl
dFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllcklEKTsKICAgICB9CiAKLSAgICBpZiAobm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6
b250YWxTY3JvbGxiYXJMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkg
ewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgbm9kZS5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIobGF5ZXJJRCk7CiAg
ICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkgeworICAgIGlmIChub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNh
bFNjcm9sbGJhckxheWVyKSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQgbGF5ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5Myw0MiArMzQ4LDQyIEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
RnJhbWVTY2FsZUZhY3RvciwgZmxvYXQsIHNldEZyYW1lU2NhbGVGYWN0b3IpOwotICAgIFNDUk9M
TElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRU
cmFja2luZ1JlZ2lvbiwgRXZlbnRUcmFja2luZ1JlZ2lvbnMsIHNldEV2ZW50VHJhY2tpbmdSZWdp
b25zKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREVfRU5VTShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBTY3JvbGxCZWhhdmlvckZv
ckZpeGVkRWxlbWVudHMsIHNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7Ci0KLSAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OkhlYWRlckhlaWdodCwgaW50LCBzZXRIZWFkZXJIZWlnaHQpOwotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVySGVpZ2h0LCBp
bnQsIHNldEZvb3RlckhlaWdodCk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpUb3BDb250ZW50SW5zZXQsIGZsb2F0LCBzZXRUb3BD
b250ZW50SW5zZXQpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgYm9v
bCwgc2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7Ci0gICAgU0NST0xMSU5H
X05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWaXN1YWxWaWV3
cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCwgYm9vbCwgc2V0VmlzdWFsVmlld3BvcnRJ
c1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6TGF5b3V0Vmlld3BvcnQsIEZsb2F0UmVj
dCwgc2V0TGF5b3V0Vmlld3BvcnQpCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpNaW5MYXlvdXRWaWV3cG9ydE9yaWdpbiwgRmxvYXRQ
b2ludCwgc2V0TWluTGF5b3V0Vmlld3BvcnRPcmlnaW4pCi0gICAgU0NST0xMSU5HX05PREVfREVD
T0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpNYXhMYXlvdXRWaWV3cG9ydE9y
aWdpbiwgRmxvYXRQb2ludCwgc2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pCi0gICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpPdmVycmlk
ZVZpc3VhbFZpZXdwb3J0U2l6ZSwgT3B0aW9uYWw8RmxvYXRTaXplPiwgc2V0T3ZlcnJpZGVWaXN1
YWxWaWV3cG9ydFNpemUpCi0KLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpIHsKKyAg
ICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RnJh
bWVTY2FsZUZhY3RvciwgZmxvYXQsIHNldEZyYW1lU2NhbGVGYWN0b3IpOworICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpFdmVudFRyYWNraW5n
UmVnaW9uLCBFdmVudFRyYWNraW5nUmVnaW9ucywgc2V0RXZlbnRUcmFja2luZ1JlZ2lvbnMpOwor
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERV9FTlVNKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cywgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1l
bnRzLCBzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOworCisgICAgU0NST0xMSU5H
X05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckhlaWdodCwg
aW50LCBzZXRIZWFkZXJIZWlnaHQpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGb290ZXJIZWlnaHQsIGludCwgc2V0Rm9vdGVySGVpZ2h0
KTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6VG9wQ29udGVudEluc2V0LCBmbG9hdCwgc2V0VG9wQ29udGVudEluc2V0KTsKKyAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rml4ZWRFbGVt
ZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwgYm9vbCwgc2V0Rml4ZWRFbGVtZW50c0xheW91dFJl
bGF0aXZlVG9GcmFtZSk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0
LCBib29sLCBzZXRWaXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCk7Cisg
ICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okxh
eW91dFZpZXdwb3J0LCBGbG9hdFJlY3QsIHNldExheW91dFZpZXdwb3J0KQorICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbiwgRmxvYXRQb2ludCwgc2V0TWluTGF5b3V0Vmlld3BvcnRPcmlnaW4pCisgICAg
U0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1heExh
eW91dFZpZXdwb3J0T3JpZ2luLCBGbG9hdFBvaW50LCBzZXRNYXhMYXlvdXRWaWV3cG9ydE9yaWdp
bikKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUsIE9wdGlvbmFsPEZsb2F0U2l6ZT4sIHNldE92
ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKQorCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikp
IHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIG5vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGxheWVySUQpOwogICAg
IH0KIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKSB7CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okluc2V0Q2xpcExheWVyKSkg
ewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgbm9kZS5zZXRJbnNldENsaXBMYXllcihsYXllcklEKTsKICAgICB9CiAKLSAg
ICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q29udGVudFNoYWRvd0xheWVyKSkg
ewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgbm9kZS5zZXRDb250ZW50U2hhZG93TGF5ZXIobGF5ZXJJRCk7CiAgICAgfQog
Ci0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpSb290Q29udGVudHNMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIp
KSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzU5LDcgKzQxNCw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpPdmVyZmxvd1Njcm9sbGluZ05vZGUs
IFNjcm9sbGluZ05vZGVJRCwgc2V0T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKTsKKyAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlLCBTY3JvbGxpbmdOb2RlSUQsIHNldE92ZXJmbG93U2Nyb2xsaW5nTm9kZSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2Nyw3ICs0MjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2NybwogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJj4obm9kZSk7CiAgICAgCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICBpZiAobm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmlld3Bv
cnRDb25zdHJhaW50cykpCiAgICAgICAgIGVuY29kZXIgPDwgbm9kZS52aWV3cG9ydENvbnN0cmFp
bnRzKCk7CiB9CiAKQEAgLTM3Niw3ICs0MzEsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVGaXhlZE5vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsaW5nUwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVOb2RlJj4o
bm9kZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKSB7
CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpKSB7CiAgICAgICAgIEZpeGVkUG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzIGRlY29kZWRWYWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZWNvZGVkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzkwLDcgKzQ0
NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2NyCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKTsKICAgICAKLSAgICBpZiAobm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3cG9ydENv
bnN0cmFpbnRzKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cykpCiAgICAgICAgIGVuY29kZXIg
PDwgbm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKQEAgLTM5OSw3ICs0NTQsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNjcm9sbGluZwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGljX2Nh
c3Q8U2Nyb2xsaW5nU3RhdGVOb2RlJj4obm9kZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkgeworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkgewog
ICAgICAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgZGVjb2RlZFZhbHVlOwog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRWYWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MTMsMTAgKzQ2OCwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Ny
b2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
Jj4obm9kZSk7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVQb3NpdGlvbmVkTm9kZTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpKQorICAgIGlm
IChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpS
ZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykpCiAgICAgICAgIGVuY29kZXIgPDwgbm9kZS5y
ZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcygpOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OkxheW91dENvbnN0cmFpbnRE
YXRhKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6TGF5b3V0Q29uc3RyYWludERhdGEpKQogICAgICAgICBlbmNvZGVyIDw8IG5v
ZGUubGF5b3V0Q29uc3RyYWludHMoKTsKIH0KIApAQCAtNDI1LDE0ICs0ODAsMTQgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgU2Nyb2wKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNj
cm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6
OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSkgeworICAgIGlmIChub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWxhdGVkT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlcykpIHsKICAgICAgICAgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gZGVjb2Rl
ZFZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRWYWx1ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5vZGUuc2V0UmVsYXRlZE92ZXJmbG93U2Ny
b2xsaW5nTm9kZXMoV1RGTW92ZShkZWNvZGVkVmFsdWUpKTsKICAgICB9CiAKLSAgICBpZiAobm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6TGF5b3V0
Q29uc3RyYWludERhdGEpKSB7CisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENvbnN0cmFpbnREYXRhKSkgewogICAgICAg
ICBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHMgZGVjb2RlZFZhbHVlOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRlY29kZWRWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02MDUsNDUgKzY2MCw0NSBAQCBib29sIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAKIHN0YXRpYyB2b2lkIGR1
bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9k
ZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgaWYgKCFjaGFuZ2VkUHJvcGVy
dGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxhYmxlQXJlYVNpemUpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNP
bmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbGFibGVBcmVhU2l6ZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xs
YWJsZS1hcmVhLXNpemUiLCBub2RlLnNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAotICAgIGlmICgh
Y2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpKQorICAgIGlmICghY2hhbmdl
ZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlRvdGFsQ29udGVudHNTaXplKSkKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJ0b3RhbC1jb250ZW50cy1zaXplIiwgbm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKTsKIAot
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKKyAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFjaGFibGVDb250ZW50c1NpemUpKQogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInJlYWNoYWJsZS1jb250ZW50cy1zaXplIiwgbm9kZS5yZWFj
aGFibGVDb250ZW50c1NpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbFBvc2l0aW9uKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3Np
dGlvbikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsLXBvc2l0aW9uIiwgbm9kZS5z
Y3JvbGxQb3NpdGlvbigpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
T3JpZ2luKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4pKQog
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbC1vcmlnaW4iLCBub2RlLnNjcm9sbE9yaWdp
bigpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKSB7CisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24pKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBu
b2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyZXF1
ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uIiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlv
bik7CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbi1p
cy1wcm9ncmFtYXRpYyIsIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSk7CiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbi1jbGFtcGluZyIsIHJl
cXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwogICAgIH0KIAotICAgIGlmICghY2hhbmdlZFBy
b3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzY3JvbGwtY29udGFpbmVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEPihub2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkpKTsKIAotICAgIGlmICgh
Y2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICBpZiAoIWNo
YW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhv
cml6b250YWwgc25hcCBvZmZzZXRzIiwgbm9kZS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSk7CiAK
LSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMpKQorICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMpKQogICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInZlcnRpY2FsIHNuYXAgb2Zmc2V0cyIsIG5vZGUudmVydGljYWxT
bmFwT2Zmc2V0cygpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudEhv
cml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5
IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJjdXJyZW50IGhvcml6b250YWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNP
bmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKKyAgICBpZiAoIWNoYW5nZWRQcm9w
ZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpKQogICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImN1cnJlbnQgdmVydGljYWwgc25hcCBwb2ludCBpbmRleCIsIG5vZGUuY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAjZW5kaWYKIH0KQEAgLTY1NiwxMCArNzEx
LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBub2RlLCBiCiB7CiAgICAgZHVtcCh0cywgc3RhdGljX2Nh
c3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSksIGNoYW5nZWRQcm9w
ZXJ0aWVzT25seSk7CiAgICAgCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZy
YW1lU2NhbGVGYWN0b3IpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkZyYW1lU2Nh
bGVGYWN0b3IpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZyYW1lLXNjYWxlLWZhY3RvciIs
IG5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNP
bmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpFdmVudFRyYWNraW5nUmVnaW9uKSkgeworICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkV2ZW50VHJhY2tpbmdSZWdpb24pKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFRl
eHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICAgICAgdHMgPDwgImFzeW5j
aHJvbm91cy1ldmVudC10cmFja2luZy1yZWdpb24iOwpAQCAtNjg0LDI4ICs3MzksMjggQEAgc3Rh
dGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUmIG5vZGUsIGIKICAgICAvLyBGSVhNRTogZHVtcCBzY3JvbGxhYmxlQXJlYVBh
cmFtZXRlcnMKICAgICAvLyBGSVhNRTogZHVtcCBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQpKQor
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckhlaWdodCkpCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaGVhZGVyLWhlaWdodCIsIG5vZGUuaGVhZGVySGVpZ2h0KCkpOwogCi0g
ICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckhlaWdodCkpCisgICAgaWYg
KCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVySGVpZ2h0KSkKICAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJmb290ZXItaGVpZ2h0Iiwgbm9kZS5mb290ZXJIZWlnaHQoKSk7CiAKLSAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVudEluc2V0KSkKKyAgICBpZiAoIWNo
YW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpUb3BDb250ZW50SW5zZXQpKQogICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInRvcC1jb250ZW50LWluc2V0Iiwgbm9kZS50b3BDb250ZW50SW5zZXQoKSk7CiAKLSAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvcikpCisgICAg
aWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6RnJhbWVTY2FsZUZhY3RvcikpCiAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZnJhbWUtc2NhbGUtZmFjdG9yIiwgbm9kZS5mcmFtZVNjYWxlRmFjdG9y
KCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVy
KSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpJbnNldENsaXBMYXllcikpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgiY2xpcC1pbnNldC1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5pbnNldENsaXBMYXllcigpKSk7CiAKLSAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkKKyAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb250ZW50U2hhZG93TGF5ZXIpKQogICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnQtc2hhZG93LWxheWVyIiwgc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmNvbnRlbnRTaGFkb3dMYXllcigpKSk7
CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAg
IGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckxheWVyKSkKICAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJoZWFkZXItbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQ+KG5vZGUuaGVhZGVyTGF5ZXIoKSkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJv
cGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpGb290ZXJMYXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZm9vdGVyLWxheWVy
Iiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmZvb3Rl
ckxheWVyKCkpKTsKIH0KICAgICAKQEAgLTcxNiwyOCArNzcxLDI4IEBAIHN0YXRpYyB2b2lkIGR1
bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlJiBub2RlCiAKIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9s
bGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3Bl
cnRpZXNPbmx5KQogewotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU6Ok92
ZXJmbG93U2Nyb2xsaW5nTm9kZSkpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwg
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3Zl
cmZsb3dTY3JvbGxpbmdOb2RlKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvdmVyZmxvdy1z
Y3JvbGxpbmctbm9kZSIsIG5vZGUub3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9k
ZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgaWYgKCFjaGFuZ2Vk
UHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
aXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICB0cyA8PCBub2RlLnZpZXdwb3J0
Q29uc3RyYWludHMoKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSkKIHsKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykp
CisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cykpCiAg
ICAgICAgIHRzIDw8IG5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCiBzdGF0aWMgdm9p
ZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2Rl
JiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykpCisgICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpKQogICAg
ICAgICB0cyA8PCBub2RlLnJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCk7CiAKLSAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgaWYg
KCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5b3V0Q29uc3RyYWludERhdGEpKQogICAgICAgICB0
cyA8PCBub2RlLmxheW91dENvbnN0cmFpbnRzKCk7CiB9CiAKQEAgLTc0NSw3ICs4MDAsNyBAQCBz
dGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
IG5vZGUsIGJvb2wgY2hhbmdlZFBybwogewogICAgIHRzLmR1bXBQcm9wZXJ0eSgidHlwZSIsIG5v
ZGUubm9kZVR5cGUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKKyAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
bGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUu
bGF5ZXIoKSkpOwogICAgIAogICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggMTI1ZjVm
MWJjZGMwZTAzYmM1OWI1NGM5MzdjNDNkZjk3MjNhZjBiMC4uZGE1MTk1NWJiMDM4ZjhiZjc3Mjhk
ZWM1NjE2YmU2MGVmYmJlZWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclByb3h5LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0
ZVRyZWUmCiAgICAgdXNpbmcgUGxhdGZvcm1MYXllcklEID0gR3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEOwogCiAgICAgZm9yIChhdXRvJiBjdXJyTm9kZSA6IHN0YXRlVHJlZS5ub2RlTWFw
KCkudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKICAgICAg
ICAgICAgIGN1cnJOb2RlLT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZv
cm1MYXllcklEIHsgY3Vyck5vZGUtPmxheWVyKCkgfSkpOwogCiAgICAgICAgIHN3aXRjaCAoY3Vy
ck5vZGUtPm5vZGVUeXBlKCkpIHsKQEAgLTExMSw1MCArMTExLDUwIEBAIHZvaWQgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdT
dGF0ZVRyZWUmCiAgICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZyYW1lOiB7CiAg
ICAgICAgICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KCpjdXJy
Tm9kZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29u
dGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVy
TGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxDb250
YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Ny
b2xsaW5nU3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkgfSkpOwogCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9s
bGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXll
ckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRl
bnRzTGF5ZXIoKSB9KSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVy
U2Nyb2xsaW5nTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q291bnRlclNjcm9s
bGluZ0xheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0Q291bnRl
clNjcm9sbGluZ0xheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQg
eyBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkgfSkpOwogCi0gICAg
ICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKQorICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z1N0YXRlTm9kZS5zZXRJbnNldENsaXBMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxh
dGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLmluc2V0Q2xpcExheWVyKCkgfSkpOwog
Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkKKyAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkNvbnRlbnRTaGFkb3dMYXllcikpCiAgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldENvbnRlbnRTaGFkb3dMYXllcihsYXllclRyZWVI
b3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLmNvbnRl
bnRTaGFkb3dMYXllcigpIH0pKTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBu
ZXZlciBoYXZlIGhlYWRlciBhbmQgZm9vdGVyIGxheWVycyBjb21pbmcgZnJvbSB0aGUgV2ViUHJv
Y2Vzcy4KLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpCisgICAg
ICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIZWFkZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Ny
b2xsaW5nU3RhdGVOb2RlLnNldEhlYWRlckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQ
bGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKSB9KSk7CiAK
LSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXllcikpCisgICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpGb290ZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
U3RhdGVOb2RlLnNldEZvb3RlckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9y
bUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSB9KSk7CiAKLSAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKGxheWVy
VHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUu
dmVydGljYWxTY3JvbGxiYXJMYXllcigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6Okhvcml6b250YWxTY3JvbGxiYXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGlu
Z1N0YXRlTm9kZS5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXll
ckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU2Ny
b2xsYmFyTGF5ZXIoKSB9KSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpSb290
Q29udGVudHNMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSb290Q29udGVudHNM
YXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFJvb3RDb250ZW50
c0xheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxp
bmdTdGF0ZU5vZGUucm9vdENvbnRlbnRzTGF5ZXIoKSB9KSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzogewog
ICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUmIHNjcm9sbGlu
Z1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
PigqY3Vyck5vZGUpOwotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJM
YXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikp
CiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxh
eWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSB9KSk7CiAKLSAgICAgICAgICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQo
UGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXll
cigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU2Nyb2xs
YmFyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTY3JvbGxiYXJM
YXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFZlcnRpY2FsU2Ny
b2xsYmFyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNj
cm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkgfSkpOwogCi0gICAgICAg
ICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTY3JvbGxiYXJMYXllcikpCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihs
YXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVO
b2RlLmhvcml6b250YWxTY3JvbGxiYXJMYXllcigpIH0pKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHlJT1MubW0KaW5kZXggMThmNjdhZjlhNmYxNTViM2VhZWM1MzY4MmUwODNkMjA3
MWVmMjExYy4uNjJhZDk4NTA2OWUyMTIzYWRjMzZiYzc4MWM3NmY1OTc2MWI3ODQ2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlP
Uy5tbQpAQCAtNjksMTcgKzY5LDE3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0ZVRyZWUmCiAgICAgdXNp
bmcgUGxhdGZvcm1MYXllcklEID0gR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEOwogCiAg
ICAgZm9yIChhdXRvJiBjdXJyTm9kZSA6IHN0YXRlVHJlZS5ub2RlTWFwKCkudmFsdWVzKCkpIHsK
LSAgICAgICAgaWYgKGN1cnJOb2RlLT5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpMYXllcikpCisgICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKICAgICAgICAgICAgIGN1cnJOb2Rl
LT5zZXRMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgY3Vy
ck5vZGUtPmxheWVyKCkgfSkpOwogICAgICAgICAKICAgICAgICAgc3dpdGNoIChjdXJyTm9kZS0+
bm9kZVR5cGUoKSkgewogICAgICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzog
ewogICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUmIHNjcm9s
bGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlPigqY3Vyck5vZGUpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRh
aW5lckxheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxh
eWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFp
bmVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9s
bGluZ1N0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXllcigpIH0pKTsKIAotICAgICAgICAgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxp
bmdTdGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJG
b3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50
c0xheWVyKCkgfSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH07CkBAIC04NywyMCAr
ODcsMjAgQEAgdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3Rh
dGVOb2RlTGF5ZXJzKFNjcm9sbGluZ1N0YXRlVHJlZSYKICAgICAgICAgY2FzZSBTY3JvbGxpbmdO
b2RlVHlwZTo6U3ViZnJhbWU6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZT4oKmN1cnJOb2RlKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3Jv
bGxDb250YWluZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNl
dFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxh
eWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSB9KSk7CiAK
LSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXllcihsYXllclRy
ZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnNj
cm9sbGVkQ29udGVudHNMYXllcigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9k
ZS5zZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRm
b3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKSB9
KSk7CiAKICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgbmV2ZXIgaGF2ZSBoZWFkZXIg
YW5kIGZvb3RlciBsYXllcnMgY29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MuCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6SGVhZGVyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5z
ZXRIZWFkZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsg
c2Nyb2xsaW5nU3RhdGVOb2RlLmhlYWRlckxheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
Rm9vdGVyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRGb290
ZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xs
aW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCkgfSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQppbmRleCBmZmE2OTQ5YWFjODY5YzhkYjcxYTA3YzM0
MjdlMjg5MGFjODE1YmIyLi5lNTUzYTk0MDRiMTI3ODE4OGQ2NmQ5YzZkZmJhYjExYTY1MGU2OGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCkBAIC01NywxNiArNTcsMTYgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFMKICAgICAKICAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBk
b3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIAot
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQorICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIG1fY291bnRlclNjcm9s
bGluZ0xheWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5jb3Vu
dGVyU2Nyb2xsaW5nTGF5ZXIoKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5
ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckxheWVyKSkKICAgICAgICAgbV9oZWFkZXJM
YXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5
ZXIoKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkZvb3RlckxheWVyKSkKICAgICAgICAgbV9mb290ZXJMYXllciA9IHN0YXRpY19j
YXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAKLSAgICBp
ZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkgeworICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxh
eWVyKSkgewogICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKICAgICAgICAgICAg
IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlID0gbWFrZVVuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcyk7CiAgICAgICAgIGVsc2UKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRT
dGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2MKICAgICB9CiAKICAgICAvLyBVcGRhdGUgdGhlIHNj
cm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2RlcyBoYXZlIGJlZW4gdXBkYXRlZCwgYmVjYXVz
ZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNvbnN0cmFpbnRzIGJlZm9yZSBhbnkg
c2Nyb2xsaW5nIGhhcHBlbnMuCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3Np
dGlvbikpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsK
ICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNj
cm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwg
cmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4
IGQwYmRkM2M1N2RiYmNiZWYwNzBlODUxYWZlMDRlZWU2YWFiNTdkOTkuLmZjYWM5ZmRlYmIwOGQ5
YTEwOGZhMDUyMTI1N2Q1MDZkMjUwMmRlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTU4LDcgKzU4
LDcgQEAgVUlTY3JvbGxWaWV3KiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
OjpzY3JvbGxWaWV3KCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQogewotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5
ZXIpKQorICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGUtPnJlc2V0U2Nyb2xsVmlld0RlbGVnYXRlKCk7CiAKICAgICBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKHN0
YXRlTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KaW5kZXggODEwYWRjZDRlNTNmODhhMDc1NDAyM2U4OTgw
YTgwMWE3YzExZmZjYy4uNGMyODhlNGJhYzFiNWU0NTlkZWM3NGZiM2UzYjVjOGI1YmRjZDhmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6cmVzZXRTY3JvbGxWaWV3RGVsZWdhdGUoKQogCiB2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0
ZU5vZGUpCiB7Ci0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICBtX3Njcm9sbExh
eWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250
YWluZXJMYXllcigpKTsKIH0KIApAQCAtMjI5LDE0ICsyMjksMTQgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29u
c3QgU2Nyb2wKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0
aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRh
aW5lckxheWVyKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpCi0gICAg
ICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUpCi0gICAgICAgIHx8IHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbikp
IHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikKKyAgICAgICAgfHwg
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSkKKyAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFj
aGFibGVDb250ZW50c1NpemUpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24p
CisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luKSkgewogICAgICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAgICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0g
dGhpcy0+c2Nyb2xsVmlldygpOwotICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5l
ckxheWVyKSkgeworICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikp
IHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAgICAgICAgICAgICAg
ICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxpbmdOb2RlU2Nyb2xs
Vmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6dGhp
c10pOwogCkBAIC0yNDksMTMgKzI0OSwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCByZWNvbXB1dGVJbnNldHMgPSBz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpOwotICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSkpIHsKKyAgICAgICAgYm9vbCByZWNvbXB1dGVJbnNldHMgPSBzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlRvdGFsQ29udGVudHNTaXplKTsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hh
YmxlQ29udGVudHNTaXplKSkgewogICAgICAgICAgICAgc2Nyb2xsVmlldy5jb250ZW50U2l6ZSA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKICAgICAgICAgICAg
IHJlY29tcHV0ZUluc2V0cyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbE9yaWdpbikpCisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdpbikp
CiAgICAgICAgICAgICByZWNvbXB1dGVJbnNldHMgPSB0cnVlOwogCiAgICAgICAgIGlmIChyZWNv
bXB1dGVJbnNldHMpIHsKQEAgLTI3NCwxNCArMjc0LDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm9sCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIC8vIEZJWE1FOiBJZiBvbmx5
IG9uZSBheGlzIHNuYXBzIGluIDJEIHNjcm9sbGluZywgdGhlIG90aGVyIGF4aXMgd2lsbCBkZWNl
bGVyYXRlIGZhc3QgYXMgd2VsbC4gSXMgdGhpcyB3aGF0IHdlIHdhbnQ/Ci0gICAgaWYgKHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZz
ZXRzKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkgewogICAgICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKICAgICAgICAgc2Nyb2xsVmlldygpLmRlY2VsZXJhdGlvblJhdGUgPSBzY3Jv
bGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkuc2l6ZSgpIHx8IHNjcm9sbGluZ05v
ZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuc2l6ZSgpID8gVUlTY3JvbGxWaWV3RGVjZWxlcmF0
aW9uUmF0ZUZhc3QgOiBVSVNjcm9sbFZpZXdEZWNlbGVyYXRpb25SYXRlTm9ybWFsOwogICAgICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1zKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9s
bGFibGVBcmVhUGFyYW1zKSkgewogICAgICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
ICAgICAgICAgVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3ID0gdGhpcy0+c2Nyb2xsVmlldygpOwog
CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wKICAgICAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0KIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24pKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24pKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEgPSBz
Y3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAgICBzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVx
dWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5n
KTsKICAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnNldE5lZWRzQXBwbHlMYXllclBvc2l0aW9uc0Fm
dGVyQ29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCA0M2VkNzM1ZDQyMTIwMTMz
ZWViZmE5Zjc0MzE3ZjNhYmFmNjUwMjUyLi4yNmNjMGMyODc4Yjk2NDk4ZTU5ZDkzNTc2ZmI1YTA4
NTg3MmQ5ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTU1LDEwICs1NSwxMCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWM6OmNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4oY29uc3QgUwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9k
ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUp
OwogCiAgICAgLy8gRklYTUU6IFB1c2ggdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYz8KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTY3JvbGxiYXJMYXllcikp
CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTY3JvbGxiYXJMYXllcikpCiAgICAgICAgIG1f
c2Nyb2xsZXJQYWlyLT52ZXJ0aWNhbFNjcm9sbGVyKCkuc2V0SG9zdExheWVyKHN0YXRpY19jYXN0
PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTY3JvbGxiYXJMYXllcigpKSk7
CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkKKyAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICBtX3Nj
cm9sbGVyUGFpci0+aG9yaXpvbnRhbFNjcm9sbGVyKCkuc2V0SG9zdExheWVyKHN0YXRpY19jYXN0
PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKCkp
KTsKIAogICAgIG1fc2Nyb2xsZXJQYWlyLT51cGRhdGVWYWx1ZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVS
ZW1vdGVNYWMuY3BwCmluZGV4IDc0M2RhM2VlNjhiOTI2NzRlMDVkOTVkNzBlNWRlYzUyZGVkYzFj
NTQuLmI2M2RjMzg4OGU2ODlmMmYwODQ2Y2U4MWU3Njg4Mzk1YWE2OTI5MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcApAQCAtNTYsMTAgKzU2LDEwIEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zCiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKICAgICAvLyBG
SVhNRTogUHVzaCB0byBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjPwotICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKKyAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxlclBh
aXItPnZlcnRpY2FsU2Nyb2xsZXIoKS5zZXRIb3N0TGF5ZXIoc3RhdGljX2Nhc3Q8Q0FMYXllcio+
KHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkpKTsKIAotICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKQorICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6Okhvcml6b250YWxTY3JvbGxiYXJMYXllcikpCiAgICAgICAgIG1fc2Nyb2xsZXJQ
YWlyLT5ob3Jpem9udGFsU2Nyb2xsZXIoKS5zZXRIb3N0TGF5ZXIoc3RhdGljX2Nhc3Q8Q0FMYXll
cio+KHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoKSkpOwogCiAg
ICAgbV9zY3JvbGxlclBhaXItPnVwZGF0ZVZhbHVlcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412715</attachid>
            <date>2020-10-29 22:32:00 -0700</date>
            <delta_ts>2020-10-30 06:59:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218374-20201029223159.patch</filename>
            <type>text/plain</type>
            <size>157890</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI2OWI0YzJlYzgyOTE2
NzA1NGU2ZmMzMWVlN2I1NDU5ZDQ3NDRhMi4uMzdhZTc0ZjE4YTY2MDQzMzNlMjNjM2EwNDZhNTcw
NGZjNjVhNWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAyMC0xMC0yOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IFNj
cm9sbGluZ1RyZWVOb2RlIGNoYW5nZSBmbGFncyB0byBhbiBPcHRpb25TZXQ8PgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcmVzcyB0aGUgRklYTUUg
aW4gU2Nyb2xsaW5nU3RhdGVOb2RlLmggYW5kIHVzZSBhbiBPcHRpb25TZXQ8PiBmb3IgdGhlCisg
ICAgICAgIFNjcm9sbGluZ1N0YXRlIHRyZWUgY2hhbmdlIGZsYWdzLiBUaGlzIHJlcXVpcmVkIG1v
dmluZyB0aGVtIGFsbCBpbnRvCisgICAgICAgIHRoZSBzYW1lIGVudW0gY2xhc3MgaW4gU2Nyb2xs
aW5nU3RhdGVOb2RlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
aXhlZE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6
OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVGaXhlZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJS
ZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFByb3Bl
cnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEZyYW1lU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEV2ZW50VHJhY2tpbmdS
ZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldExheW91dFZpZXdwb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRN
aW5MYXlvdXRWaWV3cG9ydE9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldE92ZXJyaWRl
VmlzdWFsVmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0VG9wQ29udGVu
dEluc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpzZXRSb290Q29udGVudHNMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRJbnNldENs
aXBMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVyTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFZp
c3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNl
dFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbGluZ1N0YXRlTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVh
dHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omluc2VydENoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6cmVtb3ZlQ2hpbGRBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0TGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRz
QWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6Omhh
c0NoYW5nZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZTo6aGFzQ2hhbmdlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlTm9kZTo6cmVzZXRDaGFuZ2VkUHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OmNoYW5nZWRQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0Q2hhbmdlZFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3Bl
cnR5Q2hhbmdlZEJpdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZXNB
ZnRlclJlYXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU6OnNldE92ZXJmbG93U2Nyb2xsaW5nTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpzZXRQcm9wZXJ0eUNo
YW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2Vz
QWZ0ZXJSZWF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9u
ZWROb2RlOjpzZXRSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjp1cGRhdGVDb25zdHJhaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpzZXRQcm9wZXJ0
eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFBy
b3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxhYmxlQXJlYVNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRUb3RhbENvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGlj
YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xs
YWJsZUFyZWFQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UmVxdWVzdGVkU2Nyb2xsRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldElz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0Fm
dGVyUmVhdHRhY2gpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjp1cGRhdGVDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OnNldFByb3BlcnR5Q2hhbmdl
ZEJpdHNBZnRlclJlYXR0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVl
Ojpub2RlV2FzUmVhdHRhY2hlZFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpjb21t
aXRUcmVlU3RhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
aXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2Ev
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRTY3JvbGxlckltcHNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpjb21t
aXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYzo6dXBkYXRl
RnJvbVN0YXRlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlRml4ZWROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsUHJveHlOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisKIDIwMjAtMTAtMjkgIEFk
aXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUmVt
b3ZlIHNvZnQgbGlua2luZyBvZiBOZXR3b3JrRXh0ZW5zaW9uLmZyYW1ld29yawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3NjQ1M2Q4MWIzZmVkMzkzZTYwZmZkN2ZkNmU3NDc2YWI3MGI2Mjc2Li5iNTU1ZDBlZTA3ZWIx
NTRkOWY2MjRhZGNjZWMwZDYzYTBjYTkzNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisy
MDIwLTEwLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIENvbnZlcnQgU2Nyb2xsaW5nVHJlZU5vZGUgY2hhbmdlIGZsYWdzIHRvIGFuIE9wdGlvblNl
dDw+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgz
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRy
ZXNzIHRoZSBGSVhNRSBpbiBTY3JvbGxpbmdTdGF0ZU5vZGUuaCBhbmQgdXNlIGFuIE9wdGlvblNl
dDw+IGZvciB0aGUKKyAgICAgICAgU2Nyb2xsaW5nU3RhdGUgdHJlZSBjaGFuZ2UgZmxhZ3MuIFRo
aXMgcmVxdWlyZWQgbW92aW5nIHRoZW0gYWxsIGludG8KKyAgICAgICAgdGhlIHNhbWUgZW51bSBj
bGFzcyBpbiBTY3JvbGxpbmdTdGF0ZU5vZGUuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjplbmNvZGUpOgorICAgICAgICAo
QXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZU5vZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJn
dW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjplbmNvZGUpOgorICAgICAg
ICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT46OmVuY29k
ZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQ
cm94eU5vZGU+OjplbmNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUpOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT46OmRlY29kZSk6CisgICAgICAgIChBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+OjpkZWNvZGUpOgorICAg
ICAgICAoQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPjo6ZGVjb2RlKToK
KyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZW5jb2Rl
KToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPjo6ZGVj
b2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9k
ZT46OmVuY29kZSk6CisgICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlUG9zaXRp
b25lZE5vZGU+OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpkdW1wKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpj
b25uZWN0U3RhdGVOb2RlTGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5Ojpjb25uZWN0U3RhdGVOb2Rl
TGF5ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxk
cmVuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYzo6Y29tbWl0U3RhdGVCZWZvcmVD
aGlsZHJlbik6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM6OmNvbW1pdFN0
YXRlQmVmb3JlQ2hpbGRyZW4pOgorCiAyMDIwLTEwLTI5ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVy
dGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFJlbW92ZSBzb2Z0IGxpbmtpbmcgb2Yg
TmV0d29ya0V4dGVuc2lvbi5mcmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcAppbmRleCA5MDhkZDBj
MWI5ZDM0OWYyODZiMjMzNjIwOTNiNzkyMjY1ZWFkNjA1Li5mOGJiYjNmYTVkNDk1MmIyZGMxYjlj
ZjBmZjg3ZDEzYmY2YWI5MTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwCkBAIC01OCwxMCArNTgsMTAg
QEAgUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4gU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OmNsb25l
KFNjcm9sbGluZ1N0YXRlVHJlZSYgYWRvcHQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3Jv
bGxpbmdTdGF0ZUZpeGVkTm9kZSgqdGhpcywgYWRvcHRpdmVUcmVlKSk7CiB9CiAKLXZvaWQgU2Ny
b2xsaW5nU3RhdGVGaXhlZE5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNo
KCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVy
UmVhdHRhY2goKQogewotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChWaWV3cG9ydENvbnN0cmFp
bnRzKTsKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRl
clJlYXR0YWNoKCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OlZp
ZXdwb3J0Q29uc3RyYWludHMpOworICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVydHlD
aGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRml4ZWROb2Rl
Ojp1cGRhdGVDb25zdHJhaW50cyhjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
cyYgY29uc3RyYWludHMpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGaXhl
ZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRzKGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0
CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdTdGF0
ZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlQ29uc3RyYWludHMg
d2l0aCB2aWV3cG9ydCByZWN0ICIgPDwgY29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5
b3V0KCkgPDwgIiBsYXllciBwb3MgYXQgbGFzdCBsYXlvdXQgIiA8PCBjb25zdHJhaW50cy5sYXll
clBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoY29uc3Ry
YWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpLnkoKSAtIGNvbnN0cmFpbnRzLnZpZXdw
b3J0UmVjdEF0TGFzdExheW91dCgpLnkoKSkpOwogCiAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0
cmFpbnRzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChWaWV3cG9ydENvbnN0cmFpbnRzKTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpOwogfQog
CiB2b2lkIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpyZWNvbmNpbGVMYXllclBvc2l0aW9uRm9y
Vmlld3BvcnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCwgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaAppbmRleCA2ZGI3MjJiODIyNTkz
M2QzYjk3MDcyMzA1NDc5NjdmMzY2MDMzMDg0Li4zOTFkMjkyOWMwYzhhMDMzOTBhZWY4YmExZjI5
NjhmNjhhMTY3YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgflNjcm9sbGluZ1N0YXRlRml4ZWROb2RlKCk7CiAKLSAgICBlbnVtIHsK
LSAgICAgICAgVmlld3BvcnRDb25zdHJhaW50cyA9IE51bVN0YXRlTm9kZUJpdHMKLSAgICB9Owot
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDb25zdHJhaW50cyhjb25zdCBGaXhlZFBv
c2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYpOwogICAgIGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzJiB2aWV3cG9ydENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdHJhaW50czsgfQogCkBAIC01NSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5n
U3RhdGVGaXhlZE5vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKICAg
ICBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYs
IFNjcm9sbGluZ1N0YXRlVHJlZSYpOwogCi0gICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXRz
QWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0
ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZWNvbmNpbGVMYXllclBvc2l0aW9u
Rm9yVmlld3BvcnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlLmNwcAppbmRleCBhZmY0M2I1ZWRhMmJjMGI3OGMxNDI4YjE0ZTkzMTM5ZjQ4MDlhZGY0
Li5iMmYzNGFjN2ZkMzNjNjZhZWM1ZmE2OTZlZjYyZDBiYzY0Y2U1NWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCkBAIC02MCwyMiArNjAsMjIgQEAgU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKGNv
bnN0IFNjcm9sbGkKICAgICAsIG1fdmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmll
d3BvcnQoc3RhdGVOb2RlLnZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0
KCkpCiAgICAgLCBtX2FzeW5jRnJhbWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZChzdGF0ZU5v
ZGUuYXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKCkpCiB7Ci0gICAgaWYgKGhh
c0NoYW5nZWRQcm9wZXJ0eShSb290Q29udGVudHNMYXllcikpCisgICAgaWYgKGhhc0NoYW5nZWRQ
cm9wZXJ0eShQcm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIpKQogICAgICAgICBzZXRSb290Q29u
dGVudHNMYXllcihzdGF0ZU5vZGUucm9vdENvbnRlbnRzTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9u
KGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAotICAgIGlm
IChoYXNDaGFuZ2VkUHJvcGVydHkoQ291bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICBpZiAoaGFz
Q2hhbmdlZFByb3BlcnR5KFByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQogICAgICAg
ICBzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoc3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXll
cigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24oKSkpOwogCi0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShJbnNldENsaXBMYXllcikp
CisgICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIpKQog
ICAgICAgICBzZXRJbnNldENsaXBMYXllcihzdGF0ZU5vZGUuaW5zZXRDbGlwTGF5ZXIoKS50b1Jl
cHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkp
KTsKIAotICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoQ29udGVudFNoYWRvd0xheWVyKSkKKyAg
ICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFByb3BlcnR5OjpDb250ZW50U2hhZG93TGF5ZXIpKQog
ICAgICAgICBzZXRDb250ZW50U2hhZG93TGF5ZXIoc3RhdGVOb2RlLmNvbnRlbnRTaGFkb3dMYXll
cigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24oKSkpOwogCi0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShIZWFkZXJMYXllcikpCisg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6SGVhZGVyTGF5ZXIpKQogICAgICAg
ICBzZXRIZWFkZXJMYXllcihzdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9u
KGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKIAotICAgIGlm
IChoYXNDaGFuZ2VkUHJvcGVydHkoRm9vdGVyTGF5ZXIpKQorICAgIGlmIChoYXNDaGFuZ2VkUHJv
cGVydHkoUHJvcGVydHk6OkZvb3RlckxheWVyKSkKICAgICAgICAgc2V0Rm9vdGVyTGF5ZXIoc3Rh
dGVOb2RlLmZvb3RlckxheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVy
cmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiB9CiAKQEAgLTg2LDMwICs4NiwzMCBAQCBSZWY8
U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y2xv
bmUoU2Nyb2xsaW5nU3RhdGVUcgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlKCp0aGlzLCBhZG9wdGl2ZVRyZWUpKTsKIH0KIAotdm9pZCBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0Fm
dGVyUmVhdHRhY2goKQordm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2Vk
Qml0KEZyYW1lU2NhbGVGYWN0b3IpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChFdmVudFRy
YWNraW5nUmVnaW9uKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUm9vdENvbnRlbnRzTGF5
ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpOwotICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChJbnNldENsaXBMYXllcik7Ci0gICAgc2V0UHJvcGVydHlDaGFu
Z2VkQml0KENvbnRlbnRTaGFkb3dMYXllcik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEhl
YWRlckhlaWdodCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEZvb3RlckhlaWdodCk7Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEhlYWRlckxheWVyKTsKLSAgICBzZXRQcm9wZXJ0eUNo
YW5nZWRCaXQoRm9vdGVyTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChCZWhhdmlv
ckZvckZpeGVkRWxlbWVudHMpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChUb3BDb250ZW50
SW5zZXQpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChGaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoVmlzdWFsVmlld3BvcnRJ
c1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChB
c3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpOwotICAgIHNldFByb3BlcnR5Q2hh
bmdlZEJpdChMYXlvdXRWaWV3cG9ydCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KE1pbkxh
eW91dFZpZXdwb3J0T3JpZ2luKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoTWF4TGF5b3V0
Vmlld3BvcnRPcmlnaW4pOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChPdmVycmlkZVZpc3Vh
bFZpZXdwb3J0U2l6ZSk7Ci0KLSAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFBy
b3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2Vk
SW50ZXJuYWwoUHJvcGVydHk6OkZyYW1lU2NhbGVGYWN0b3IpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZEludGVybmFsKFByb3BlcnR5OjpFdmVudFRyYWNraW5nUmVnaW9uKTsKKyAgICBzZXRQcm9w
ZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIpOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIp
OworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpDb3VudGVyU2Nyb2xs
aW5nTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpJbnNl
dENsaXBMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkNv
bnRlbnRTaGFkb3dMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVy
dHk6OkhlYWRlckhlaWdodCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVy
dHk6OkZvb3RlckhlaWdodCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVy
dHk6OkhlYWRlckxheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0
eTo6Rm9vdGVyTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5
OjpCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVy
bmFsKFByb3BlcnR5OjpUb3BDb250ZW50SW5zZXQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZElu
dGVybmFsKFByb3BlcnR5OjpGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKTsKKyAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6VmlzdWFsVmlld3BvcnRJc1Nt
YWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFs
KFByb3BlcnR5OjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQpOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpMYXlvdXRWaWV3cG9ydCk7CisgICAg
c2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3Jp
Z2luKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6TWF4TGF5b3V0
Vmlld3BvcnRPcmlnaW4pOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5
OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSk7CisKKyAgICBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNldFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2goKTsKIH0KIAogdm9pZCBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0RnJhbWVTY2FsZUZhY3RvcihmbG9h
dCBzY2FsZUZhY3RvcikKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRGcmFtZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQog
CiAgICAgbV9mcmFtZVNjYWxlRmFjdG9yID0gc2NhbGVGYWN0b3I7CiAKLSAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoRnJhbWVTY2FsZUZhY3Rvcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3Bl
cnR5OjpGcmFtZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6c2V0RXZlbnRUcmFja2luZ1JlZ2lvbnMoY29uc3QgRXZlbnRUcmFja2luZ1Jl
Z2lvbnMmIGV2ZW50VHJhY2tpbmdSZWdpb25zKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zKGNv
bnN0IEV2ZW50VHJhY2tpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZXZlbnRUcmFja2luZ1Jl
Z2lvbnMgPSBldmVudFRyYWNraW5nUmVnaW9uczsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRXZl
bnRUcmFja2luZ1JlZ2lvbik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpFdmVu
dFRyYWNraW5nUmVnaW9uKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6c2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKFNjcm9sbEJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cyBiZWhhdmlvckZvckZpeGVkKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbEJlaGF2aW9yRm9yRml4
ZWRFbGVtZW50cyhTY3JvbGxCCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYmVoYXZpb3JGb3JG
aXhlZCA9IGJlaGF2aW9yRm9yRml4ZWQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEJlaGF2aW9y
Rm9yRml4ZWRFbGVtZW50cyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpCZWhh
dmlvckZvckZpeGVkRWxlbWVudHMpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpzZXRMYXlvdXRWaWV3cG9ydChjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0xNDYs
NyArMTQ2LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0TGF5
b3V0Vmlld3BvcnQoY29uc3QgRmxvYXRSZWN0JiByKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2xheW91dFZpZXdwb3J0ID0gcjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoTGF5b3V0Vmlld3Bv
cnQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRNaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbihjb25zdCBGbG9hdFBvaW50JiBwKQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZv
aWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldE1pbkxheW91dFZpZXdwb3J0
T3JpZ2luKGNvbnN0IEZsb2F0UG9pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbWluTGF5b3V0
Vmlld3BvcnRPcmlnaW4gPSBwOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChNaW5MYXlvdXRWaWV3
cG9ydE9yaWdpbik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpNaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OnNldE1heExheW91dFZpZXdwb3J0T3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmIHApCkBAIC0x
NjQsNyArMTY0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0
TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4oY29uc3QgRmxvYXRQb2kKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9tYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiA9IHA7Ci0gICAgc2V0UHJvcGVydHlDaGFu
Z2VkKE1heExheW91dFZpZXdwb3J0T3JpZ2luKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6Ok1heExheW91dFZpZXdwb3J0T3JpZ2luKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoT3B0aW9u
YWw8RmxvYXRTaXplPiB2aWV3cG9ydFNpemUpCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUoT3B0aW9uYWw8RmwKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vdmVycmlkZVZpc3VhbFZp
ZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoT3ZlcnJp
ZGVWaXN1YWxWaWV3cG9ydFNpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6
T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpzZXRIZWFkZXJIZWlnaHQoaW50IGhlYWRlckhlaWdodCkKQEAgLTE4
Miw3ICsxODIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRI
ZWFkZXJIZWlnaHQoaW50IGhlYWRlckhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9o
ZWFkZXJIZWlnaHQgPSBoZWFkZXJIZWlnaHQ7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhlYWRl
ckhlaWdodCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIZWFkZXJIZWlnaHQp
OwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGb290ZXJI
ZWlnaHQoaW50IGZvb3RlckhlaWdodCkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGb290ZXJIZWlnaHQoaW50IGZvb3RlckhlaWdo
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb290ZXJIZWlnaHQgPSBmb290ZXJIZWlnaHQ7
Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEZvb3RlckhlaWdodCk7CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkKFByb3BlcnR5OjpGb290ZXJIZWlnaHQpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgdG9wQ29udGVudElu
c2V0KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCB0b3BDb250ZW50SW5zZXQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fdG9wQ29udGVudEluc2V0ID0gdG9wQ29udGVudEluc2V0OwotICAg
IHNldFByb3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChQcm9wZXJ0eTo6VG9wQ29udGVudEluc2V0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Um9vdENvbnRlbnRzTGF5ZXIoY29uc3QgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lk
IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRSb290Q29udGVudHNMYXllcihj
b25zdCBMYXllclJlcHJlc2VudAogICAgICAgICByZXR1cm47CiAKICAgICBtX3Jvb3RDb250ZW50
c0xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUm9v
dENvbnRlbnRzTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Um9vdENv
bnRlbnRzTGF5ZXIpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5
ZXJSZXByZXNlbnRhdGlvbikKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIg
PSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChDb3VudGVyU2Ny
b2xsaW5nTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q291bnRlclNj
cm9sbGluZ0xheWVyKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6c2V0SW5zZXRDbGlwTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXBy
ZXNlbnRhdGlvbikKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpzZXRJbnNldENsaXBMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9pbnNldENsaXBMYXllciA9IGxheWVyUmVwcmVz
ZW50YXRpb247Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEluc2V0Q2xpcExheWVyKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6Okluc2V0Q2xpcExheWVyKTsKIH0KIAogdm9pZCBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVudFNoYWRvd0xheWVyKGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0yMzYsNyAr
MjM2LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Q29udGVu
dFNoYWRvd0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW4KICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWQoQ29udGVudFNoYWRvd0xheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5n
ZWQoUHJvcGVydHk6OkNvbnRlbnRTaGFkb3dMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEhlYWRlckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50
YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0yNDUsNyArMjQ1LDcgQEAgdm9pZCBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0SGVhZGVyTGF5ZXIoY29uc3QgTGF5ZXJS
ZXByZXNlbnRhdGlvbiYKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1faGVhZGVyTGF5ZXIg
PSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChIZWFkZXJMYXll
cik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIZWFkZXJMYXllcik7CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckxheWVyKGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24pCkBAIC0yNTQsNyAr
MjU0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Rm9vdGVy
TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIG1fZm9vdGVyTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZChGb290ZXJMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpG
b290ZXJMYXllcik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6
OnNldFZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0KGJvb2wgdmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpCkBAIC0yNjMsNyArMjYzLDcgQEAg
dm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0VmlzdWFsVmlld3BvcnRJ
c1NtYWxsZXJUaGFuTGF5b3V0Vmlld3AKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1fdmlz
dWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQgPSB2aXN1YWxWaWV3cG9ydElz
U21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydDsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmlzdWFs
Vmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZChQcm9wZXJ0eTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQp
OwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVs
ZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGJvb2wgZml4ZWRFbGVtZW50c0xheW91dFJlbGF0
aXZlVG9GcmFtZSkKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGJvbwog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9maXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVU
b0ZyYW1lID0gZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZTsKLSAgICBzZXRQcm9w
ZXJ0eUNoYW5nZWQoRml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSk7CisgICAgc2V0
UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0Zy
YW1lKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0QXN5
bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTI4MSw3
ICsyODEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRBc3lu
Y0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQoYgogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgbV9hc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQgPSBlbmFibGVkOwot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZChBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJs
ZWQpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6QXN5bmNGcmFtZU9yT3ZlcmZs
b3dTY3JvbGxpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggMTA5OGYyOTUwMWEwZTI5NWY4MGNkMjFlOGM3N2I0NDdiNTk0ZmM1YS4uOWZk
Zjg4ZGYzNzQ2NzY3MjBhZjZhZjllYjU0ZDZmYzRiZmNiYzI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZS5oCkBAIC00NSwyOSArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSgpOwogCi0gICAgZW51bSBDaGFuZ2Vk
UHJvcGVydHkgewotICAgICAgICBGcmFtZVNjYWxlRmFjdG9yID0gTnVtU2Nyb2xsaW5nU3RhdGVO
b2RlQml0cywKLSAgICAgICAgRXZlbnRUcmFja2luZ1JlZ2lvbiwKLSAgICAgICAgUm9vdENvbnRl
bnRzTGF5ZXIsCi0gICAgICAgIFNjcm9sbGVkQ29udGVudHNMYXllciwKLSAgICAgICAgQ291bnRl
clNjcm9sbGluZ0xheWVyLAotICAgICAgICBJbnNldENsaXBMYXllciwKLSAgICAgICAgQ29udGVu
dFNoYWRvd0xheWVyLAotICAgICAgICBIZWFkZXJIZWlnaHQsCi0gICAgICAgIEZvb3RlckhlaWdo
dCwKLSAgICAgICAgSGVhZGVyTGF5ZXIsCi0gICAgICAgIEZvb3RlckxheWVyLAotICAgICAgICBC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMsCi0gICAgICAgIFRvcENvbnRlbnRJbnNldCwKLSAgICAg
ICAgRml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSwKLSAgICAgICAgVmlzdWFsVmll
d3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQsCi0gICAgICAgIEFzeW5jRnJhbWVPck92
ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCwKLSAgICAgICAgTGF5b3V0Vmlld3BvcnQsCi0gICAgICAg
IE1pbkxheW91dFZpZXdwb3J0T3JpZ2luLAotICAgICAgICBNYXhMYXlvdXRWaWV3cG9ydE9yaWdp
biwKLSAgICAgICAgT3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUsCi0gICAgfTsKLQogICAgIGZs
b2F0IGZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lU2NhbGVGYWN0b3I7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEZyYW1lU2NhbGVGYWN0b3IoZmxvYXQpOwog
CkBAIC0xNDAsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xs
aW5nTm9kZUlEKTsKICAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShjb25zdCBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYpOwog
Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRlOwog
CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX3Jvb3RDb250ZW50c0xheWVyOwogICAgIExheWVy
UmVwcmVzZW50YXRpb24gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAppbmRleCBiZTU3
YzliODY5ZDBjYzUyMzg2YjAwNDZhNTA3ZDM0Yzg0MGM4MTY1Li4xM2EyYmY0NTI3OTg2MGM2NDM2
OTk1YzkwNDVjOGUyZDk0NjNkNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgU2Nyb2xs
aW5nU3RhdGVOb2RlOjpTY3JvbGxpbmdTdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
JiBzdGF0ZU5vZGUsIFNjcm8KICAgICAsIG1fY2hhbmdlZFByb3BlcnRpZXMoc3RhdGVOb2RlLmNo
YW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZShhZG9wdGl2ZVRy
ZWUpCiB7Ci0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShMYXllcikpCisgICAgaWYgKGhhc0No
YW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6TGF5ZXIpKQogICAgICAgICBzZXRMYXllcihzdGF0ZU5v
ZGUubGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVmZXJyZWRMYXllclJl
cHJlc2VudGF0aW9uKCkpKTsKIAogICAgIHNjcm9sbGluZ1N0YXRlVHJlZSgpLmFkZE5vZGUoKnRo
aXMpOwpAQCAtNTksMTkgKzU5LDE5IEBAIFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsaW5nU3Rh
dGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlLCBTY3JvCiAKIFNjcm9s
bGluZ1N0YXRlTm9kZTo6flNjcm9sbGluZ1N0YXRlTm9kZSgpID0gZGVmYXVsdDsKIAotdm9pZCBT
Y3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZCh1bnNpZ25lZCBwcm9wZXJ0eUJp
dCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHkg
cHJvcGVydHkpCiB7Ci0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShwcm9wZXJ0eUJpdCkpCisg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShwcm9wZXJ0eSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChwcm9wZXJ0eUJpdCk7CisgICAgc2V0UHJvcGVydHlD
aGFuZ2VkSW50ZXJuYWwocHJvcGVydHkpOwogICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLnNldEhh
c0NoYW5nZWRQcm9wZXJ0aWVzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQ
cm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpCit2b2lkIFNjcm9sbGluZ1N0YXRlTm9k
ZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlD
aGFuZ2VkQml0KExheWVyKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoQ2hpbGROb2Rlcyk7
CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OkxheWVyKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7CiAgICAgbV9z
Y3JvbGxpbmdTdGF0ZVRyZWUuc2V0SGFzQ2hhbmdlZFByb3BlcnRpZXMoKTsKIH0KIApAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjphcHBlbmRDaGlsZChSZWY8U2Ny
b2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSkKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIG1fY2hpbGRyZW4gPSBtYWtlVW5pcXVlPFZlY3RvcjxSZWZQdHI8U2Nyb2xsaW5nU3RhdGVO
b2RlPj4+KCk7CiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKFdURk1vdmUoY2hpbGROb2RlKSk7Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKENoaWxkTm9kZXMpOworICAgIHNldFByb3BlcnR5Q2hhbmdl
ZChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpp
bnNlcnRDaGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90IGlu
ZGV4KQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjppbnNlcnRD
aGlsZChSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiYmIGNoaWxkTm9kZSwgc2l6ZV90CiAgICAgfSBl
bHNlCiAgICAgICAgIG1fY2hpbGRyZW4tPmluc2VydChpbmRleCwgV1RGTW92ZShjaGlsZE5vZGUp
KTsKICAgICAKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGROb2Rlcyk7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpDaGlsZE5vZGVzKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdT
dGF0ZU5vZGU6OnJlbW92ZUZyb21QYXJlbnQoKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVOb2RlOjpyZW1vdmVDaGlsZEF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIEFT
U0VSVChtX2NoaWxkcmVuICYmIGluZGV4IDwgbV9jaGlsZHJlbi0+c2l6ZSgpKTsKICAgICBpZiAo
bV9jaGlsZHJlbiAmJiBpbmRleCA8IG1fY2hpbGRyZW4tPnNpemUoKSkgewogICAgICAgICBtX2No
aWxkcmVuLT5yZW1vdmUoaW5kZXgpOwotICAgICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoQ2hpbGRO
b2Rlcyk7CisgICAgICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6Q2hpbGROb2Rlcyk7
CiAgICAgfQogfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6
OnNldExheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyUmVwcmVzZW50YXRpb24K
ICAgICAKICAgICBtX2xheWVyID0gbGF5ZXJSZXByZXNlbnRhdGlvbjsKIAotICAgIHNldFByb3Bl
cnR5Q2hhbmdlZChMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpMYXll
cik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3Ry
ZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5oCmluZGV4IGYxZmEzYmQwYTkxODAyODA0ZTUxZDAxNjFmMDJhOWI3MTZiNGVmZjEuLjBhOTc0
MzE0YmVkOTczYmQ2ZDFmYzRjZTIzMzI3Y2EzYjgyMzhlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCkBAIC0yMTcsMjIgKzIx
Nyw2OSBAQCBwdWJsaWM6CiAgICAgUmVmPFNjcm9sbGluZ1N0YXRlTm9kZT4gY2xvbmVBbmRSZXNl
dChTY3JvbGxpbmdTdGF0ZVRyZWUmIGFkb3B0aXZlVHJlZSk7CiAgICAgdm9pZCBjbG9uZUFuZFJl
c2V0Q2hpbGRyZW4oU2Nyb2xsaW5nU3RhdGVOb2RlJiwgU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9w
dGl2ZVRyZWUpOwogCi0gICAgLy8gRklYTUU6IHVzaW5nIGFuIE9wdGlvblNldDw+IGZvciB0aGVz
ZSBhbmQgZGVyaXZlZCBjbGFzcyBiaXRzIHdvdWxkIHNpbXBsaWZ5IGNvZGUuCi0gICAgZW51bSB7
Ci0gICAgICAgIExheWVyID0gMCwKLSAgICAgICAgQ2hpbGROb2RlcywKLSAgICAgICAgTnVtU3Rh
dGVOb2RlQml0cyAvLyBUaGlzIG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0aW9uLgorICAg
IGVudW0gY2xhc3MgUHJvcGVydHkgOiB1aW50NjRfdCB7CisgICAgICAgIC8vIFNjcm9sbGluZ1N0
YXRlTm9kZQorICAgICAgICBMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMUxMVSA8PCAwLAorICAgICAgICBDaGlsZE5vZGVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxLAorICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUKKyAgICAgICAgU2Nyb2xsYWJsZUFyZWFTaXplICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDFMTFUgPDwgMiwKKyAgICAgICAgVG90YWxDb250ZW50c1NpemUgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgMywKKyAgICAgICAgUmVhY2hhYmxlQ29udGVudHNTaXpl
ICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNCwKKyAgICAgICAgU2Nyb2xsUG9zaXRp
b24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNSwKKyAgICAgICAgU2Ny
b2xsT3JpZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNiwKKyAg
ICAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgNywKKyAgICAgICAgUmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nICAgICAgICAgICAg
ICA9IDFMTFUgPDwgOCwKKyAgICAgICAgUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24gICAgICAgICAg
ICAgICAgICAgICA9IDFMTFUgPDwgOSwKKyAgICAgICAgSG9yaXpvbnRhbFNuYXBPZmZzZXRzICAg
ICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTAsCisgICAgICAgIFZlcnRpY2FsU25hcE9m
ZnNldHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDExLAorICAgICAgICBIb3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcyAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxMiwKKyAg
ICAgICAgVmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMTMsCisgICAgICAgIEN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4ICAgICAgICAg
ICAgPSAxTExVIDw8IDE0LAorICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgg
ICAgICAgICAgICAgID0gMUxMVSA8PCAxNSwKKyAgICAgICAgSXNNb25pdG9yaW5nV2hlZWxFdmVu
dHMgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMTYsCisgICAgICAgIFNjcm9sbENvbnRh
aW5lckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDE3LAorICAgICAgICBT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAxOCwK
KyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbGJhckxheWVyICAgICAgICAgICAgICAgICAgICA9IDFM
TFUgPDwgMTksCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgICAgICAgICAgICAgICAg
ICAgICAgPSAxTExVIDw8IDIwLAorICAgICAgICBQYWludGVyRm9yU2Nyb2xsYmFyICAgICAgICAg
ICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyMSwKKyAgICAgICAgLy8gU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUKKyAgICAgICAgRnJhbWVTY2FsZUZhY3RvciAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDFMTFUgPDwgMjIsCisgICAgICAgIEV2ZW50VHJhY2tpbmdSZWdpb24g
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDIzLAorICAgICAgICBSb290Q29udGVu
dHNMYXllciAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAyNCwKKyAgICAgICAg
Q291bnRlclNjcm9sbGluZ0xheWVyICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjUs
CisgICAgICAgIEluc2V0Q2xpcExheWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAx
TExVIDw8IDI2LAorICAgICAgICBDb250ZW50U2hhZG93TGF5ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMUxMVSA8PCAyNywKKyAgICAgICAgSGVhZGVySGVpZ2h0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgMjgsCisgICAgICAgIEZvb3RlckhlaWdodCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDI5LAorICAgICAgICBIZWFkZXJM
YXllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMUxMVSA8PCAzMCwKKyAgICAg
ICAgRm9vdGVyTGF5ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwg
MzEsCisgICAgICAgIEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyAgICAgICAgICAgICAgICAgICAg
PSAxTExVIDw8IDMyLAorICAgICAgICBUb3BDb250ZW50SW5zZXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMUxMVSA8PCAzMywKKyAgICAgICAgRml4ZWRFbGVtZW50c0xheW91dFJlbGF0
aXZlVG9GcmFtZSAgICAgICAgICA9IDFMTFUgPDwgMzQsCisgICAgICAgIFZpc3VhbFZpZXdwb3J0
SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0ICAgPSAxTExVIDw8IDM1LAorICAgICAgICBBc3lu
Y0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGluZ0VuYWJsZWQgICAgICAgID0gMUxMVSA8PCAzNiwKKyAg
ICAgICAgTGF5b3V0Vmlld3BvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDFMTFUg
PDwgMzcsCisgICAgICAgIE1pbkxheW91dFZpZXdwb3J0T3JpZ2luICAgICAgICAgICAgICAgICAg
ICAgPSAxTExVIDw8IDM4LAorICAgICAgICBNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiAgICAgICAg
ICAgICAgICAgICAgID0gMUxMVSA8PCAzOSwKKyAgICAgICAgT3ZlcnJpZGVWaXN1YWxWaWV3cG9y
dFNpemUgICAgICAgICAgICAgICAgICA9IDFMTFUgPDwgNDAsCisgICAgICAgIC8vIFNjcm9sbGlu
Z1N0YXRlUG9zaXRpb25lZE5vZGUKKyAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9k
ZXMgICAgICAgICAgICAgICA9IDFMTFUgPDwgNDEsCisgICAgICAgIExheW91dENvbnN0cmFpbnRE
YXRhICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQyLAorICAgICAgICAvLyBTY3Jv
bGxpbmdTdGF0ZUZpeGVkTm9kZSwgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlCisgICAgICAgIFZp
ZXdwb3J0Q29uc3RyYWludHMgICAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQzLAor
ICAgICAgICAvLyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlCisgICAgICAg
IE92ZXJmbG93U2Nyb2xsaW5nTm9kZSAgICAgICAgICAgICAgICAgICAgICAgPSAxTExVIDw8IDQ0
LAogICAgIH07Ci0gICAgdHlwZWRlZiB1aW50NjRfdCBDaGFuZ2VkUHJvcGVydGllczsKKyAgICAK
KyAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fY2hhbmdl
ZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydHkoUHJv
cGVydHkgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZFByb3BlcnRpZXMuY29udGFp
bnMocHJvcGVydHkpOyB9CisgICAgdm9pZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkgeyBtX2No
YW5nZWRQcm9wZXJ0aWVzID0geyB9OyB9CisgICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHkpOwogCi0gICAgYm9vbCBoYXNDaGFuZ2VkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2hhbmdlZFByb3BlcnRpZXM7IH0KLSAgICBib29sIGhhc0NoYW5nZWRQcm9wZXJ0eSh1bnNp
Z25lZCBwcm9wZXJ0eUJpdCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllcyAmIChz
dGF0aWNfY2FzdDxDaGFuZ2VkUHJvcGVydGllcz4oMSkgPDwgcHJvcGVydHlCaXQpOyB9Ci0gICAg
dm9pZCByZXNldENoYW5nZWRQcm9wZXJ0aWVzKCkgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0gMDsg
fQotICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VkKHVuc2lnbmVkIHByb3BlcnR5Qml0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRhY2goKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogCi0gICAg
Q2hhbmdlZFByb3BlcnRpZXMgY2hhbmdlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2No
YW5nZWRQcm9wZXJ0aWVzOyB9Ci0gICAgdm9pZCBzZXRDaGFuZ2VkUHJvcGVydGllcyhDaGFuZ2Vk
UHJvcGVydGllcyBjaGFuZ2VkUHJvcGVydGllcykgeyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0gY2hh
bmdlZFByb3BlcnRpZXM7IH0KKyAgICBPcHRpb25TZXQ8UHJvcGVydHk+IGNoYW5nZWRQcm9wZXJ0
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkUHJvcGVydGllczsgfQorICAgIHZvaWQgc2V0
Q2hhbmdlZFByb3BlcnRpZXMoT3B0aW9uU2V0PFByb3BlcnR5PiBjaGFuZ2VkUHJvcGVydGllcykg
eyBtX2NoYW5nZWRQcm9wZXJ0aWVzID0gY2hhbmdlZFByb3BlcnRpZXM7IH0KICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgcmVjb25jaWxlTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBM
YXlvdXRSZWN0JiAvKnZpZXdwb3J0UmVjdCovLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
KSB7IH0KIApAQCAtMjY2LDE2ICszMTMsMTYgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbGluZ1N0
YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsK
ICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ1N0YXRl
VHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRp
ZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNv
bnN0OworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHkgcHJvcGVy
dHkpIHsgbV9jaGFuZ2VkUHJvcGVydGllcy5hZGQocHJvcGVydHkpOyB9CiAKLSAgICBpbmxpbmUg
dm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQodW5zaWduZWQgcHJvcGVydHlCaXQpOworICAgIHZp
cnR1YWwgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkdW1wKFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdDsK
IAogICAgIGNvbnN0IFNjcm9sbGluZ05vZGVUeXBlIG1fbm9kZVR5cGU7CiAgICAgY29uc3QgU2Ny
b2xsaW5nTm9kZUlEIG1fbm9kZUlEOwotICAgIENoYW5nZWRQcm9wZXJ0aWVzIG1fY2hhbmdlZFBy
b3BlcnRpZXMgeyAwIH07CisgICAgT3B0aW9uU2V0PFByb3BlcnR5PiBtX2NoYW5nZWRQcm9wZXJ0
aWVzOwogCiAgICAgU2Nyb2xsaW5nU3RhdGVUcmVlJiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsKIApA
QCAtMjg1LDExICszMzIsNiBAQCBwcml2YXRlOgogICAgIExheWVyUmVwcmVzZW50YXRpb24gbV9s
YXllcjsKIH07CiAKLXZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQodW5zaWduZWQgcHJvcGVydHlCaXQpCi17Ci0gICAgbV9jaGFuZ2VkUHJvcGVydGllcyB8PSAo
c3RhdGljX2Nhc3Q8Q2hhbmdlZFByb3BlcnRpZXM+KDEpIDw8IHByb3BlcnR5Qml0KTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
U0NST0xMSU5HX1NUQVRFX05PREUoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxQcm94eU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKaW5kZXggOWNkYmQzNmRkNWVl
YmNmNmFiM2FmYTBiMzBhYmM1Yzc1MDBkYmM0Yi4uMTkyOWEyZDc2MDhiODgzYjgwNTk5YmNjZjk3
NzM2ODc5ZWI4ZmRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9k
ZS5jcHAKQEAgLTU3LDExICs1NywxMSBAQCBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpjbG9uZShTY3JvbGxpbmdTdAogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUo
KnRoaXMsIGFkb3B0aXZlVHJlZSkpOwogfQogCi12b2lkIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxQcm94eU5vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCkKK3Zv
aWQgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6c2V0UHJvcGVydHlDaGFu
Z2VzQWZ0ZXJSZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KE92ZXJmbG93
U2Nyb2xsaW5nTm9kZSk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6
Ok92ZXJmbG93U2Nyb2xsaW5nTm9kZSk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFBy
b3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCk7CisgICAgU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpzZXRQcm9wZXJ0eUNoYW5nZXNBZnRlclJlYXR0YWNoKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
U3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6c2V0T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNj
cm9sbGluZ05vZGVJRCBub2RlSUQpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6c2V0T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKFNjcm9s
bGluZ05vCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX292ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlEID0gbm9kZUlEOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChPdmVyZmxvd1Njcm9sbGluZ05v
ZGUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6T3ZlcmZsb3dTY3JvbGxpbmdO
b2RlKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpk
dW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVo
YXZpb3IgYmVoYXZpb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlO
b2RlLmgKaW5kZXggYmU5ZDllOWU4MDAwYTIyYmQwNTc5NDZmN2Y2MTM0MWNiNWY0MWEzNS4uNzdm
Y2UzYzc4NzliNTFkMmNjYWYxMDNiMzVlYzdkOTQyNjY5MGE3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaApAQCAtMzksMTAgKzM5LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZSgpOwogCi0g
ICAgZW51bSB7Ci0gICAgICAgIE92ZXJmbG93U2Nyb2xsaW5nTm9kZSA9IE51bVN0YXRlTm9kZUJp
dHMKLSAgICB9OwotCiAgICAgLy8gVGhpcyBpcyB0aGUgbm9kZSB3ZSBnZXQgb3VyIHNjcm9sbCBw
b3NpdGlvbiBmcm9tLgogICAgIFNjcm9sbGluZ05vZGVJRCBvdmVyZmxvd1Njcm9sbGluZ05vZGUo
KSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93U2Nyb2xsaW5nTm9kZUlEOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEKTsK
QEAgLTUzLDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsUHJveHlOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAgICAg
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZShjb25zdCBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlJiwgU2Nyb2xsaW5nU3RhdGVUcmVlJik7CiAKLSAgICB2
b2lkIHNldFByb3BlcnR5Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRQcm9wZXJ0eUNoYW5nZXNBZnRlclJlYXR0YWNoKCkgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgU2Nyb2xsaW5nTm9kZUlEIG1fb3ZlcmZsb3dTY3JvbGxpbmdOb2RlSUQgeyAwIH07CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVQ
b3NpdGlvbmVkTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNwcAppbmRleCBlZDRiOWRkZmMxNzQ3NTYxYmU2OGEwM2Zl
MzM0NDFmNjZhNTQzNjRjLi5kY2Q1OGE5OTg3MDg0MTI4NzdhYzE3NWM0Y2ViZWZkZDA2MWVjODNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVBvc2l0aW9uZWROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmNwcApAQCAtNTksMTEgKzU5LDExIEBAIFJlZjxT
Y3JvbGxpbmdTdGF0ZU5vZGU+IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OmNsb25lKFNj
cm9sbGluZ1N0YXRlVHJlZSYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdTdGF0
ZVBvc2l0aW9uZWROb2RlKCp0aGlzLCBhZG9wdGl2ZVRyZWUpKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFj
aCgpCit2b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OnNldFByb3BlcnR5Q2hhbmdl
c0FmdGVyUmVhdHRhY2goKQogewotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWxhdGVkT3Zl
cmZsb3dTY3JvbGxpbmdOb2Rlcyk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KExheW91dENv
bnN0cmFpbnREYXRhKTsKLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5Q2hhbmdl
ZEJpdHNBZnRlclJlYXR0YWNoKCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJv
cGVydHk6OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKTsKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6TGF5b3V0Q29uc3RyYWludERhdGEpOworICAgIFNjcm9s
bGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogfQogCiB2
b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OnNldFJlbGF0ZWRPdmVyZmxvd1Njcm9s
bGluZ05vZGVzKFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+JiYgbm9kZXMpCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6c2V0UmVsYXRlZE92ZXJmbG93
U2Nyb2xsaW5nTm9kZXMoVmVjdG9yPFNjcm9sCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVs
YXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgPSBXVEZNb3ZlKG5vZGVzKTsKLSAgICBzZXRQcm9w
ZXJ0eUNoYW5nZWQoUmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpOworICAgIHNldFByb3Bl
cnR5Q2hhbmdlZChQcm9wZXJ0eTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpOwogfQog
CiB2b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OnVwZGF0ZUNvbnN0cmFpbnRzKGNv
bnN0IEFic29sdXRlUG9zaXRpb25Db25zdHJhaW50cyYgY29uc3RyYWludHMpCkBAIC04Myw3ICs4
Myw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6dXBkYXRlQ29uc3RyYWlu
dHMoY29uc3QgQWJzb2x1dGVQb3NpdGlvbkNvbnN0CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlICIgPDwgc2Nyb2xs
aW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVDb25zdHJhaW50cyAiIDw8IGNvbnN0cmFpbnRzKTsKIAog
ICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQo
TGF5b3V0Q29uc3RyYWludERhdGEpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6
TGF5b3V0Q29uc3RyYWludERhdGEpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25l
ZE5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaAppbmRl
eCBhYzQyYWNkNWVjY2Q3ZjI1Y2M0MDcyMThkOTFmZjdlZmVkMDUyNjM2Li4zOGU0YjM4ZWEzODdl
ODQ1MTdhZmQ3ZWRmOGI1ZWRiZjA2ZThjMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oCkBA
IC00NSwxMSArNDUsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlKCk7CiAKLSAgICBlbnVtIHsKLSAgICAgICAgUmVsYXRlZE92ZXJmbG93U2Ny
b2xsaW5nTm9kZXMgPSBOdW1TdGF0ZU5vZGVCaXRzLAotICAgICAgICBMYXlvdXRDb25zdHJhaW50
RGF0YSwKLSAgICB9OwotCiAgICAgLy8gVGhlc2UgYXJlIHRoZSBvdmVyZmxvdyBzY3JvbGxpbmcg
bm9kZXMgd2hvc2Ugc2Nyb2xsIHBvc2l0aW9uIGFmZmVjdHMgdGhlIGxheWVycyBpbiB0aGlzIG5v
ZGUuCiAgICAgY29uc3QgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4mIHJlbGF0ZWRPdmVyZmxvd1Nj
cm9sbGluZ05vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlczsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVsYXRlZE92ZXJmbG93U2Nyb2xs
aW5nTm9kZXMoVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4mJik7CkBAIC02MSw3ICs1Niw3IEBAIHBy
aXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZShTY3JvbGxpbmdTdGF0ZVRy
ZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwogICAgIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUo
Y29uc3QgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJlZSYp
OwogCi0gICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUuY3BwCmluZGV4IDI1ZmQ1MmM1YjViYTYxOWQ1Yjk0NTgwNDY0YTU3ODc3MTdkMWNhMzEu
Ljk0ZjA2N2Q2MWJkZDJmZjcwZjFhOTAzZGQ3OTcxY2QwZWJlNDY1NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmNwcApAQCAtNjIsMTYgKzYyLDE2IEBAIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Ny
CiB7CiAgICAgc2Nyb2xsaW5nU3RhdGVUcmVlKCkuc2Nyb2xsaW5nTm9kZUFkZGVkKCk7CiAKLSAg
ICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICBpZiAo
aGFzQ2hhbmdlZFByb3BlcnR5KFByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpCiAgICAg
ICAgIHNldFNjcm9sbENvbnRhaW5lckxheWVyKHN0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXll
cigpLnRvUmVwcmVzZW50YXRpb24oYWRvcHRpdmVUcmVlLnByZWZlcnJlZExheWVyUmVwcmVzZW50
YXRpb24oKSkpOwogCi0gICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpKQorICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHkoUHJvcGVydHk6OlNjcm9sbGVkQ29u
dGVudHNMYXllcikpCiAgICAgICAgIHNldFNjcm9sbGVkQ29udGVudHNMYXllcihzdGF0ZU5vZGUu
c2Nyb2xsZWRDb250ZW50c0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJl
ZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAKLSAgICBpZiAoaGFzQ2hhbmdlZFByb3Bl
cnR5KFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpKQorICAgIGlmIChoYXNDaGFuZ2VkUHJvcGVydHko
UHJvcGVydHk6OlZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICBzZXRWZXJ0aWNhbFNj
cm9sbGJhckxheWVyKHN0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkudG9SZXByZXNl
bnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAK
LSAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KEhvcml6b250YWxTY3JvbGxiYXJMYXllcikpCisg
ICAgaWYgKGhhc0NoYW5nZWRQcm9wZXJ0eShQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyKSkKICAgICAgICAgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKHN0YXRlTm9kZS5ob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIoKS50b1JlcHJlc2VudGF0aW9uKGFkb3B0aXZlVHJlZS5wcmVm
ZXJyZWRMYXllclJlcHJlc2VudGF0aW9uKCkpKTsKIH0KIApAQCAtODAsMzMgKzgwLDMzIEBAIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6flNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgp
CiAgICAgc2Nyb2xsaW5nU3RhdGVUcmVlKCkuc2Nyb2xsaW5nTm9kZVJlbW92ZWQoKTsKIH0KIAot
dm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFByb3BlcnR5Q2hhbmdlZEJpdHNB
ZnRlclJlYXR0YWNoKCkKK3ZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQcm9w
ZXJ0eUNoYW5nZXNBZnRlclJlYXR0YWNoKCkKIHsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQo
U2Nyb2xsYWJsZUFyZWFTaXplKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoVG90YWxDb250
ZW50c1NpemUpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWFjaGFibGVDb250ZW50c1Np
emUpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChTY3JvbGxQb3NpdGlvbik7Ci0gICAgc2V0
UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbE9yaWdpbik7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2Vk
Qml0KFNjcm9sbGFibGVBcmVhUGFyYW1zKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5h
bChQcm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFTaXplKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJ
bnRlcm5hbChQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hh
bmdlZEludGVybmFsKFByb3BlcnR5OjpSZWFjaGFibGVDb250ZW50c1NpemUpOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbik7CisgICAgc2V0
UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OlNjcm9sbE9yaWdpbik7CisgICAgc2V0
UHJvcGVydHlDaGFuZ2VkSW50ZXJuYWwoUHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zKTsK
ICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQo
UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJ
bnRlcm5hbChQcm9wZXJ0eTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KEhvcml6b250YWxTbmFwT2Zmc2V0cyk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFZlcnRp
Y2FsU25hcE9mZnNldHMpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChIb3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcyk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcyk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEN1cnJlbnRIb3Jpem9udGFs
U25hcE9mZnNldEluZGV4KTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoQ3VycmVudFZlcnRp
Y2FsU25hcE9mZnNldEluZGV4KTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9w
ZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRl
cm5hbChQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cyk7CisgICAgc2V0UHJvcGVydHlDaGFu
Z2VkSW50ZXJuYWwoUHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Q3VycmVudEhv
cml6b250YWxTbmFwT2Zmc2V0SW5kZXgpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFs
KFByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgpOwogI2VuZGlmCi0gICAg
c2V0UHJvcGVydHlDaGFuZ2VkQml0KElzTW9uaXRvcmluZ1doZWVsRXZlbnRzKTsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsQ29udGFpbmVyTGF5ZXIpOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZEJpdChTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdl
ZEJpdChIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZEJp
dChWZXJ0aWNhbFNjcm9sbGJhckxheWVyKTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFp
bnRlckZvclNjcm9sbGJhcik7Ci0KLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNldFByb3BlcnR5
Q2hhbmdlZEJpdHNBZnRlclJlYXR0YWNoKCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkSW50ZXJu
YWwoUHJvcGVydHk6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRzKTsKKyAgICBzZXRQcm9wZXJ0eUNo
YW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwor
ICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xs
YmFyTGF5ZXIpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEludGVybmFsKFByb3BlcnR5OjpWZXJ0
aWNhbFNjcm9sbGJhckxheWVyKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9w
ZXJ0eTo6UGFpbnRlckZvclNjcm9sbGJhcik7CisKKyAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNl
dFByb3BlcnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2goKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGFibGVBcmVhU2l6ZShjb25zdCBGbG9hdFNpemUmIHNp
emUpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OnNldFNjcm9sbGFibGVBcmVhU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2Nyb2xsYWJsZUFyZWFTaXplID0gc2l6ZTsKLSAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoU2Nyb2xsYWJsZUFyZWFTaXplKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6OlNjcm9sbGFibGVBcmVhU2l6ZSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRUb3RhbENvbnRlbnRzU2l6ZShjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29u
dGVudHNTaXplKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRUb3RhbENvbnRlbnRzU2l6ZShjb25zdCBGbG9hdFNpemUmIHRvdGFsQ29uCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fdG90YWxDb250ZW50c1NpemUgPSB0b3RhbENvbnRlbnRz
U2l6ZTsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVG90YWxDb250ZW50c1NpemUpOworICAgIHNl
dFByb3BlcnR5Q2hhbmdlZChQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpOwogfQogCiB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKQpAQCAtMTMzLDcgKzEzMyw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRSZWFjaGFibGVDb250ZW50c1Np
emUoY29uc3QgRmxvYXRTaXplJiByZWFjCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcmVhY2hh
YmxlQ29udGVudHNTaXplID0gcmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIHNldFByb3BlcnR5
Q2hhbmdlZChSZWFjaGFibGVDb250ZW50c1NpemUpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChQ
cm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uKQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsK
LSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoU2Nyb2xsUG9zaXRpb24pOworICAgIHNldFByb3BlcnR5
Q2hhbmdlZChQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50JiBzY3JvbGxP
cmlnaW4pCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OnNldFNjcm9sbE9yaWdpbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3Njcm9sbE9yaWdpbiA9IHNjcm9sbE9yaWdpbjsKLSAgICBzZXRQ
cm9wZXJ0eUNoYW5nZWQoU2Nyb2xsT3JpZ2luKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJv
cGVydHk6OlNjcm9sbE9yaWdpbik7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpA
QCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRI
b3Jpem9udGFsU25hcE9mZnNldHMoY29uc3QgVmVjdG9yPGZsb2F0PiYKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gc25hcE9m
ZnNldHM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhvcml6b250YWxTbmFwT2Zmc2V0cyk7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpOwog
fQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zm
c2V0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbmFwT2Zmc2V0cykKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBzbgogICAgICAgICByZXR1cm47CiAKICAgICBtX3NuYXBP
ZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRzID0gc25hcE9mZnNldHM7Ci0gICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFZlcnRpY2FsU25hcE9mZnNldHMpOworICAgIHNldFByb3BlcnR5Q2hhbmdl
ZChQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+PiYgc2Nyb2xsT2Zmc2V0UmFuZ2VzKQpAQCAtMTc5
LDcgKzE3OSw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9u
dGFsU25hcE9mZnNldFJhbmdlcyhjb25zdCBWZWN0b3I8U2NyCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fc25hcE9mZnNldHNJbmZvLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzID0gc2Nyb2xs
T2Zmc2V0UmFuZ2VzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChIb3Jpem9udGFsU25hcE9mZnNl
dFJhbmdlcyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jpem9udGFsU25h
cE9mZnNldFJhbmdlcyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoY29uc3QgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4mIHNjcm9sbE9mZnNldFJhbmdlcykKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKGNv
bnN0IFZlY3RvcjxTY3JvbAogICAgICAgICByZXR1cm47CiAKICAgICBtX3NuYXBPZmZzZXRzSW5m
by52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzY3JvbGxPZmZzZXRSYW5nZXM7Ci0gICAgc2V0
UHJvcGVydHlDaGFuZ2VkKFZlcnRpY2FsU25hcE9mZnNldFJhbmdlcyk7CisgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpOwogfQogCiB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCh1bnNpZ25lZCBpbmRleCkKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCh1
bnNpZ25lZCBpbgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4ID0gaW5kZXg7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEN1cnJlbnRI
b3Jpem9udGFsU25hcE9mZnNldEluZGV4KTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVy
dHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KHVu
c2lnbmVkIGluZGV4KQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpzZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCh1bnNpZ25lZCBpbmRl
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX2N1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4ID0gaW5kZXg7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEN1cnJlbnRWZXJ0aWNhbFNuYXBP
ZmZzZXRJbmRleCk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpDdXJyZW50VmVy
dGljYWxTbmFwT2Zmc2V0SW5kZXgpOwogfQogI2VuZGlmCiAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzKGNvbnN0IFNjcm9sbGFibGVBcgogICAgICAgICByZXR1cm47CiAKICAgICBtX3Njcm9sbGFi
bGVBcmVhUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNj
cm9sbGFibGVBcmVhUGFyYW1zKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlNj
cm9sbGFibGVBcmVhUGFyYW1zKTsKIH0KIAogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoT3B0aW9uU2V0PFN5bmNoCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gcmVhc29uczsKLSAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKTsKKyAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGlu
Zyk7CiB9CiAjZW5kaWYKIApAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpzZXRSZXF1ZXN0ZWRTY3JvbGxEYXRhKGNvbnN0IFJlcXVlc3RlZFNjcm9s
bERhCiB7CiAgICAgLy8gU2Nyb2xsIHBvc2l0aW9uIHJlcXVlc3RzIGFyZSBpbXBlcmF0aXZlLCBu
b3Qgc3RhdGVmdWwsIHNvIHdlIGNhbid0IGVhcmx5IHJldHVybiBoZXJlLgogICAgIG1fcmVxdWVz
dGVkU2Nyb2xsRGF0YSA9IHNjcm9sbERhdGE7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKFJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUHJvcGVydHk6OlJl
cXVlc3RlZFNjcm9sbFBvc2l0aW9uKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldElzTW9uaXRvcmluZ1doZWVsRXZlbnRzKGJvb2wgaXNNb25pdG9yaW5nV2hlZWxF
dmVudHMpCkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OnNldElzTW9uaXRvcmluZ1doZWVsRXZlbnRzKGJvb2wgaXNNb25pdG9yaW5nV2gKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9pc01vbml0b3JpbmdXaGVlbEV2ZW50cyA9IGlzTW9uaXRvcmlu
Z1doZWVsRXZlbnRzOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChJc01vbml0b3JpbmdXaGVlbEV2
ZW50cyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpJc01vbml0b3JpbmdXaGVl
bEV2ZW50cyk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3Jv
bGxDb250YWluZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2Vu
dGF0aW9uKQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRTY3JvbGxDb250YWluZXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXIgPSBsYXllclJlcHJlc2Vu
dGF0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxDb250YWluZXJMYXllcik7Cisg
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcik7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxlZENvbnRlbnRz
TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZXJSZXByZXNlbnRhdGlvbikKQEAg
LTI2MSw3ICsyNjEsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Ny
b2xsZWRDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9IGxheWVyUmVwcmVzZW50YXRpb247Ci0g
ICAgc2V0UHJvcGVydHlDaGFuZ2VkKFNjcm9sbGVkQ29udGVudHNMYXllcik7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpOwogfQogCiB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
KGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWVyKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIoY29uc3QgTGF5ZXJSZXByZXNlCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyID0gbGF5ZXI7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkKEhvcml6b250
YWxTY3JvbGxiYXJMYXllcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIpOwogfQogCiB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0VmVydGljYWxTY3JvbGxiYXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudGF0aW9u
JiBsYXllcikKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6c2V0VmVydGljYWxTY3JvbGxiYXJMYXllcihjb25zdCBMYXllclJlcHJlc2VudAogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKLSAg
ICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmVydGljYWxTY3JvbGxiYXJMYXllcik7CisgICAgc2V0UHJv
cGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKTsKIH0KIAogI2lm
ICFQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDA2ZmRiZTFjZWNmMmU4
N2U5ODhiZTUwMDU3NTBiZDMyMzRiYmZhZWQuLjU1OWI2OWI0NGI5NjVlN2JjNzBhMjRlMjczMTUz
NjhhNTExNGZjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCkBAIC01NSwzNCArNTUsNiBAQCBj
bGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nU3RhdGVO
b2RlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUo
KTsKIAotICAgIGVudW0gQ2hhbmdlZFByb3BlcnR5IHsKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWFT
aXplID0gTnVtU3RhdGVOb2RlQml0cywKLSAgICAgICAgVG90YWxDb250ZW50c1NpemUsCi0gICAg
ICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwKLSAgICAgICAgU2Nyb2xsUG9zaXRpb24sCi0gICAg
ICAgIFNjcm9sbE9yaWdpbiwKLSAgICAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbXMsCi0jaWYgRU5B
QkxFKFNDUk9MTElOR19USFJFQUQpCi0gICAgICAgIFJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9s
bGluZywKLSNlbmRpZgotICAgICAgICBSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbiwKLSNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMsCi0gICAg
ICAgIFZlcnRpY2FsU25hcE9mZnNldHMsCi0gICAgICAgIEhvcml6b250YWxTbmFwT2Zmc2V0UmFu
Z2VzLAotICAgICAgICBWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsCi0gICAgICAgIEN1cnJlbnRI
b3Jpem9udGFsU25hcE9mZnNldEluZGV4LAotICAgICAgICBDdXJyZW50VmVydGljYWxTbmFwT2Zm
c2V0SW5kZXgsCi0jZW5kaWYKLSAgICAgICAgSXNNb25pdG9yaW5nV2hlZWxFdmVudHMsCi0gICAg
ICAgIFNjcm9sbENvbnRhaW5lckxheWVyLAotICAgICAgICBTY3JvbGxlZENvbnRlbnRzTGF5ZXIs
Ci0gICAgICAgIEhvcml6b250YWxTY3JvbGxiYXJMYXllciwKLSAgICAgICAgVmVydGljYWxTY3Jv
bGxiYXJMYXllciwKLSAgICAgICAgUGFpbnRlckZvclNjcm9sbGJhciwKLSAgICAgICAgTnVtU2Ny
b2xsaW5nU3RhdGVOb2RlQml0cyAvLyBUaGlzIG11c3QgcmVtYWluIGF0IHRoZSBsYXN0IHBvc2l0
aW9uLgotICAgIH07Ci0KICAgICBjb25zdCBGbG9hdFNpemUmIHNjcm9sbGFibGVBcmVhU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTaXplOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTY3JvbGxhYmxlQXJlYVNpemUoY29uc3QgRmxvYXRTaXplJik7CiAKQEAgLTE1
Niw3ICsxMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
KFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQp
OwogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsKIAotICAgIHZvaWQgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0c0FmdGVyUmVhdHRhY2goKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb3Bl
cnR5Q2hhbmdlc0FmdGVyUmVhdHRhY2goKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHVtcFByb3Bl
cnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3Ip
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcAppbmRleCBjMThhODRiZDlhZjUx
MTNiYzc1NjA4ZGM0MGU0OGIwMzU4MDlkMTZiLi4wNjgwOWJhYTVhYzc3Y2E0NTBkZGI3ZTEwNjZj
NWE4NjIxZDdkZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCBS
ZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OmNsb25lKFNj
cm9sbGluZ1N0YXRlVHJlZSYgYWRvcAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZSgqdGhpcywgYWRvcHRpdmVUcmVlKSk7CiB9CiAKLXZvaWQgU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlOjpzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgp
Cit2b2lkIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJS
ZWF0dGFjaCgpCiB7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFZpZXdwb3J0Q29uc3RyYWlu
dHMpOwotICAgIFNjcm9sbGluZ1N0YXRlTm9kZTo6c2V0UHJvcGVydHlDaGFuZ2VkQml0c0FmdGVy
UmVhdHRhY2goKTsKKyAgICBzZXRQcm9wZXJ0eUNoYW5nZWRJbnRlcm5hbChQcm9wZXJ0eTo6Vmll
d3BvcnRDb25zdHJhaW50cyk7CisgICAgU2Nyb2xsaW5nU3RhdGVOb2RlOjpzZXRQcm9wZXJ0eUNo
YW5nZXNBZnRlclJlYXR0YWNoKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
Ojp1cGRhdGVDb25zdHJhaW50cyhjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHMmIGNvbnN0cmFpbnRzKQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZTo6dXBkYXRlQ29uc3RyYWludHMoY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bgogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVDb25zdHJhaW50
cyB3aXRoIGNvbnN0cmFpbmluZyByZWN0ICIgPDwgY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVj
dEF0TGFzdExheW91dCgpIDw8ICIgc3RpY2t5IG9mZnNldCAiIDw8IGNvbnN0cmFpbnRzLnN0aWNr
eU9mZnNldEF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXIgcG9zIGF0IGxhc3QgbGF5b3V0ICIgPDwg
Y29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsKIAogICAgIG1fY29uc3Ry
YWludHMgPSBjb25zdHJhaW50czsKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoVmlld3BvcnRDb25z
dHJhaW50cyk7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpWaWV3cG9ydENvbnN0
cmFpbnRzKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OmNvbXB1
dGVMYXllclBvc2l0aW9uKGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlLmgKaW5kZXggMWZiYmE0ZDJkZmI2MmFhZTFlOGQwZWY1NzUxYjY4OTE1YzBjYzcz
My4uNTM0ZWNhYTRmOTllMTQ1N2ViZDhmNmY2ZGU1ZTE5ZTFkMzY4OGU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lO
b2RlLmgKQEAgLTQ0LDEwICs0NCw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNjcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZSgpOwogCi0gICAgZW51bSB7Ci0gICAgICAgIFZpZXdwb3J0Q29uc3Ry
YWludHMgPSBOdW1TdGF0ZU5vZGVCaXRzCi0gICAgfTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlQ29uc3RyYWludHMoY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzJik7CiAgICAgY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiB2aWV3
cG9ydENvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50czsgfQogCkBAIC01
NSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlKFNjcm9s
bGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAgICAgU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYsIFNjcm9sbGluZ1N0YXRlVHJl
ZSYpOwogCi0gICAgdm9pZCBzZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFjaCgpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpIG92ZXJy
aWRlOwogCiAgICAgRmxvYXRQb2ludCBjb21wdXRlTGF5ZXJQb3NpdGlvbihjb25zdCBMYXlvdXRS
ZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0OwogICAgIHZvaWQgcmVjb25jaWxlTGF5ZXJQb3NpdGlv
bkZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QsIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKaW5kZXggYjRkYmExYzY3NjNj
ZDViYzllNjUzMzZlYzljODFkZTA1ZDhlNzI5OS4uZGYyYjI0ZTNiMmU3NWUyNzk0MGRhMTRhN2M3
YTVkZjRiNTA1OGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZVRyZWU6OmNsZWFyKCkKIHZvaWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjpub2RlV2FzUmVh
dHRhY2hlZFJlY3Vyc2l2ZShTY3JvbGxpbmdTdGF0ZU5vZGUmIG5vZGUpCiB7CiAgICAgLy8gV2hl
biBhIG5vZGUgaXMgcmUtYXR0YWNoZWQsIHRoZSBTY3JvbGxpbmdUcmVlIGlzIHJlY3JlYXRpbmcg
dGhlIFNjcm9sbGluZ05vZGUgZnJvbSBzY3JhdGNoLCBzbyB3ZSBuZWVkIHRvIHNldCBhbGwgdGhl
IGRpcnR5IGJpdHMuCi0gICAgbm9kZS5zZXRQcm9wZXJ0eUNoYW5nZWRCaXRzQWZ0ZXJSZWF0dGFj
aCgpOworICAgIG5vZGUuc2V0UHJvcGVydHlDaGFuZ2VzQWZ0ZXJSZWF0dGFjaCgpOwogCiAgICAg
aWYgKGF1dG8qIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqY2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IGFlNjcyMjAyNmY4OTI0YWFlN2I5ODI0OGI0MjllNzQx
ODI5NTgwZTkuLmU3M2U2ZjdlMDUyM2UxYTlkMTYxNmJhNmM3YzMyOTYxNGVhOGEyMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0y
NTYsMjIgKzI1NiwyMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OmNvbW1pdFRyZWVTdGF0ZShzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiYmIHNjcm9sbAogICAgIGF1dG8qIHJvb3RO
b2RlID0gc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCk7CiAgICAgaWYgKHJvb3RO
b2RlCiAgICAgICAgICYmIChyb290U3RhdGVOb2RlQ2hhbmdlZAotICAgICAgICAgICAgfHwgcm9v
dE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikKLSAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRz
TGF5ZXIpCi0gICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpBc3luY0ZyYW1lT3JPdmVyZmxvd1Njcm9sbGlu
Z0VuYWJsZWQpCi0gICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cykp
KSB7CisgICAgICAgICAgICB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OkV2ZW50VHJhY2tpbmdSZWdpb24pCisgICAgICAgICAgICB8
fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikKKyAgICAgICAgICAgIHx8IHJvb3ROb2RlLT5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6QXN5bmNGcmFtZU9y
T3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKQorICAgICAgICAgICAgfHwgcm9vdE5vZGUtPmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpJc01vbml0b3JpbmdX
aGVlbEV2ZW50cykpKSB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX3RyZWVTdGF0ZU11dGV4
KTsKIAotICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9vdE5vZGUtPmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpCisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVk
Q29udGVudHNMYXllcikpCiAgICAgICAgICAgICBtX3RyZWVTdGF0ZS5tYWluRnJhbWVTY3JvbGxQ
b3NpdGlvbiA9IHsgfTsKIAotICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5nZWQgfHwgcm9v
dE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikpCisgICAgICAgIGlmIChyb290U3RhdGVOb2RlQ2hhbmdl
ZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkV2ZW50VHJhY2tpbmdSZWdpb24pKQogICAgICAgICAgICAgbV90cmVlU3RhdGUuZXZl
bnRUcmFja2luZ1JlZ2lvbnMgPSBzY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+
ZXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKIAotICAgICAgICBpZiAocm9vdFN0YXRlTm9kZUNoYW5n
ZWQgfHwgcm9vdE5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkKSkKKyAgICAg
ICAgaWYgKHJvb3RTdGF0ZU5vZGVDaGFuZ2VkIHx8IHJvb3ROb2RlLT5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6QXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3Jv
bGxpbmdFbmFibGVkKSkKICAgICAgICAgICAgIG1fYXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxp
bmdFbmFibGVkID0gc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCktPmFzeW5jRnJh
bWVPck92ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZCgpOwogCi0gICAgICAgIGlmIChyb290U3RhdGVO
b2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpJc01vbml0b3JpbmdXaGVlbEV2ZW50cykpCisgICAgICAgIGlm
IChyb290U3RhdGVOb2RlQ2hhbmdlZCB8fCByb290Tm9kZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRzKSkKICAg
ICAgICAgICAgIG1faXNNb25pdG9yaW5nV2hlZWxFdmVudHMgPSBzY3JvbGxpbmdTdGF0ZVRyZWUt
PnJvb3RTdGF0ZU5vZGUoKS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNThjZWZlY2Q1YjBhNmVlOWUwMzE4
NWUxZDhjNTczYWY1NDNlMWQxMC4uNTQwYzgxZGJiOWIwOGE3Yjk5M2ZhZmIwZmUxNmUyYjIxNGZi
MjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTUxLDM5ICs1MSwz
OSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVm
b3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nUwogICAgIAogICAgIGNvbnN0IFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBzdGF0ZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3Rv
cikpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpGcmFtZVNjYWxlRmFjdG9yKSkKICAgICAgICAgbV9mcmFtZVNjYWxlRmFjdG9y
ID0gc3RhdGUuZnJhbWVTY2FsZUZhY3RvcigpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0KSkK
KyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkhlYWRlckhlaWdodCkpCiAgICAgICAgIG1faGVhZGVySGVpZ2h0ID0gc3RhdGUuaGVh
ZGVySGVpZ2h0KCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJIZWlnaHQpKQorICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVySGVp
Z2h0KSkKICAgICAgICAgbV9mb290ZXJIZWlnaHQgPSBzdGF0ZS5mb290ZXJIZWlnaHQoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cykpCisgICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpCZWhhdmlvckZvckZp
eGVkRWxlbWVudHMpKQogICAgICAgICBtX2JlaGF2aW9yRm9yRml4ZWQgPSBzdGF0ZS5zY3JvbGxC
ZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlRvcENvbnRlbnRJbnNldCkp
CisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpUb3BDb250ZW50SW5zZXQpKQogICAgICAgICBtX3RvcENvbnRlbnRJbnNldCA9IHN0
YXRlLnRvcENvbnRlbnRJbnNldCgpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmlzdWFsVmlld3BvcnRJc1NtYWxs
ZXJUaGFuTGF5b3V0Vmlld3BvcnQpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFu
TGF5b3V0Vmlld3BvcnQpKQogICAgICAgICBtX3Zpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxh
eW91dFZpZXdwb3J0ID0gc3RhdGUudmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmll
d3BvcnQoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUp
KQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSkpCiAgICAgICAgIG1f
Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSA9IHN0YXRlLmZpeGVkRWxlbWVudHNM
YXlvdXRSZWxhdGl2ZVRvRnJhbWUoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkxheW91dFZpZXdwb3J0KSkgewor
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6TGF5b3V0Vmlld3BvcnQpKSB7CiAgICAgICAgIG1fbGF5b3V0Vmlld3BvcnQgPSBzdGF0
ZS5sYXlvdXRWaWV3cG9ydCgpOwogICAgICAgICB1cGRhdGVWaWV3cG9ydEZvckN1cnJlbnRTY3Jv
bGxQb3NpdGlvbih7IH0pOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Ok1pbkxheW91dFZpZXdwb3J0T3Jp
Z2luKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luKSkKICAgICAgICAgbV9taW5MYXlv
dXRWaWV3cG9ydE9yaWdpbiA9IHN0YXRlLm1pbkxheW91dFZpZXdwb3J0T3JpZ2luKCk7CiAKLSAg
ICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbikpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpNYXhMYXlvdXRWaWV3cG9y
dE9yaWdpbikpCiAgICAgICAgIG1fbWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBzdGF0ZS5tYXhM
YXlvdXRWaWV3cG9ydE9yaWdpbigpOwogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9y
dFNpemUpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUpKQogICAgICAgICBtX292
ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplID0gc3RhdGUub3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDA4ODdiOWQwZmUxYzRjYWI0
NGNkZjg0ZmFmN2Q1NDExNjZjODIzZjYuLjk5OGMxOGNlNTFlMTIyNTUzZDQ3ZjRhYjZmZmNlZDRm
ZGY2NWMyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgc3RhdGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KHN0
YXRlTm9kZSk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKKyAgICBpZiAoc3RhdGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVB
cmVhU2l6ZSkpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFTaXplID0gc3RhdGUuc2Nyb2xsYWJs
ZUFyZWFTaXplKCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUpKSB7CisgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENv
bnRlbnRzU2l6ZSkpIHsKICAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5pc1J1YmJlckJhbmRJ
blByb2dyZXNzRm9yTm9kZShzY3JvbGxpbmdOb2RlSUQoKSkpCiAgICAgICAgICAgICBtX3RvdGFs
Q29udGVudHNTaXplRm9yUnViYmVyQmFuZCA9IG1fdG90YWxDb250ZW50c1NpemU7CiAgICAgICAg
IGVsc2UKQEAgLTYyLDU3ICs2Miw1NyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTgogICAgICAg
ICBtX3RvdGFsQ29udGVudHNTaXplID0gc3RhdGUudG90YWxDb250ZW50c1NpemUoKTsKICAgICB9
CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSkpCiAgICAgICAgIG1fcmVhY2hhYmxlQ29udGVudHNTaXplID0gc3RhdGUucmVhY2hhYmxl
Q29udGVudHNTaXplKCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24pKSB7CisgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQ
b3NpdGlvbikpIHsKICAgICAgICAgbV9sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24gPSBzdGF0
ZS5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBpZiAobV9pc0ZpcnN0Q29tbWl0ICYmICFzdGF0
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbikpCisgICAgICAgIGlmIChtX2lzRmlyc3RDb21taXQgJiYgIXN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbikpCiAgICAgICAgICAgICBtX2N1cnJlbnRTY3JvbGxQb3NpdGlvbiA9
IG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmIChzdGF0ZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmln
aW4pKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsT3JpZ2luKSkKICAgICAgICAgbV9zY3JvbGxPcmlnaW4gPSBzdGF0
ZS5zY3JvbGxPcmlnaW4oKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgaWYg
KHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhv
cml6b250YWxTbmFwT2Zmc2V0cykpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMpKQogICAg
ICAgICBtX3NuYXBPZmZzZXRzSW5mby5ob3Jpem9udGFsU25hcE9mZnNldHMgPSBzdGF0ZS5ob3Jp
em9udGFsU25hcE9mZnNldHMoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0aWNhbFNuYXBPZmZzZXRzKSkKKyAgICBp
ZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OlZlcnRpY2FsU25hcE9mZnNldHMpKQogICAgICAgICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNh
bFNuYXBPZmZzZXRzID0gc3RhdGUudmVydGljYWxTbmFwT2Zmc2V0cygpOwogCi0gICAgaWYgKHN0
YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzKSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2Vz
KSkKICAgICAgICAgbV9zbmFwT2Zmc2V0c0luZm8uaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMg
PSBzdGF0ZS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpOwogCi0gICAgaWYgKHN0YXRlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25h
cE9mZnNldFJhbmdlcykpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQogICAgICAg
ICBtX3NuYXBPZmZzZXRzSW5mby52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMgPSBzdGF0ZS52ZXJ0
aWNhbFNuYXBPZmZzZXRSYW5nZXMoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZz
ZXRJbmRleCkpCisgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCiAgICAg
ICAgIG1fY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKTsKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0
SW5kZXgpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4KSkKICAgICAgICAg
bV9jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCA9IHN0YXRlLmN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCk7CiAjZW5kaWYKIAotICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCisg
ICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpCiAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzID0gc3RhdGUuc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKCk7CiAKICNpZiBFTkFCTEUo
U0NST0xMSU5HX1RIUkVBRCkKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxp
bmcpKQorICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKSkKICAgICAgICAgbV9z
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgPSBzdGF0ZS5zeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoKTsKICNlbmRpZgogCi0gICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICBpZiAo
c3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNj
cm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IHN0
YXRlLnNjcm9sbENvbnRhaW5lckxheWVyKCk7CiAKLSAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVy
KSkKKyAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAgICAgICAgIG1fc2Nyb2xsZWRDb250
ZW50c0xheWVyID0gc3RhdGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CiB9CiAKIHZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBT
Y3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKIHsKICAgICBjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3Rl
ZFNjcm9sbFBvc2l0aW9uKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uKSkgewogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Ny
b2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlUmVxdWVzdHNTY3JvbGwoc2Nyb2xsaW5nTm9kZUlEKCks
IHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEu
c2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW0KaW5kZXggZTBlNzBlODY5OGQ0NDUyNDU0ZDA5MmU4ZjY5MTJmZDE0
Zjk0NzI5MC4uNmE2ZTc3ZDc1NWU0M2I2YTNlYTM4YTNlMGQzOTllMWY4ZDlmOGRjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLm1tCkBAIC02MSwxMCArNjEsMTAgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYKIHsKICAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWRTdGF0
ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKIAot
ICAgIGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpMYXllcikpCisgICAgaWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCiAgICAgICAgIG1fbGF5ZXIgPSBz
dGF0aWNfY2FzdDxDQUxheWVyKj4oZml4ZWRTdGF0ZU5vZGUubGF5ZXIoKSk7CiAKLSAgICBpZiAo
c3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmll
d3BvcnRDb25zdHJhaW50cykpCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50cykpCiAgICAg
ICAgIG1fY29uc3RyYWludHMgPSBmaXhlZFN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5t
bQppbmRleCAyZGQxNjlhNDhmNzMyZDRiYWEzZDI5NmI1MTY5Nzc1NjZjMWFhNzM5Li45YTA4Zjgz
YWM2MGQzYjg2ZTYzNDI5NTM2NzQ3ZDNhOWRlZjM3NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94
eU5vZGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLm1tCkBAIC01MSwxMCArNTEsMTAgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2wKIHsKICAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93
U2Nyb2xsUHJveHlOb2RlJiBvdmVyZmxvd1Byb3h5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChz
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQor
ICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkxheWVyKSkKICAgICAgICAgbV9sYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIq
PihzdGF0ZU5vZGUubGF5ZXIoKSk7CiAKLSAgICBpZiAob3ZlcmZsb3dQcm94eVN0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlKSkKKyAgICBpZiAob3ZlcmZsb3dQcm94eVN0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlKSkKICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCA9IG92ZXJm
bG93UHJveHlTdGF0ZU5vZGUub3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCk7CiAKICAgICBpZiAobV9v
dmVyZmxvd1Njcm9sbGluZ05vZGVJRCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2Rl
Lm1tCmluZGV4IGEyNWE5ZDA2NjAzMDQwNmU1NzZjNDllMTU4Zjg1NThjYjg1MjI2MDEuLmNmZDE2
ZjQyYzZlYWNhYmMzNTkwYmRmY2QzNjI0ZmJiZjExZDY1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVl
UG9zaXRpb25lZE5vZGUubW0KQEAgLTU0LDEzICs1NCwxMyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZQogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUmIHBvc2l0aW9u
ZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlPihzdGF0
ZU5vZGUpOwogCi0gICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikp
CiAgICAgICAgIG1fbGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4ocG9zaXRpb25lZFN0YXRl
Tm9kZS5sYXllcigpKTsKIAotICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlcykpCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGlu
Z05vZGVzKSkKICAgICAgICAgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyA9IHBvc2l0
aW9uZWRTdGF0ZU5vZGUucmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsKIAotICAgIGlm
IChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgaWYgKHBvc2l0aW9uZWRT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkxheW91dENvbnN0cmFpbnREYXRhKSkKICAgICAgICAgbV9jb25zdHJhaW50cyA9IHBvc2l0aW9u
ZWRTdGF0ZU5vZGUubGF5b3V0Q29uc3RyYWludHMoKTsKIAogICAgIGlmICghbV9yZWxhdGVkT3Zl
cmZsb3dTY3JvbGxpbmdOb2Rlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
CmluZGV4IDNmZjVkMGRiODA5ZjBlYjA4Y2UyMjg5YjYxYmM4MWRmZjE2NzM0NDQuLjAyZTM1Y2Q2
Yjk3MGQ2ZjFhOWEyNWU0M2NmYjRiN2M3ZWE0NjA4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLm1tCkBAIC02MCwxMCArNjAsMTAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUKIHsKICAg
ICBjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsKIAotICAgIGlmIChzdGlj
a3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIp
KQorICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkKICAgICAgICAgbV9sYXllciA9IHN0YXRpY19jYXN0
PENBTGF5ZXIqPihzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CiAKLSAgICBpZiAoc3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZpZXdwb3J0Q29u
c3RyYWludHMpKQorICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICBtX2Nv
bnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0KaW5kZXggNTg1OTRmZTNhNzMzZDUz
MzhlODc0NDhjZTQ0NWNhYWNjMTFhMTM5NS4uZWQyNjE5MDliMWJmODZlY2JkYTI5YzY3NGQ2ZGQ2
MjIzMTkwNTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCkBAIC01
Myw3ICs1Myw3IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxl
ckltcHNGcm9tU2Nyb2xsYmFycyhTY3JvbGxiYXIqIHZlcnRpCiAgICAgbV92ZXJ0aWNhbFNjcm9s
bGVySW1wID0gdmVydGljYWxQYWludGVyOwogICAgIG1faG9yaXpvbnRhbFNjcm9sbGVySW1wID0g
aG9yaXpvbnRhbFBhaW50ZXI7CiAKLSAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUGFpbnRlckZvclNj
cm9sbGJhcik7CisgICAgc2V0UHJvcGVydHlDaGFuZ2VkKFByb3BlcnR5OjpQYWludGVyRm9yU2Ny
b2xsYmFyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQppbmRleCAzZTdlMTQxYmRhMTE3YjgwNmIxNjFjZmNh
YjRlZGRjYjk0M2JjMDRjLi43YmU5MzFhODk5NmQ0ZTY0YjQ4YjM2YzJmMGEwMmNhODU4OGZmZmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtNjgs
MjYgKzY4LDI2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6Y29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpCiAgICAgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwog
ICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OlJvb3RDb250ZW50c0xheWVyKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSb290Q29udGVudHNM
YXllcikpCiAgICAgICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVy
Kj4oc2Nyb2xsaW5nU3RhdGVOb2RlLnJvb3RDb250ZW50c0xheWVyKCkpOwogCi0gICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCisgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIg
PSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxp
bmdMYXllcigpKTsKIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpJbnNldENsaXBMYXllcikpCisg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICBtX2luc2V0Q2xpcExh
eWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNldENsaXBM
YXllcigpKTsKIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKQor
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkNvbnRlbnRTaGFkb3dMYXllcikpCiAgICAgICAgIG1fY29udGVu
dFNoYWRvd0xheWVyID0gc3RhdGljX2Nhc3Q8Q0FMYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5j
b250ZW50U2hhZG93TGF5ZXIoKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVyTGF5
ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckxheWVyKSkKICAgICAgICAgbV9oZWFkZXJM
YXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5
ZXIoKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkZvb3RlckxheWVyKSkKICAgICAgICAgbV9mb290ZXJMYXllciA9IHN0YXRpY19j
YXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAKICAgICBi
b29sIGxvZ1Njcm9sbGluZ01vZGUgPSAhbV9oYWRGaXJzdFVwZGF0ZTsKLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5nKSkKKyAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpSZWFzb25zRm9yU3luY2hyb25vdXNTY3JvbGxpbmcpKQogICAgICAgICBsb2dTY3JvbGxp
bmdNb2RlID0gdHJ1ZTsKIAogICAgIGlmIChsb2dTY3JvbGxpbmdNb2RlICYmIGlzUm9vdE5vZGUo
KSAmJiBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgp
KQpAQCAtMTA1LDE1ICsxMDUsMTUgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW4KICAgICBjb25z
dCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlv
biBhZnRlciBjaGlsZCBub2RlcyBoYXZlIGJlZW4gdXBkYXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQg
dG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNvbnN0cmFpbnRzIGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhh
cHBlbnMuCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKKyAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKICAgICAgICAgY29u
c3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0
ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Ny
b2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Ny
b2xsRGF0YS5jbGFtcGluZyk7CiAgICAgfQogCiAgICAgaWYgKGlzUm9vdE5vZGUoKQotICAgICAg
ICAmJiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikKLSAgICAgICAgfHwgc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlRvdGFsQ29udGVudHNTaXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFy
ZWFTaXplKSkpCisgICAgICAgICYmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikK
KyAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSkKKyAgICAgICAgfHwgc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxhYmxlQXJlYVNpemUpKSkKICAgICAgICAgdXBkYXRlTWFpbkZyYW1lUGlu
QW5kUnViYmVyYmFuZFN0YXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVNYWMubW0KaW5kZXggM2YzNDdkMDIzZDNiZmY1ZjAxOGZiNWQ5NjY3ZjQ0
NmNlOGMyYTJlNS4uNmIwMmIxNmUxMzIyYjAxNGRkNDk3M2I0N2ViMGZhZGRhM2MwNzEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjOjpj
b21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wKIAogICAgIGNvbnN0IGF1dG8mIG92
ZXJmbG93U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9z
aXRpb24pKSB7CisgICAgaWYgKG92ZXJmbG93U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsK
ICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93U3RhdGVO
b2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Ny
b2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCBy
ZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGEzZmJjNTlhNDc2OTIyZTViYmMy
YjY2NjI0OWY4NDVlZDdiMmI3ZTkuLmM3ZmQyODJjN2FhZjRmNzFlZWI3YzVmMTEyM2E3ZGM1YTFh
NmJiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFj
Lm1tCkBAIC03OSwyMyArNzksMjMgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8U2Nyb2xsT2Zmc2V0
UmFuZ2U8TGF5b3V0VW5pdD4+IGNvbnZlcnRUb0xheW91dFVuaXRzKGNvbnN0IFYKIAogdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp1cGRhdGVGcm9tU3RhdGVOb2Rl
KGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQog
ewotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UGFpbnRlckZvclNjcm9sbGJhcikpIHsKKyAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpQYWludGVyRm9yU2Nyb2xsYmFyKSkgewogICAgICAgICByZWxlYXNlUmVmZXJlbmNl
c1RvU2Nyb2xsZXJJbXBzT25UaGVNYWluVGhyZWFkKCk7CiAgICAgICAgIG1fdmVydGljYWxTY3Jv
bGxlckltcCA9IHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNjcm9sbGVySW1wKCk7CiAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGVySW1wID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250
YWxTY3JvbGxlckltcCgpOwogICAgIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0g
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5n
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhv
cml6b250YWxTbmFwT2Zmc2V0cykgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJh
bmdlcykpCiAgICAgICAgIHVwZGF0ZVNjcm9sbFNuYXBQb2ludHMoU2Nyb2xsRXZlbnRBeGlzOjpI
b3Jpem9udGFsLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpv
bnRhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5v
ZGUuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OlZlcnRpY2FsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9m
ZnNldFJhbmdlcykpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykgfHwg
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpKQogICAgICAgICB1cGRhdGVTY3Jv
bGxTbmFwUG9pbnRzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVu
aXRzKHNjcm9sbGluZ1N0YXRlTm9kZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpLCBjb252ZXJ0VG9M
YXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCkp
KTsKIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgp
KQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkK
ICAgICAgICAgc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2lu
dEluZGV4KCkpOwogICAgIAotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudFZlcnRpY2FsU25hcE9m
ZnNldEluZGV4KSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0
SW5kZXgpKQogICAgICAgICBzZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVydGljYWxTbmFw
UG9pbnRJbmRleCgpKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAK
aW5kZXggZmQ3ZGI4NzhiOGY5MDMwMmJjZWEzMWNjODU2NjlkZWMyMjliODc0Yi4uZjBhNDY4ZTdk
YTA4YzQ4YTRjMjI2YWI0ZGRjYmNiOTc2OTIyZDRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYKIHsK
ICAgICBhdXRvJiBmaXhlZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4ZWRO
b2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgeworICAgIGlmIChmaXhlZFN0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIp
KSB7CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KGZpeGVkU3RhdGVOb2RlLmxheWVyKCkpOwogICAgICAgICBtX2xheWVyID0gZG93bmNh
c3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwogICAgIH0KIAotICAgIGlmIChm
aXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6
OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgIGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmlld3BvcnRDb25zdHJhaW50
cykpCiAgICAgICAgIG1fY29uc3RyYWludHMgPSBmaXhlZFN0YXRlTm9kZS52aWV3cG9ydENvbnN0
cmFpbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5jcHAKaW5kZXggNTYyY2Q4NjgxMTlhMGZjZTI5MTM0NTNlMGFlOTZk
NDE5N2VjYzQwNC4uNzczMWI3NTRmM2Q3YmE2ZDI4M2RlNjA2MTE4ZGJjOTkxMzk3YjFmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YS5jcHAKQEAgLTY1LDI3ICs2NSwyNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcgogCiAgICAg
Y29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVO
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
Um9vdENvbnRlbnRzTGF5ZXIpKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5
ZXIpKSB7CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZv
cm1MYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5yb290Q29udGVudHNMYXllcigpKTsKICAgICAg
ICAgbV9yb290Q29udGVudHNMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXI+KGxheWVyKTsKICAgICB9Ci0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxp
bmdMYXllcikpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7
CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXll
cio+KHNjcm9sbGluZ1N0YXRlTm9kZS5jb3VudGVyU2Nyb2xsaW5nTGF5ZXIoKSk7CiAgICAgICAg
IG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25M
YXllcj4obGF5ZXIpOwogICAgIH0KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5
ZXIpKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SW5zZXRDbGlwTGF5ZXIpKSB7CiAgICAgICAgIGF1
dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGlu
Z1N0YXRlTm9kZS5pbnNldENsaXBMYXllcigpKTsKICAgICAgICAgbV9pbnNldENsaXBMYXllciA9
IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKICAgICB9Ci0gICAg
aWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6OkNvbnRlbnRTaGFkb3dMYXllcikpIHsKKyAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpDb250ZW50U2hhZG93TGF5ZXIpKSB7CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGlj
X2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1MYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5jb250ZW50
U2hhZG93TGF5ZXIoKSk7CiAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gZG93bmNhc3Q8
Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwogICAgIH0KLSAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6SGVhZGVyTGF5ZXIpKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SGVhZGVyTGF5ZXIp
KSB7CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxhdGZvcm1M
YXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5oZWFkZXJMYXllcigpKTsKICAgICAgICAgbV9oZWFk
ZXJMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKICAg
ICB9Ci0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkgeworICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkZvb3RlckxheWVyKSkgewogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0
PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIo
KSk7CiAgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlv
bkxheWVyPihsYXllcik7CiAgICAgfQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29u
c3QgU2NybwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNoaWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBi
ZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVwZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3Jl
IGFueSBzY3JvbGxpbmcgaGFwcGVucy4KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uKSkgeworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KSkgewogICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRv
JiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9s
bERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3Np
dGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRh
LmNsYW1waW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
UHJveHlOb2RlLmNwcAppbmRleCBkYTY0NWEzYTcyMjUzZDdiMTA2YTA3OGI3ZDdmNTAxNGQxNWM0
YmE4Li43NDk4ZDFhYmNmNDdjNzNmZmU0N2YxN2JiZGE0NjVhMjZiN2M1YTY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwCkBAIC01
NSwxMiArNTUsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU6
OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2wKIHsKICAgICBjb25zdCBTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlJiBvdmVyZmxvd1Byb3h5U3RhdGVOb2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oc3RhdGVO
b2RlKTsKIAotICAgIGlmIChvdmVyZmxvd1Byb3h5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgeworICAgIGlmIChvdmVyZmxvd1Byb3h5U3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpM
YXllcikpIHsKICAgICAgICAgYXV0byogbGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0
Zm9ybUxheWVyKj4oc3RhdGVOb2RlLmxheWVyKCkpOwogICAgICAgICBtX2xheWVyID0gZG93bmNh
c3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwogICAgIH0KIAotICAgIGlmIChv
dmVyZmxvd1Byb3h5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpPdmVyZmxvd1Njcm9sbGluZ05vZGUpKQorICAgIGlmIChv
dmVyZmxvd1Byb3h5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpPdmVyZmxvd1Njcm9sbGluZ05vZGUpKQogICAgICAgICBtX292ZXJmbG93
U2Nyb2xsaW5nTm9kZUlEID0gb3ZlcmZsb3dQcm94eVN0YXRlTm9kZS5vdmVyZmxvd1Njcm9sbGlu
Z05vZGUoKTsKIAogICAgIGlmIChtX292ZXJmbG93U2Nyb2xsaW5nTm9kZUlEKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEu
Y3BwCmluZGV4IDY0ZDhhNThjMTQxZWM1Nzg5ZGFlYzBiODljMTdmN2M5OWU1OGIxMDQuLjNiMzI0
ODZmNGNjNzc2YTYyZWI1YTg2YTdlNzYwZDIxOWQxYmI4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTCiAgICAgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKHN0YXRlTm9kZSk7
CiAKICAgICBjb25zdCBhdXRvJiBvdmVyZmxvd1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwotICAgIGlmIChvdmVyZmxv
d1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKKyAgICBpZiAob3ZlcmZsb3dTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlcXVlc3Rl
ZFNjcm9sbFBvc2l0aW9uKSkgewogICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogICAg
ICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRTY3JvbGxEYXRhID0gb3ZlcmZsb3dTdGF0ZU5vZGUu
cmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAgICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxE
YXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVl
c3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGUuY3BwCmluZGV4IDhiYTYxZTYzZDRmZjU5Yzc2OTQxNTVkYmRmYWFkYzRlYTIwMzk0OTcu
LjMyODcxNTFlZmIxNGY2ZTg0ZTkzNjYzNTNlNzI3Y2IxZjJmNDQyZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9u
ZWROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKQEAgLTU2LDE1ICs1NiwxNSBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTdGF0ZQogewogICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5v
ZGUmIHBvc2l0aW9uZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVBvc2l0aW9u
ZWROb2RlPihzdGF0ZU5vZGUpOwogCi0gICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgaWYgKHBvc2l0
aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OkxheWVyKSkgewogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29z
aWE6OlBsYXRmb3JtTGF5ZXIqPihwb3NpdGlvbmVkU3RhdGVOb2RlLmxheWVyKCkpOwogICAgICAg
ICBtX2xheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwog
ICAgIH0KIAotICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
cykpCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSkK
ICAgICAgICAgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyA9IHBvc2l0aW9uZWRTdGF0
ZU5vZGUucmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsKIAotICAgIGlmIChwb3NpdGlv
bmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWRO
b2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENv
bnN0cmFpbnREYXRhKSkKICAgICAgICAgbV9jb25zdHJhaW50cyA9IHBvc2l0aW9uZWRTdGF0ZU5v
ZGUubGF5b3V0Q29uc3RyYWludHMoKTsKIAogICAgIGlmICghbV9yZWxhdGVkT3ZlcmZsb3dTY3Jv
bGxpbmdOb2Rlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCmlu
ZGV4IDQwZWZkNGM5MTBlMjA5OTc3Y2Y0OTRmYTNlNmY5NjAxMWJmNDE3YWUuLmFkMGNjYzZjMWVk
MGFjYWVkZWRiMDY0MGFmNjg5ZDhhMTRkYmE5ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUKIHsK
ICAgICBhdXRvJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgeworICAgIGlmIChzdGlja3lTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okxh
eWVyKSkgewogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXIqPihzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKSk7CiAgICAgICAgIG1fbGF5ZXIgPSBk
b3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CiAgICAgfQogCi0gICAg
aWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENv
bnN0cmFpbnRzKSkKICAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3
cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRleCAyMWE1NWQ1NjZmY2EyMTMzMDI0OTYxMzI0
NDBiMjZjZGVjMmJiNWIxLi5hOGFmMjIwNWRjNTc3ODVjOGU0MzA0OTdiYzUyMGQ5OTViMDVkZDY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rp
b24uY3BwCkBAIC0xMDAsNiArMTAwLDYxIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVxdWVzdGVkU2Nyb2xsRGF0YT4gewogCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAorbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2Nyb2xs
aW5nU3RhdGVOb2RlOjpQcm9wZXJ0eT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHksCisgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyLAorICAgICAgICBX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDaGlsZE5vZGVzLAorICAgICAg
ICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVNp
emUsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlRvdGFs
Q29udGVudHNTaXplLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpSZWFjaGFibGVDb250ZW50c1NpemUsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbFBvc2l0aW9uLAorICAgICAgICBXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxPcmlnaW4sCisgICAgICAgIFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhUGFyYW1zLAorICAg
ICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZWFzb25zRm9yU3lu
Y2hyb25vdXNTY3JvbGxpbmcsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLAorICAgICAgICBXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsCisgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNl
dHMsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTbmFwT2Zmc2V0UmFuZ2VzLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsCisgICAgICAgIFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNl
dEluZGV4LAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
dXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OklzTW9uaXRvcmluZ1doZWVsRXZlbnRzLAorICAgICAgICBX
ZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXll
ciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xs
ZWRDb250ZW50c0xheWVyLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIsCisgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlBhaW50ZXJGb3JTY3JvbGxi
YXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkZyYW1l
U2NhbGVGYWN0b3IsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OkV2ZW50VHJhY2tpbmdSZWdpb24sCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlJvb3RDb250ZW50c0xheWVyLAorICAgICAgICBXZWJDb3JlOjpTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIsCisgICAgICAg
IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okluc2V0Q2xpcExheWVyLAor
ICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb250ZW50U2hh
ZG93TGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkhlYWRlckhlaWdodCwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6Rm9vdGVySGVpZ2h0LAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpIZWFkZXJMYXllciwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6Rm9vdGVyTGF5ZXIsCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cywKKyAgICAgICAgV2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG9wQ29udGVudEluc2V0LAorICAg
ICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGaXhlZEVsZW1lbnRz
TGF5b3V0UmVsYXRpdmVUb0ZyYW1lLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpWaXN1YWxWaWV3cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCwK
KyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6QXN5bmNGcmFt
ZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpMYXlvdXRWaWV3cG9ydCwKKyAgICAgICAgV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TWluTGF5b3V0Vmlld3BvcnRPcmlnaW4sCisgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1heExheW91dFZpZXdw
b3J0T3JpZ2luLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSwKKyAgICAgICAgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMsCisgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENvbnN0cmFp
bnREYXRhLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpW
aWV3cG9ydENvbnN0cmFpbnRzLAorICAgICAgICBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpPdmVyZmxvd1Njcm9sbGluZ05vZGUKKyAgICA+OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKIHVzaW5nIG5hbWVzcGFjZSBJUEM7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxT
Y3JvbGxpbmdTdGF0ZU5vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xs
aW5nU3RhdGVOb2RlJiBub2RlKQpAQCAtMTA5LDE5ICsxNjQsMTkgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFNjcm9sbGluZ1N0YXRlTm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
Y3JvbGxpbmcKICAgICBlbmNvZGVyIDw8IG5vZGUucGFyZW50Tm9kZUlEKCk7CiAgICAgZW5jb2Rl
ciA8PCBub2RlLmNoYW5nZWRQcm9wZXJ0aWVzKCk7CiAgICAgCi0gICAgaWYgKG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgIGlmIChub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikpCiAg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEPihub2RlLmxheWVyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3Rh
dGVOb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbGluZ1N0YXRlTm9kZSYgbm9k
ZSkKIHsKICAgICAvLyBub2RlVHlwZSwgc2Nyb2xsaW5nTm9kZUlEIGFuZCBwYXJlbnROb2RlSUQg
aGF2ZSBhbHJlYWR5IGJlZW4gZGVjb2RlZCBieSB0aGUgY2FsbGVyIGluIG9yZGVyIHRvIGNyZWF0
ZSB0aGUgbm9kZS4KLSAgICBTY3JvbGxpbmdTdGF0ZU5vZGU6OkNoYW5nZWRQcm9wZXJ0aWVzIGNo
YW5nZWRQcm9wZXJ0aWVzOworICAgIE9wdGlvblNldDxTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5PiBjaGFuZ2VkUHJvcGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNoYW5nZWRQ
cm9wZXJ0aWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbm9kZS5zZXRDaGFuZ2Vk
UHJvcGVydGllcyhjaGFuZ2VkUHJvcGVydGllcyk7Ci0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgaWYgKG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheWVyKSkgewogICAg
ICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE0MywzMyArMTk4LDMzIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOwogICAgIAot
ICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbGFibGVBcmVhU2l6ZSwgc2Nyb2xsYWJsZUFyZWFTaXplKQotICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplLCB0
b3RhbENvbnRlbnRzU2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUsIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCi0gICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxP
cmlnaW4pCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbGFibGVBcmVhU2l6ZSwgc2Nyb2xsYWJsZUFyZWFTaXplKQorICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRl
bnRzU2l6ZSwgdG90YWxDb250ZW50c1NpemUpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgcmVhY2hh
YmxlQ29udGVudHNTaXplKQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb24pCisgICAgU0NS
T0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9y
aWdpbiwgc2Nyb2xsT3JpZ2luKQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgU0NS
T0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRh
bFNuYXBPZmZzZXRzLCBob3Jpem9udGFsU25hcE9mZnNldHMpCi0gICAgU0NST0xMSU5HX05PREVf
RU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cywg
dmVydGljYWxTbmFwT2Zmc2V0cykKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdlcywgaG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNhbFNuYXBP
ZmZzZXRSYW5nZXMpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgpCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCBjdXJy
ZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBob3Jpem9u
dGFsU25hcE9mZnNldHMpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIHZlcnRpY2FsU25hcE9mZnNldHMp
CisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcykK
KyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCB2ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJl
bnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4LCBjdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5kZXgsIGN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KQogI2VuZGlmCi0gICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsIHNjcm9sbGFibGVBcmVhUGFy
YW1ldGVycykKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6U2Nyb2xsYWJsZUFyZWFQYXJhbXMsIHNjcm9sbGFibGVBcmVhUGFyYW1ldGVycykK
ICAgICAvLyBVSS1zaWRlIGNvbXBvc2l0aW5nIGNhbid0IGRvIHN5bmNocm9ub3VzIHNjcm9sbGlu
ZyBzbyBkb24ndCBlbmNvZGUgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zLgotICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNj
cm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRTY3JvbGxEYXRhKQorICAgIFNDUk9MTElOR19OT0RFX0VO
Q09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
biwgcmVxdWVzdGVkU2Nyb2xsRGF0YSkKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAg
ICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0
eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0
PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxDb250YWluZXJMYXll
cigpKTsKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisgICAgaWYgKG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKTsKIAotICAgIGlm
IChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQ+KG5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKCkpOwogCi0gICAgaWYg
KG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTY3JvbGxiYXJMYXllcikp
CiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEPihub2RlLnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSk7CiB9CiAKQEAgLTE3NywzMCAr
MjMyLDMwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKTsKIAotICAg
IFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
RnJhbWVTY2FsZUZhY3RvciwgZnJhbWVTY2FsZUZhY3RvcikKLSAgICBTQ1JPTExJTkdfTk9ERV9F
TkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdp
b24sIGV2ZW50VHJhY2tpbmdSZWdpb25zKQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERV9FTlVN
KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMsIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cykKLSAgICBTQ1JPTExJTkdfTk9ERV9F
TkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckhlaWdodCwgaGVh
ZGVySGVpZ2h0KQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Rm9vdGVySGVpZ2h0LCBmb290ZXJIZWlnaHQpCi0gICAgU0NST0xMSU5H
X05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpUb3BDb250ZW50
SW5zZXQsIHRvcENvbnRlbnRJbnNldCkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUsIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpCi0gICAgU0NST0xMSU5H
X05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpWaXN1YWxWaWV3
cG9ydElzU21hbGxlclRoYW5MYXlvdXRWaWV3cG9ydCwgdmlzdWFsVmlld3BvcnRJc1NtYWxsZXJU
aGFuTGF5b3V0Vmlld3BvcnQpCisgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkZyYW1lU2NhbGVGYWN0b3IsIGZyYW1lU2NhbGVGYWN0b3IpCisg
ICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkV2
ZW50VHJhY2tpbmdSZWdpb24sIGV2ZW50VHJhY2tpbmdSZWdpb25zKQorICAgIFNDUk9MTElOR19O
T0RFX0VOQ09ERV9FTlVNKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkJlaGF2aW9yRm9y
Rml4ZWRFbGVtZW50cywgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKQorICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIZWFkZXJIZWln
aHQsIGhlYWRlckhlaWdodCkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVySGVpZ2h0LCBmb290ZXJIZWlnaHQpCisgICAgU0NST0xM
SU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlRvcENvbnRlbnRJ
bnNldCwgdG9wQ29udGVudEluc2V0KQorICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1l
LCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKQorICAgIFNDUk9MTElOR19OT0RF
X0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaXN1YWxWaWV3cG9ydElzU21h
bGxlclRoYW5MYXlvdXRWaWV3cG9ydCwgdmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0
Vmlld3BvcnQpCiAgICAgLy8gQXN5bmNGcmFtZU9yT3ZlcmZsb3dTY3JvbGxpbmdFbmFibGVkIGlz
IG5vdCByZWxldmFudCBmb3IgVUktc2lkZSBjb21wb3NpdGluZy4KLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkxheW91dFZpZXdwb3J0
LCBsYXlvdXRWaWV3cG9ydCkKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6Ok1pbkxheW91dFZpZXdwb3J0T3JpZ2luLCBtaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbikKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGU6Ok1heExheW91dFZpZXdwb3J0T3JpZ2luLCBtYXhMYXlvdXRWaWV3
cG9ydE9yaWdpbikKLSAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6Ok92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplLCBvdmVycmlkZVZpc3Vh
bFZpZXdwb3J0U2l6ZSkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6TGF5b3V0Vmlld3BvcnQsIGxheW91dFZpZXdwb3J0KQorICAgIFNDUk9M
TElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpNaW5MYXlvdXRW
aWV3cG9ydE9yaWdpbiwgbWluTGF5b3V0Vmlld3BvcnRPcmlnaW4pCisgICAgU0NST0xMSU5HX05P
REVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok1heExheW91dFZpZXdwb3J0
T3JpZ2luLCBtYXhMYXlvdXRWaWV3cG9ydE9yaWdpbikKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNP
REUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNp
emUsIG92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xs
aW5nTGF5ZXIpKQorICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQogICAgICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb3Vu
dGVyU2Nyb2xsaW5nTGF5ZXIoKSk7CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkKKyAgICBp
ZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PEdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5pbnNldENsaXBMYXllcigpKTsKIAotICAgIGlm
IChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6Q29udGVudFNoYWRvd0xheWVyKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q29udGVudFNoYWRvd0xheWVyKSkKICAgICAg
ICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+
KG5vZGUuY29udGVudFNoYWRvd0xheWVyKCkpOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpSb290Q29udGVudHNMYXll
cikpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlJvb3RDb250ZW50c0xheWVyKSkKICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUucm9vdENvbnRlbnRzTGF5
ZXIoKSk7CiB9CiAKQEAgLTIxNyw3ICsyNzIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcgog
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGU+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Nj
cm9sbFByb3h5Tm9kZSYgbm9kZSkKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0
IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOwotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlOjpPdmVyZmxvd1Njcm9sbGluZ05v
ZGUsIG92ZXJmbG93U2Nyb2xsaW5nTm9kZSkKKyAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLCBvdmVyZmxv
d1Njcm9sbGluZ05vZGUpCiB9CiAKICNkZWZpbmUgU0NST0xMSU5HX05PREVfREVDT0RFKHByb3Bl
cnR5LCB0eXBlLCBzZXR0ZXIpIFwKQEAgLTI0MSw0NCArMjk2LDQ0IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgU2Nyb2xsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdT
dGF0ZU5vZGUmPihub2RlKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVh
U2l6ZSwgRmxvYXRTaXplLCBzZXRTY3JvbGxhYmxlQXJlYVNpemUpOwotICAgIFNDUk9MTElOR19O
T0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXpl
LCBGbG9hdFNpemUsIHNldFRvdGFsQ29udGVudHNTaXplKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUs
IEZsb2F0U2l6ZSwgc2V0UmVhY2hhYmxlQ29udGVudHNTaXplKTsKLSAgICBTQ1JPTExJTkdfTk9E
RV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbiwgRmxv
YXRQb2ludCwgc2V0U2Nyb2xsUG9zaXRpb24pOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbiwgSW50UG9pbnQsIHNldFNj
cm9sbE9yaWdpbik7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OlNjcm9sbGFibGVBcmVhU2l6ZSwgRmxvYXRTaXplLCBzZXRTY3JvbGxhYmxl
QXJlYVNpemUpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRUb3RhbENvbnRlbnRz
U2l6ZSk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRSZWFjaGFibGVDb250
ZW50c1NpemUpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpTY3JvbGxQb3NpdGlvbiwgRmxvYXRQb2ludCwgc2V0U2Nyb2xsUG9zaXRpb24p
OworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5
OjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwogI2lmIEVOQUJMRShD
U1NfU0NST0xMX1NOQVApCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+LCBzZXRI
b3Jpem9udGFsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4s
IHNldFZlcnRpY2FsU25hcE9mZnNldHMpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzLCBWZWN0
b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8ZmxvYXQ+Piwgc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMpCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzLCBWZWN0b3I8U2Nyb2xsT2Zmc2V0UmFuZ2U8Zmxv
YXQ+Piwgc2V0VmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKQotICAgIFNDUk9MTElOR19OT0RFX0RF
Q09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9m
ZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCk7
Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
Q3VycmVudFZlcnRpY2FsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudFZlcnRp
Y2FsU25hcFBvaW50SW5kZXgpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldHMsIFZlY3RvcjxmbG9hdD4s
IHNldEhvcml6b250YWxTbmFwT2Zmc2V0cyk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU25hcE9mZnNldHMsIFZlY3Rvcjxm
bG9hdD4sIHNldFZlcnRpY2FsU25hcE9mZnNldHMpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09E
RShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU25hcE9mZnNldFJhbmdl
cywgVmVjdG9yPFNjcm9sbE9mZnNldFJhbmdlPGZsb2F0Pj4sIHNldEhvcml6b250YWxTbmFwT2Zm
c2V0UmFuZ2VzKQorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6
OlByb3BlcnR5OjpWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMsIFZlY3RvcjxTY3JvbGxPZmZzZXRS
YW5nZTxmbG9hdD4+LCBzZXRWZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMpCisgICAgU0NST0xMSU5H
X05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9u
dGFsU25hcE9mZnNldEluZGV4LCB1bnNpZ25lZCwgc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCwgdW5zaWduZWQsIHNldEN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KTsKICNlbmRpZgotICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhUGFyYW1z
LCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMsIHNldFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyk7
Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24sIFJlcXVlc3RlZFNjcm9sbERhdGEsIHNldFJlcXVlc3Rl
ZFNjcm9sbERhdGEpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcywgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzLCBzZXRTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMpOworICAgIFNDUk9MTElOR19OT0RFX0RF
Q09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
biwgUmVxdWVzdGVkU2Nyb2xsRGF0YSwgc2V0UmVxdWVzdGVkU2Nyb2xsRGF0YSk7CiAKLSAgICBp
ZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxDb250YWluZXJMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAg
ICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBub2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVySUQpOwogICAgIH0KIAot
ICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsZWRDb250ZW50c0xheWVy
KSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbGF5ZXJJRDsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgbm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5ZXJJRCk7CiAg
ICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKSB7CisgICAgaWYgKG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okhvcml6
b250YWxTY3JvbGxiYXJMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5vZGUuc2V0SG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyKGxheWVySUQpOwogICAgIH0KIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTY3JvbGxiYXJM
YXllcikpIHsKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTY3JvbGxiYXJMYXllcikpIHsKICAgICAgICAgR3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTMsNDIgKzM0
OCw0MiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGljX2Nhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJj4obm9kZSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OkZyYW1lU2NhbGVGYWN0b3IsIGZsb2F0LCBzZXRGcmFtZVNj
YWxlRmFjdG9yKTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU6OkV2ZW50VHJhY2tpbmdSZWdpb24sIEV2ZW50VHJhY2tpbmdSZWdpb25z
LCBzZXRFdmVudFRyYWNraW5nUmVnaW9ucyk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFX0VO
VU0oU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkJlaGF2aW9yRm9yRml4ZWRFbGVt
ZW50cywgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzLCBzZXRTY3JvbGxCZWhhdmlvckZv
ckZpeGVkRWxlbWVudHMpOwotCi0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJIZWlnaHQsIGludCwgc2V0SGVhZGVySGVpZ2h0
KTsKLSAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OkZvb3RlckhlaWdodCwgaW50LCBzZXRGb290ZXJIZWlnaHQpOwotICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VG9wQ29udGVu
dEluc2V0LCBmbG9hdCwgc2V0VG9wQ29udGVudEluc2V0KTsKLSAgICBTQ1JPTExJTkdfTk9ERV9E
RUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUsIGJvb2wsIHNldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUpOwotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJUaGFuTGF5b3V0Vmlld3BvcnQsIGJv
b2wsIHNldFZpc3VhbFZpZXdwb3J0SXNTbWFsbGVyVGhhbkxheW91dFZpZXdwb3J0KTsKLSAgICBT
Q1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okxh
eW91dFZpZXdwb3J0LCBGbG9hdFJlY3QsIHNldExheW91dFZpZXdwb3J0KQotICAgIFNDUk9MTElO
R19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6TWluTGF5b3V0
Vmlld3BvcnRPcmlnaW4sIEZsb2F0UG9pbnQsIHNldE1pbkxheW91dFZpZXdwb3J0T3JpZ2luKQot
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4sIEZsb2F0UG9pbnQsIHNldE1heExheW91dFZpZXdw
b3J0T3JpZ2luKQotICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6T3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUsIE9wdGlvbmFsPEZsb2F0
U2l6ZT4sIHNldE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKQotCi0gICAgaWYgKG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVy
U2Nyb2xsaW5nTGF5ZXIpKSB7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkZyYW1lU2NhbGVGYWN0b3IsIGZsb2F0LCBzZXRGcmFtZVNjYWxl
RmFjdG9yKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6RXZlbnRUcmFja2luZ1JlZ2lvbiwgRXZlbnRUcmFja2luZ1JlZ2lvbnMsIHNldEV2
ZW50VHJhY2tpbmdSZWdpb25zKTsKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREVfRU5VTShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpCZWhhdmlvckZvckZpeGVkRWxlbWVudHMsIFNjcm9s
bEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cywgc2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1l
bnRzKTsKKworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpIZWFkZXJIZWlnaHQsIGludCwgc2V0SGVhZGVySGVpZ2h0KTsKKyAgICBTQ1JPTExJ
TkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVySGVpZ2h0
LCBpbnQsIHNldEZvb3RlckhlaWdodCk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlRvcENvbnRlbnRJbnNldCwgZmxvYXQsIHNldFRvcENv
bnRlbnRJbnNldCk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9k
ZTo6UHJvcGVydHk6OkZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUsIGJvb2wsIHNl
dEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUpOworICAgIFNDUk9MTElOR19OT0RF
X0RFQ09ERShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaXN1YWxWaWV3cG9ydElzU21h
bGxlclRoYW5MYXlvdXRWaWV3cG9ydCwgYm9vbCwgc2V0VmlzdWFsVmlld3BvcnRJc1NtYWxsZXJU
aGFuTGF5b3V0Vmlld3BvcnQpOworICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpMYXlvdXRWaWV3cG9ydCwgRmxvYXRSZWN0LCBzZXRMYXlvdXRW
aWV3cG9ydCkKKyAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6TWluTGF5b3V0Vmlld3BvcnRPcmlnaW4sIEZsb2F0UG9pbnQsIHNldE1pbkxheW91
dFZpZXdwb3J0T3JpZ2luKQorICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpNYXhMYXlvdXRWaWV3cG9ydE9yaWdpbiwgRmxvYXRQb2ludCwgc2V0
TWF4TGF5b3V0Vmlld3BvcnRPcmlnaW4pCisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9s
bGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplLCBPcHRp
b25hbDxGbG9hdFNpemU+LCBzZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZSkKKworICAgIGlm
IChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBub2RlLnNldENvdW50ZXJTY3JvbGxp
bmdMYXllcihsYXllcklEKTsKICAgICB9CiAKLSAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkgewor
ICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpJbnNldENsaXBMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5vZGUuc2V0SW5zZXRDbGlwTGF5ZXIo
bGF5ZXJJRCk7CiAgICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hhZG93TGF5ZXIpKSB7CisgICAg
aWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6
OkNvbnRlbnRTaGFkb3dMYXllcikpIHsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJJRCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5vZGUuc2V0Q29udGVudFNoYWRvd0xh
eWVyKGxheWVySUQpOwogICAgIH0KIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Um9vdENvbnRlbnRzTGF5ZXIpKSB7Cisg
ICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlJvb3RDb250ZW50c0xheWVyKSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQgbGF5ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OSw3ICs0MTQsNyBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGljX2Nhc3Q8U2Nyb2xs
aW5nU3RhdGVOb2RlJj4obm9kZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTQ1JP
TExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZTo6
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLCBTY3JvbGxpbmdOb2RlSUQsIHNldE92ZXJmbG93U2Nyb2xs
aW5nTm9kZSk7CisgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6Ok92ZXJmbG93U2Nyb2xsaW5nTm9kZSwgU2Nyb2xsaW5nTm9kZUlELCBzZXRPdmVy
Zmxvd1Njcm9sbGluZ05vZGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNjcsNyArNDIy
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcm8KIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOwogICAgIAotICAgIGlmIChub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmlld3BvcnRDb25z
dHJhaW50cykpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICBlbmNvZGVyIDw8
IG5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCkBAIC0zNzYsNyArNDMxLDcgQEAgYm9v
bCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNjcm9sbGluZ1MKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpY19jYXN0
PFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpW
aWV3cG9ydENvbnN0cmFpbnRzKSkgeworICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkgewogICAg
ICAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBkZWNvZGVkVmFsdWU7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVjb2RlZFZhbHVlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTM5MCw3ICs0NDUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNjcgogewog
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJj4obm9k
ZSk7CiAgICAgCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZpZXdwb3J0Q29uc3RyYWlu
dHMpKQogICAgICAgICBlbmNvZGVyIDw8IG5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwogfQog
CkBAIC0zOTksNyArNDU0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxpbmcKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRpY19jYXN0PFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpIHsKKyAgICBpZiAo
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Vmll
d3BvcnRDb25zdHJhaW50cykpIHsKICAgICAgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzIGRlY29kZWRWYWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVk
VmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDEzLDEwICs0NjgsMTAgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSY+KG5vZGUpOwogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OlJlbGF0ZWRPdmVyZmxvd1Nj
cm9sbGluZ05vZGVzKSkKKyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpKQogICAg
ICAgICBlbmNvZGVyIDw8IG5vZGUucmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsKIAot
ICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWRO
b2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENvbnN0cmFpbnREYXRhKSkK
ICAgICAgICAgZW5jb2RlciA8PCBub2RlLmxheW91dENvbnN0cmFpbnRzKCk7CiB9CiAKQEAgLTQy
NSwxNCArNDgwLDE0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTY3JvbGxpbmdTdGF0ZVBvc2l0aW9u
ZWROb2RlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aWNfY2FzdDxTY3JvbGxpbmdTdGF0ZU5vZGUmPihub2RlKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmIChub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykpIHsK
KyAgICBpZiAobm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpKSB7CiAgICAgICAgIFZlY3RvcjxT
Y3JvbGxpbmdOb2RlSUQ+IGRlY29kZWRWYWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkZWNvZGVkVmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBub2Rl
LnNldFJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKFdURk1vdmUoZGVjb2RlZFZhbHVlKSk7
CiAgICAgfQogCi0gICAgaWYgKG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
UG9zaXRpb25lZE5vZGU6OkxheW91dENvbnN0cmFpbnREYXRhKSkgeworICAgIGlmIChub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXlvdXRDb25z
dHJhaW50RGF0YSkpIHsKICAgICAgICAgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzIGRlY29k
ZWRWYWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVkVmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjA1LDQ1ICs2NjAsNDUgQEAgYm9vbCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogCiBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQogewot
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkKKyAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVNpemUpKQogICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInNjcm9sbGFibGUtYXJlYS1zaXplIiwgbm9kZS5zY3JvbGxhYmxlQXJl
YVNpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNT
aXplKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSkp
CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidG90YWwtY29udGVudHMtc2l6ZSIsIG5vZGUudG90
YWxDb250ZW50c1NpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBu
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSkpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hh
YmxlQ29udGVudHNTaXplKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyZWFjaGFibGUtY29u
dGVudHMtc2l6ZSIsIG5vZGUucmVhY2hhYmxlQ29udGVudHNTaXplKCkpOwogCi0gICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbikpCisgICAgaWYgKCFjaGFuZ2VkUHJv
cGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpQcm9wZXJ0eTo6U2Nyb2xsUG9zaXRpb24pKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNj
cm9sbC1wb3NpdGlvbiIsIG5vZGUuc2Nyb2xsUG9zaXRpb24oKSk7CiAKLSAgICBpZiAoIWNoYW5n
ZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGll
c09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9w
ZXJ0eTo6U2Nyb2xsT3JpZ2luKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwtb3Jp
Z2luIiwgbm9kZS5zY3JvbGxPcmlnaW4oKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgIGlmICghY2hhbmdlZFByb3BlcnRp
ZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgewogICAgICAgICBjb25zdCBhdXRvJiBy
ZXF1ZXN0ZWRTY3JvbGxEYXRhID0gbm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbiIsIHJlcXVlc3RlZFNj
cm9sbERhdGEuc2Nyb2xsUG9zaXRpb24pOwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlcXVl
c3RlZC1zY3JvbGwtcG9zaXRpb24taXMtcHJvZ3JhbWF0aWMiLCByZXF1ZXN0ZWRTY3JvbGxEYXRh
LnNjcm9sbFR5cGUpOwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlcXVlc3RlZC1zY3JvbGwt
cG9zaXRpb24tY2xhbXBpbmciLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKICAgICB9
CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkK
KyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpCiAg
ICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsLWNvbnRhaW5lci1sYXllciIsIHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxDb250YWluZXJM
YXllcigpKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVu
dHNMYXllcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsZWRDb250ZW50
c0xheWVyKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxlZC1jb250ZW50cy1sYXll
ciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3Jv
bGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cykpCisgICAg
aWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSkKICAgICAg
ICAgdHMuZHVtcFByb3BlcnR5KCJob3Jpem9udGFsIHNuYXAgb2Zmc2V0cyIsIG5vZGUuaG9yaXpv
bnRhbFNuYXBPZmZzZXRzKCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwg
bm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpWZXJ0
aWNhbFNuYXBPZmZzZXRzKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNh
bFNuYXBPZmZzZXRzKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2ZXJ0aWNhbCBzbmFwIG9m
ZnNldHMiLCBub2RlLnZlcnRpY2FsU25hcE9mZnNldHMoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKKyAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkp
CiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VycmVudCBob3Jpem9udGFsIHNuYXAgcG9pbnQg
aW5kZXgiLCBub2RlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSk7CiAKLSAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkN1cnJlbnRWZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkp
CisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25hcE9mZnNl
dEluZGV4KSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjdXJyZW50IHZlcnRpY2FsIHNuYXAg
cG9pbnQgaW5kZXgiLCBub2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogI2Vu
ZGlmCiB9CkBAIC02NTYsMTAgKzcxMSwxMCBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYgogewog
ICAgIGR1bXAodHMsIHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSY+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOwogICAgIAotICAgIGlmICghY2hhbmdl
ZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yKSkKKyAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5v
ZGU6OlByb3BlcnR5OjpGcmFtZVNjYWxlRmFjdG9yKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJmcmFtZS1zY2FsZS1mYWN0b3IiLCBub2RlLmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAKLSAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RXZlbnRUcmFja2luZ1JlZ2lvbikpIHsKKyAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpFdmVudFRyYWNraW5nUmVnaW9uKSkgewogICAg
ICAgICB7CiAgICAgICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAg
ICAgICAgICAgIHRzIDw8ICJhc3luY2hyb25vdXMtZXZlbnQtdHJhY2tpbmctcmVnaW9uIjsKQEAg
LTY4NCwyOCArNzM5LDI4IEBAIHN0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBub2RlLCBiCiAgICAgLy8gRklYTUU6
IGR1bXAgc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzCiAgICAgLy8gRklYTUU6IGR1bXAgc2Nyb2xs
QmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzCiAKLSAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25s
eSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6SGVhZGVySGVpZ2h0KSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBu
b2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIZWFk
ZXJIZWlnaHQpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhlYWRlci1oZWlnaHQiLCBub2Rl
LmhlYWRlckhlaWdodCgpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpG
b290ZXJIZWlnaHQpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkZvb3RlckhlaWdo
dCkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZm9vdGVyLWhlaWdodCIsIG5vZGUuZm9vdGVy
SGVpZ2h0KCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlRvcENvbnRl
bnRJbnNldCkpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG9wQ29udGVudEluc2V0
KSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ0b3AtY29udGVudC1pbnNldCIsIG5vZGUudG9w
Q29udGVudEluc2V0KCkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZy
YW1lU2NhbGVGYWN0b3IpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkZyYW1lU2Nh
bGVGYWN0b3IpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZyYW1lLXNjYWxlLWZhY3RvciIs
IG5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKTsKIAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNP
bmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpJbnNldENsaXBMYXllcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
SW5zZXRDbGlwTGF5ZXIpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNsaXAtaW5zZXQtbGF5
ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaW5z
ZXRDbGlwTGF5ZXIoKSkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNv
bnRlbnRTaGFkb3dMYXllcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q29udGVu
dFNoYWRvd0xheWVyKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjb250ZW50LXNoYWRvdy1s
YXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5j
b250ZW50U2hhZG93TGF5ZXIoKSkpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU6OkhlYWRlckxheWVyKSkKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIZWFkZXJM
YXllcikpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaGVhZGVyLWxheWVyIiwgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmhlYWRlckxheWVyKCkpKTsK
IAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXllcikpCisgICAg
aWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVyTGF5ZXIpKQogICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImZvb3Rlci1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRD4obm9kZS5mb290ZXJMYXllcigpKSk7CiB9CiAgICAgCkBAIC03MTYsMjggKzc3
MSwyOCBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYgbm9kZQogCiBzdGF0aWMgdm9pZCBkdW1wKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlJiBu
b2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAgICBpZiAoIWNoYW5nZWRQcm9w
ZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU92ZXJm
bG93U2Nyb2xsUHJveHlOb2RlOjpPdmVyZmxvd1Njcm9sbGluZ05vZGUpKQorICAgIGlmICghY2hh
bmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6Ok92ZXJmbG93U2Nyb2xsaW5nTm9kZSkpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgib3ZlcmZsb3ctc2Nyb2xsaW5nLW5vZGUiLCBub2RlLm92ZXJmbG93U2Nyb2xs
aW5nTm9kZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5
KQogewotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAg
ICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKICAgICAg
ICAgdHMgPDwgbm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGR1
bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgbm9kZSwg
Ym9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGll
c09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6
OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8
IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZp
ZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICB0cyA8PCBub2RlLnZpZXdwb3J0Q29uc3RyYWlu
dHMoKTsKIH0KIAogc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xs
aW5nU3RhdGVQb3NpdGlvbmVkTm9kZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkp
CiB7Ci0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6UmVsYXRlZE92ZXJmbG93U2Nyb2xs
aW5nTm9kZXMpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlJlbGF0ZWRPdmVyZmxv
d1Njcm9sbGluZ05vZGVzKSkKICAgICAgICAgdHMgPDwgbm9kZS5yZWxhdGVkT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlcygpOwogCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6TGF5b3V0Q29u
c3RyYWludERhdGEpKQorICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkxheW91dENvbnN0
cmFpbnREYXRhKSkKICAgICAgICAgdHMgPDwgbm9kZS5sYXlvdXRDb25zdHJhaW50cygpOwogfQog
CkBAIC03NDUsNyArODAwLDcgQEAgc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm8KIHsKICAgICB0cy5k
dW1wUHJvcGVydHkoInR5cGUiLCBub2RlLm5vZGVUeXBlKCkpOwogCi0gICAgaWYgKCFjaGFuZ2Vk
UHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVO
b2RlOjpMYXllcikpCisgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6TGF5ZXIpKQogICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPihub2RlLmxheWVyKCkpKTsKICAgICAKICAgICBzd2l0Y2ggKG5vZGUu
bm9kZVR5cGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHkuY3BwCmluZGV4IDEyNWY1ZjFiY2RjMGUwM2JjNTliNTRjOTM3YzQzZGY5NzIzYWYwYjAu
LmRhNTE5NTViYjAzOGY4YmY3NzI4ZGVjNTYxNmJlNjBlZmJiZWViMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5v
ZGVMYXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJgogICAgIHVzaW5nIFBsYXRmb3JtTGF5ZXJJRCA9
IEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRDsKIAogICAgIGZvciAoYXV0byYgY3Vyck5v
ZGUgOiBzdGF0ZVRyZWUubm9kZU1hcCgpLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChjdXJyTm9k
ZS0+aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgICAg
ICBpZiAoY3Vyck5vZGUtPmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpMYXllcikpCiAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVl
SG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IGN1cnJOb2RlLT5sYXllcigpIH0pKTsK
IAogICAgICAgICBzd2l0Y2ggKGN1cnJOb2RlLT5ub2RlVHlwZSgpKSB7CkBAIC0xMTEsNTAgKzEx
MSw1MCBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0
ZU5vZGVMYXllcnMoU2Nyb2xsaW5nU3RhdGVUcmVlJgogICAgICAgICBjYXNlIFNjcm9sbGluZ05v
ZGVUeXBlOjpTdWJmcmFtZTogewogICAgICAgICAgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlPigqY3Vyck5vZGUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2V0U2Nyb2xsQ29udGFpbmVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklE
KFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxDb250YWluZXJMYXll
cigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5
ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkK
ICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xh
eWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICAgICAgICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OkNvdW50ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xs
aW5nU3RhdGVOb2RlLnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihsYXllclRyZWVIb3N0LmxheWVy
Rm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxp
bmdMYXllcigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xp
cExheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6Okluc2V0Q2xpcExheWVyKSkKICAg
ICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0SW5zZXRDbGlwTGF5ZXIobGF5ZXJU
cmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5p
bnNldENsaXBMYXllcigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNv
bnRlbnRTaGFkb3dMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb250ZW50U2hh
ZG93TGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRDb250ZW50
U2hhZG93TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNj
cm9sbGluZ1N0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKSB9KSk7CiAKICAgICAgICAgICAg
IC8vIEZJWE1FOiB3ZSBzaG91bGQgbmV2ZXIgaGF2ZSBoZWFkZXIgYW5kIGZvb3RlciBsYXllcnMg
Y29taW5nIGZyb20gdGhlIFdlYlByb2Nlc3MuCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6SGVhZGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SGVhZGVyTGF5ZXIp
KQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRIZWFkZXJMYXllcihsYXll
clRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2Rl
LmhlYWRlckxheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9v
dGVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Rm9vdGVyTGF5ZXIpKQogICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRGb290ZXJMYXllcihsYXllclRyZWVI
b3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLmZvb3Rl
ckxheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6VmVydGljYWxT
Y3JvbGxiYXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpWZXJ0aWNhbFNjcm9s
bGJhckxheWVyKSkKICAgICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0VmVydGlj
YWxTY3JvbGxiYXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklE
IHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSB9KSk7CiAKLSAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpKQor
ICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKSkKICAg
ICAgICAgICAgICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdT
dGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6Um9vdENvbnRlbnRzTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Um9vdENvbnRlbnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0
YXRlTm9kZS5zZXRSb290Q29udGVudHNMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxh
dGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnJvb3RDb250ZW50c0xheWVyKCkgfSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTY3JvbGxpbmdO
b2RlVHlwZTo6T3ZlcmZsb3c6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKmN1cnJOb2RlKTsKLSAgICAgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9k
ZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZv
cm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbENvbnRhaW5lckxheWVyKCkgfSkp
OwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCisg
ICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQogICAgICAg
ICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxlZENvbnRlbnRzTGF5ZXIobGF5
ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9k
ZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSB9KSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlOjpWZXJ0aWNhbFNjcm9sbGJhckxheWVyKSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVy
dHk6OlZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0
YXRlTm9kZS5zZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJ
RChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTY3JvbGxiYXJM
YXllcigpIH0pKTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxT
Y3JvbGxiYXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU2Ny
b2xsYmFyTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5
ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoKSB9KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lv
cy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDE4ZjY3YWY5YTZm
MTU1YjNlYWVjNTM2ODJlMDgzZDIwNzFlZjIxMWMuLjYyYWQ5ODUwNjllMjEyM2FkYzM2YmM3ODFj
NzZmNTk3NjFiNzg0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTY5LDE3ICs2OSwxNyBAQCB2b2lkIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OmNvbm5lY3RTdGF0ZU5vZGVMYXllcnMoU2Nyb2xs
aW5nU3RhdGVUcmVlJgogICAgIHVzaW5nIFBsYXRmb3JtTGF5ZXJJRCA9IEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRDsKIAogICAgIGZvciAoYXV0byYgY3Vyck5vZGUgOiBzdGF0ZVRyZWUu
bm9kZU1hcCgpLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChjdXJyTm9kZS0+aGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQorICAgICAgICBpZiAoY3Vyck5vZGUt
Pmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpMYXllcikp
CiAgICAgICAgICAgICBjdXJyTm9kZS0+c2V0TGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklE
KFBsYXRmb3JtTGF5ZXJJRCB7IGN1cnJOb2RlLT5sYXllcigpIH0pKTsKICAgICAgICAgCiAgICAg
ICAgIHN3aXRjaCAoY3Vyck5vZGUtPm5vZGVUeXBlKCkpIHsKICAgICAgICAgY2FzZSBTY3JvbGxp
bmdOb2RlVHlwZTo6T3ZlcmZsb3c6IHsKICAgICAgICAgICAgIFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKmN1cnJOb2RlKTsKIAotICAgICAgICAgICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xs
aW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpCiAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNldFNjcm9sbENvbnRhaW5lckxheWVyKGxheWVyVHJlZUhvc3QubGF5ZXJGb3JJRChQ
bGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIo
KSB9KSk7CiAKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVy
KSkKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbGVkQ29udGVudHNMYXllcikpCiAg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nU3RhdGVOb2RlLnNldFNjcm9sbGVkQ29udGVudHNMYXll
cihsYXllclRyZWVIb3N0LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3Rh
dGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpIH0pKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9OwpAQCAtODcsMjAgKzg3LDIwIEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTo6Y29ubmVjdFN0YXRlTm9kZUxheWVycyhTY3JvbGxpbmdTdGF0ZVRyZWUmCiAg
ICAgICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZyYW1lOiB7CiAgICAgICAgICAgICBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93
bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KCpjdXJyTm9kZSk7CiAKLSAg
ICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQorICAgICAgICAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICAgICAgICAg
IHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxDb250YWluZXJMYXllcihsYXllclRyZWVIb3N0
LmxheWVyRm9ySUQoUGxhdGZvcm1MYXllcklEIHsgc2Nyb2xsaW5nU3RhdGVOb2RlLnNjcm9sbENv
bnRhaW5lckxheWVyKCkgfSkpOwogCi0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVk
Q29udGVudHNMYXllcikpCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxlZENvbnRl
bnRzTGF5ZXIpKQogICAgICAgICAgICAgICAgIHNjcm9sbGluZ1N0YXRlTm9kZS5zZXRTY3JvbGxl
ZENvbnRlbnRzTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBsYXRmb3JtTGF5ZXJJRCB7
IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSB9KSk7CiAKLSAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQorICAgICAg
ICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGxheWVyVHJl
ZUhvc3QubGF5ZXJGb3JJRChQbGF0Zm9ybUxheWVySUQgeyBzY3JvbGxpbmdTdGF0ZU5vZGUuY291
bnRlclNjcm9sbGluZ0xheWVyKCkgfSkpOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogd2Ugc2hv
dWxkIG5ldmVyIGhhdmUgaGVhZGVyIGFuZCBmb290ZXIgbGF5ZXJzIGNvbWluZyBmcm9tIHRoZSBX
ZWJQcm9jZXNzLgotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkK
KyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkhlYWRlckxheWVyKSkKICAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdTdGF0ZU5vZGUuc2V0SGVhZGVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZv
cklEKFBsYXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5oZWFkZXJMYXllcigpIH0p
KTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKKyAgICAg
ICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6UHJvcGVydHk6OkZvb3RlckxheWVyKSkKICAgICAgICAgICAgICAgICBzY3Jv
bGxpbmdTdGF0ZU5vZGUuc2V0Rm9vdGVyTGF5ZXIobGF5ZXJUcmVlSG9zdC5sYXllckZvcklEKFBs
YXRmb3JtTGF5ZXJJRCB7IHNjcm9sbGluZ1N0YXRlTm9kZS5mb290ZXJMYXllcigpIH0pKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVSZW1vdGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0KaW5kZXggZmZh
Njk0OWFhYzg2OWM4ZGI3MWEwN2MzNDI3ZTI4OTBhYzgxNWJiMi4uZTU1M2E5NDA0YjEyNzgxODhk
NjZkOWM2ZGZiYWIxMWE2NTBlNjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5tbQpAQCAtNTcsMTYg
KzU3LDE2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTCiAgICAgCiAgICAgY29uc3QgYXV0byYg
c2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU+KHN0YXRlTm9kZSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9s
bGluZ0xheWVyKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKQog
ICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihz
Y3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkpOwogCi0gICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIZWFkZXJMYXll
cikpCiAgICAgICAgIG1faGVhZGVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xs
aW5nU3RhdGVOb2RlLmhlYWRlckxheWVyKCkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZv
b3RlckxheWVyKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpGb290ZXJMYXllcikpCiAgICAgICAgIG1f
Zm9vdGVyTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLmZv
b3RlckxheWVyKCkpOwogCi0gICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKKyAgICBp
ZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3Bl
cnR5OjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAgICAgaWYgKHNjcm9sbENvbnRhaW5l
ckxheWVyKCkpCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IG1ha2VVbmlx
dWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRoaXMpOwogICAgICAg
ICBlbHNlCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjCiAgICAgfQog
CiAgICAgLy8gVXBkYXRlIHRoZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2
ZSBiZWVuIHVwZGF0ZWQsIGJlY2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdXBkYXRlZCB0aGVpciBj
b25zdHJhaW50cyBiZWZvcmUgYW55IHNjcm9sbGluZyBoYXBwZW5zLgotICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6UmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24pKSB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9s
bERhdGEgPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAg
ICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRT
Y3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbQppbmRleCBkMGJkZDNjNTdkYmJjYmVmMDcwZTg1MWFmZTA0ZWVlNmFh
YjU3ZDk5Li5mY2FjOWZkZWJiMDhkOWExMDhmYTA1MjEyNTdkNTA2ZDI1MDJkZTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tCkBAIC01OCw3ICs1OCw3IEBAIFVJU2Nyb2xsVmlldyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsVmlldygpIGNvbnN0CiAKIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKIHsKLSAgICBp
ZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKKyAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxDb250YWluZXJMYXll
cikpCiAgICAgICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5yZXNldFNjcm9sbFZpZXdEZWxl
Z2F0ZSgpOwogCiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6Y29tbWl0
U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCmluZGV4IDgxMGFk
Y2Q0ZTUzZjg4YTA3NTQwMjNlODk4MGE4MDFhN2MxMWZmY2MuLjRjMjg4ZTRiYWMxYjVlNDU5ZGVj
NzRmYjNlM2I1YzhiNWJkY2Q4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTIyMSw3ICsyMjEsNyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnJlc2V0U2Nyb2xs
Vmlld0RlbGVnYXRlKCkKIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQogewotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
Q29udGFpbmVyTGF5ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbENvbnRhaW5lckxheWVy
KSkKICAgICAgICAgbV9zY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxp
bmdTdGF0ZU5vZGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CiB9CiAKQEAgLTIyOSwxNCArMjI5
LDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0
U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiB7CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
dXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOwogCi0gICAgaWYg
KHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRv
dGFsQ29udGVudHNTaXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNT
aXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24pCi0gICAgICAgIHx8IHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxPcmlnaW4pKSB7CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6U2Nyb2xsQ29udGFp
bmVyTGF5ZXIpCisgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VG90YWxDb250ZW50c1NpemUpCisgICAg
ICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpQcm9wZXJ0eTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQorICAgICAgICB8fCBzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlNjcm9sbFBvc2l0aW9uKQorICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlNjcm9sbE9yaWdp
bikpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJU2Ny
b2xsVmlldyAqc2Nyb2xsVmlldyA9IHRoaXMtPnNjcm9sbFZpZXcoKTsKLSAgICAgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0Rl
bGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhb
W1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKIApAQCAtMjQ5LDEzICsyNDksMTMgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgU2Nyb2wKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgcmVjb21wdXRlSW5zZXRzID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKTsKLSAgICAg
ICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUpKSB7CisgICAgICAgIGJvb2wg
cmVjb21wdXRlSW5zZXRzID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpUb3RhbENvbnRlbnRzU2l6ZSk7CisgICAgICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6UHJvcGVydHk6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkpIHsKICAgICAgICAgICAgIHNj
cm9sbFZpZXcuY29udGVudFNpemUgPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVhY2hhYmxlQ29udGVu
dHNTaXplKCk7CiAgICAgICAgICAgICByZWNvbXB1dGVJbnNldHMgPSB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQorICAgICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlBy
b3BlcnR5OjpTY3JvbGxPcmlnaW4pKQogICAgICAgICAgICAgcmVjb21wdXRlSW5zZXRzID0gdHJ1
ZTsKIAogICAgICAgICBpZiAocmVjb21wdXRlSW5zZXRzKSB7CkBAIC0yNzQsMTQgKzI3NCwxNCBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRl
QWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkK
ICAgICAvLyBGSVhNRTogSWYgb25seSBvbmUgYXhpcyBzbmFwcyBpbiAyRCBzY3JvbGxpbmcsIHRo
ZSBvdGhlciBheGlzIHdpbGwgZGVjZWxlcmF0ZSBmYXN0IGFzIHdlbGwuIElzIHRoaXMgd2hhdCB3
ZSB3YW50PwotICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzKSB8fCBzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6VmVydGljYWxTbmFwT2Zmc2V0cykpIHsKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9u
dGFsU25hcE9mZnNldHMpIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTbmFwT2Zmc2V0cykpIHsKICAg
ICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIHNjcm9sbFZpZXcoKS5k
ZWNlbGVyYXRpb25SYXRlID0gc2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygp
LnNpemUoKSB8fCBzY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLnNpemUoKSA/
IFVJU2Nyb2xsVmlld0RlY2VsZXJhdGlvblJhdGVGYXN0IDogVUlTY3JvbGxWaWV3RGVjZWxlcmF0
aW9uUmF0ZU5vcm1hbDsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIH0K
ICNlbmRpZgogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpIHsKKyAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZU5vZGU6OlByb3BlcnR5OjpTY3JvbGxhYmxlQXJlYVBhcmFtcykpIHsKICAgICAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9
IHRoaXMtPnNjcm9sbFZpZXcoKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sCiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICB9CiAKLSAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgeworICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJv
cGVydHk6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkgewogICAgICAgICBjb25zdCBhdXRvJiBy
ZXF1ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERh
dGEoKTsKICAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbFRvKHJlcXVlc3RlZFNjcm9sbERh
dGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsVHlwZSwgcmVxdWVz
dGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7CiAgICAgICAgIHNjcm9sbGluZ1RyZWUoKS5zZXROZWVk
c0FwcGx5TGF5ZXJQb3NpdGlvbnNBZnRlckNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAK
aW5kZXggNDNlZDczNWQ0MjEyMDEzM2VlYmZhOWY3NDMxN2YzYWJhZjY1MDI1Mi4uMjZjYzBjMjg3
OGI5NjQ5OGU1OWQ5MzU3NmZiNWEwODU4NzJkOTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlUmVtb3RlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVNYWMuY3Bw
CkBAIC01NSwxMCArNTUsMTAgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlTWFjOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFMKICAgICBjb25zdCBh
dXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIAogICAgIC8vIEZJWE1FOiBQdXNoIHRvIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM/Ci0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlZl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXIpKQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OlZlcnRpY2FsU2Nyb2xs
YmFyTGF5ZXIpKQogICAgICAgICBtX3Njcm9sbGVyUGFpci0+dmVydGljYWxTY3JvbGxlcigpLnNl
dEhvc3RMYXllcihzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLnZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIoKSkpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okhvcml6b250
YWxTY3JvbGxiYXJMYXllcikpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxlclBhaXItPmhvcml6b250YWxTY3JvbGxlcigpLnNl
dEhvc3RMYXllcihzdGF0aWNfY2FzdDxDQUxheWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6
b250YWxTY3JvbGxiYXJMYXllcigpKSk7CiAKICAgICBtX3Njcm9sbGVyUGFpci0+dXBkYXRlVmFs
dWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcAppbmRleCA3NDNkYTNlZTY4YjkyNjc0
ZTA1ZDk1ZDcwZTVkZWM1MmRlZGMxYzU0Li5iNjNkYzM4ODhlNjg5ZjJmMDg0NmNlODFlNzY4ODM5
NWFhNjkyOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZVJlbW90ZU1hYy5jcHAKQEAgLTU2LDEwICs1Niwx
MCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVSZW1vdGVNYWM6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29ucwogICAgIGNvbnN0IGF1dG8mIHNjcm9sbGluZ1N0
YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihz
dGF0ZU5vZGUpOwogCiAgICAgLy8gRklYTUU6IFB1c2ggdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU1hYz8KLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6VmVydGljYWxTY3Jv
bGxiYXJMYXllcikpCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6VmVydGljYWxTY3JvbGxiYXJMYXllcikp
CiAgICAgICAgIG1fc2Nyb2xsZXJQYWlyLT52ZXJ0aWNhbFNjcm9sbGVyKCkuc2V0SG9zdExheWVy
KHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTY3JvbGxi
YXJMYXllcigpKSk7CiAKLSAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyKSkKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIp
KQogICAgICAgICBtX3Njcm9sbGVyUGFpci0+aG9yaXpvbnRhbFNjcm9sbGVyKCkuc2V0SG9zdExh
eWVyKHN0YXRpY19jYXN0PENBTGF5ZXIqPihzY3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKCkpKTsKIAogICAgIG1fc2Nyb2xsZXJQYWlyLT51cGRhdGVWYWx1ZXMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>