<?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>116887</bug_id>
          
          <creation_ts>2013-05-28 14:27:15 -0700</creation_ts>
          <short_desc>Freeze when loading a particular page on washingtonpost.com with NetworkProcess enabled</short_desc>
          <delta_ts>2016-04-28 19:50:02 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157153</see_also>
          <bug_file_loc>http://www.washingtonpost.com/wp-srv/special/sports/grade-robert-griffin-iii</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>117036</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>894516</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 14:27:15 -0700</bug_when>
    <thetext>WebProcess freezes when opening &lt;http://www.washingtonpost.com/wp-srv/special/sports/grade-robert-griffin-iii&gt;

This happens because we load a certain resource using a slightly different URL, and get dramatically different responses:

http://data.washingtonpost.com/features/ratings/?q={%22grade_rg3_game_id%22:%22%22,%22username%22:%22d1367869948322%22}

vs.

http://data.washingtonpost.com/features/ratings/?q=%7B%22grade_rg3_game_id%22:%22%22,%22username%22:%22d1367869948322%22%7D

The two NSURLs are almost indistinguishable via API. The only way to get to original unencoded string is through CFURLGetBytes. So, this is what WebKit2 IPC should use, not CFURLGetString.

&lt;rdar://problem/12965959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894537</commentid>
    <comment_count>1</comment_count>
      <attachid>203093</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 14:51:36 -0700</bug_when>
    <thetext>Created attachment 203093
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894540</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-28 14:54:37 -0700</bug_when>
    <thetext>Attachment 203093 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http/tests/uri/curly-braces-escaping-expected.txt&apos;, u&apos;LayoutTests/http/tests/uri/curly-braces-escaping.html&apos;, u&apos;LayoutTests/http/tests/uri/resources/echo-uri.php&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/KURL.cpp&apos;, u&apos;Source/WebCore/platform/KURL.h&apos;, u&apos;Source/WebCore/platform/cf/CFURLExtras.cpp&apos;, u&apos;Source/WebCore/platform/cf/CFURLExtras.h&apos;, u&apos;Source/WebCore/platform/cf/KURLCFNet.cpp&apos;, u&apos;Source/WebCore/platform/mac/KURLMac.mm&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceErrorCF.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/API/c/cf/WKURLCF.cpp&apos;, u&apos;Source/WebKit2/Shared/cf/ArgumentCodersCF.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/KURL.h:200:  The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/cf/KURLCFNet.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894548</commentid>
    <comment_count>3</comment_count>
      <attachid>203093</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-28 15:03:05 -0700</bug_when>
    <thetext>Comment on attachment 203093
proposed fix

Attachment 203093 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/710321</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894549</commentid>
    <comment_count>4</comment_count>
      <attachid>203093</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-28 15:04:16 -0700</bug_when>
    <thetext>Comment on attachment 203093
proposed fix

Attachment 203093 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/700103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894550</commentid>
    <comment_count>5</comment_count>
      <attachid>203093</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-28 15:06:04 -0700</bug_when>
    <thetext>Comment on attachment 203093
proposed fix

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

r=me, but the patch as-is breaks builds on all non-CF platforms so please do fix that

&gt; Source/WebCore/platform/KURL.h:29
&gt; +#include &quot;CFURLExtras.h&quot;

This is a platform-specific header file so it should not be included unconditionally. I think it’s hard to know where to put the URLCharBuffer typedef. Maybe we can repeat it in both CFURLExtras.h and in KURL.h.

&gt;&gt; Source/WebCore/platform/KURL.h:200
&gt;&gt; +    void copyToBuffer(URLCharBuffer&amp; buffer) const;
&gt; 
&gt; The parameter name &quot;buffer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the style bot on this.

&gt; Source/WebCore/platform/cf/CFURLExtras.h:36
&gt; +typedef Vector&lt;char, 512&gt; URLCharBuffer;

This is not CF-specific and needs to be compiled on platform that can’t compile CFURLRef.

&gt; Source/WebCore/platform/cf/KURLCFNet.cpp:44
&gt; +    // FIXME: Why is it OK to ignore base URL here?

The normal way to deal with this would be to call CFURLCopyAbsoluteURL. I think the comment should say something more like:

    // FIXME: Should we call CFURLCopyAbsoluteURL here?

&gt; Source/WebCore/platform/mac/KURLMac.mm:62
&gt; +        // We use the toll-free bridge between NSURL and CFURL to
&gt; +        // create a CFURLRef supporting both empty and null values.

What does “a CFURLRef supporting both empty and null values” mean?

&gt; Source/WebKit2/Shared/cf/ArgumentCodersCF.cpp:532
&gt; +        // FIXME: This loses base URL, which seems incorrect.

I would say “discards” rather than “loses”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894553</commentid>
    <comment_count>6</comment_count>
      <attachid>203093</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-28 15:08:30 -0700</bug_when>
    <thetext>Comment on attachment 203093
proposed fix

Attachment 203093 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/691132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894554</commentid>
    <comment_count>7</comment_count>
      <attachid>203097</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 15:09:07 -0700</bug_when>
    <thetext>Created attachment 203097
with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894556</commentid>
    <comment_count>8</comment_count>
      <attachid>203097</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-28 15:12:24 -0700</bug_when>
    <thetext>Comment on attachment 203097
with build fixes

Attachment 203097 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/741078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894562</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 15:17:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Source/WebCore/platform/cf/KURLCFNet.cpp:44
&gt; &gt; +    // FIXME: Why is it OK to ignore base URL here?
&gt; 
&gt; The normal way to deal with this would be to call CFURLCopyAbsoluteURL. I think the comment should say something more like:

I don&apos;t think that we can do this. As I found when working on this patch, the main thing to know about CFURL is to not use any accessors other than CFURLGetBytes, as everything else works on a normalized string.

I&apos;ll change the FIXME to suggest that we may want to recursively apply base URL.

&gt; &gt; Source/WebCore/platform/mac/KURLMac.mm:62
&gt; &gt; +        // We use the toll-free bridge between NSURL and CFURL to
&gt; &gt; +        // create a CFURLRef supporting both empty and null values.
&gt; 
&gt; What does “a CFURLRef supporting both empty and null values” mean?

I don&apos;t understand it in enough detail to change (it&apos;s a pre-existing one that someone else added). It certainly has something to do with a comment we have in WebKit2 code, &quot;CFURL can&apos;t hold an empty URL, unlike NSURL&quot;, but that is also dubious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894571</commentid>
    <comment_count>10</comment_count>
      <attachid>203100</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 15:29:10 -0700</bug_when>
    <thetext>Created attachment 203100
with more build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894578</commentid>
    <comment_count>11</comment_count>
      <attachid>203100</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-28 15:41:05 -0700</bug_when>
    <thetext>Comment on attachment 203100
with more build fixes

Attachment 203100 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/659058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894579</commentid>
    <comment_count>12</comment_count>
      <attachid>203100</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-05-28 15:41:20 -0700</bug_when>
    <thetext>Comment on attachment 203100
with more build fixes

Attachment 203100 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/724194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894597</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-05-28 16:26:51 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r150853&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203093</attachid>
            <date>2013-05-28 14:51:36 -0700</date>
            <delta_ts>2013-05-28 15:09:07 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>washingtonpost.txt</filename>
            <type>text/plain</type>
            <size>30152</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTA1LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEZyZWV6ZSB3aGVuIGxvYWRp
bmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3RvbnBvc3QuY29tIHdpdGggTmV0d29ya1By
b2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjk2NTk1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAorCisgICAgICAgIFRoZSBpc3N1ZSB3YXMg
dGhhdCBXZWJLaXQgdXNlZCBhbiBpbmNvcnJlY3QgYWNjZXNzb3IgdG8gZ2V0IGEgc3RyaW5nIG91
dCBvZiBDRlVSTCwKKyAgICAgICAgdW5saWtlIFdlYkNvcmUuCisKKyAgICAgICAgQ2VudHJhbGl6
ZWQgY29kZSBmb3IgY29udmVydGluZyBiZXR3ZWVuIENGVVJMcyBhbmQgc3RyaW5ncyBpbiBhIHBs
YWNlIHRoYXQgV2ViS2l0CisgICAgICAgIGNhbiB1c2UgZGlyZWN0bHkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEtlZXBpbmcgdGhpbmdzIGJ1aWxk
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6IChXZWJDb3JlOjpLVVJMOjpjb3B5
VG9CdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgVXBkYXRlZCBm
b3IgYSBuZXcgdHlwZWRlZiBuYW1lLiBUaGUgY29kZSB3YXMgdXNpbmcgVmVjdG9yPGNoYXIsIDUx
Mj4gYW5kIENoYXJCdWZmZXIKKyAgICAgICAgaW5jb25zaXN0ZW50bHksIGFuZCBub3cgVVJMcyB1
c2UgVVJMQ2hhckJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VVJMQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNy
ZWF0ZUNGVVJMKToKKyAgICAgICAgRXh0cmFjdGVkIGNvZGUgZm9yIENGVVJMIHN0cmluZyBtYW5p
cHVsYXRpb24gdGhhdCBpcyBub3QgbG9nY2FsbHkgcGFydCBvZiBLVVJMLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKTog
VXNlIHRoZSBuZXcgZ2V0VVJMQnl0ZXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpLVVJM
OjpvcGVyYXRvciBOU1VSTCAqKTogQWRkZWQgYSBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6Y3JlYXRlQ0ZVUkwpOiBBZGRlZCBhIGNvbW1lbnQsIGFuZCB1cGRhdGVkIGZvciBuZXcg
bmFtZXMgYW5kCisgICAgICAgIHNpZ25hdHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0
Zm9ybUxhenlJbml0KToKKyAgICAgICAgQWRkZWQgYSBGSVhNRS4gV2UgYXJlIHN0aWxsIHVzaW5n
IENGVVJMR2V0U3RyaW5nIGhlcmUuIFRoZSBkaWZmaWN1bHR5IGlzIGdldHRpbmcKKyAgICAgICAg
ZW5jb2RpbmdzIHJpZ2h0LgorCiAyMDEzLTA1LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIER1bXBSZW5kZXJUcmVlIGF0IGNvbS5hcHBsZS5X
ZWJDb3JlOiBXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3Vl
ICsgMTU0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTUwODA2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcs
OCBAQCBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjFzaG91bGRQcmludEV4CiBfX1pON1dlYkNv
cmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgogX19aTjdXZWJDb3Jl
MTFTUUxSZXN1bHRPa0UKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJM
CitfX1pON1dlYkNvcmUxMWdldFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKK19f
Wk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJOM1dURjZWZWN0b3JJY0xtNTEyRU5T
M18xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTFpQmVhbUN1cnNvckV2CiBfX1pO
N1dlYkNvcmUxMW1lbW9yeUNhY2hlRXYKIF9fWk43V2ViQ29yZTExc3RhcnRPZkxpbmVFUktOU18x
NVZpc2libGVQb3NpdGlvbkUKQEAgLTcxNyw2ICs3MTksNyBAQCBfX1pON1dlYkNvcmUyMVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZv
RVA1TlNVUkwKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0aW4xRW5jb2RpbmdFdgorX19aTjdX
ZWJDb3JlMjFjcmVhdGVDRlVSTEZyb21CdWZmZXJFUEtjbVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29y
ZTIxZmluZEV2ZW50V2l0aEtleVN0YXRlRVBOU181RXZlbnRFCiBfX1pON1dlYkNvcmUyMWdldENh
Y2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5m
b0UKIF9fWk43V2ViQ29yZTIxaXNCYWNrRm9yd2FyZExvYWRUeXBlRU5TXzEzRnJhbWVMb2FkVHlw
ZUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk3MzAsNiArMjk3MzAsMTQgQEAKIAkJCQlO
YW1lPSJjZiIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxjZlxDRlVSTEV4dHJhcy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cY2Zc
RmlsZVN5c3RlbUNGLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTUwODA2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDIyMiw2ICs0MjIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXHdpblxXaGVlbEV2ZW50V2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaWRnZXRXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0Yu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1
ZmZlckNGLmNwcCIgLz4KQEAgLTExNjA5LDYgKzExNjEwLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dz
VG91Y2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXENGVVJM
RXh0cmFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5c
Q2VydGlmaWNhdGVDRldpbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXENvbG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lv
biAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTUxNzUsNiArNTE3NSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXENocm9tZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxjZjwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cY2ZcU2hhcmVkQnVmZmVyQ0YuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyNjc5LDYgKzEyNjgyLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIj4KICAg
ICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2ZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRyYXMuaCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlmaWNhdGVDRldpbi5oIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Zcd2luPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MTksNiArNTQxOSw4IEBA
CiAJCUUxQTVGOTlCMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTVGOTlB
MEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
RTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3
MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IH07CiAJCUUxQTY0M0ZE
MEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0ZDMEVDMDk3QTAwMDc3
OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJRTFBOEU1NjYxNzU1
MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5jcHAgKi87IH07CisJCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBQ0FGNEMwRTc5MUFBRjAwODdEMTJCIC8q
IERPTU1lc3NhZ2VQb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBQ0FGNEEwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1lc3NhZ2VQb3J0Lm1tICov
OyB9OwogCQlFMUFDQUY0RDBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVzc2FnZVBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUNBRjRCMEU3OTFB
QUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9ydC5oICovOyB9OwogCQlFMUFEMTJENjEyOTVEMEJE
MDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRDEyRDUxMjk1RDBCRDAwQUNB
OTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTEyMjAx
LDYgKzEyMjAzLDggQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyog
RmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVMaXN0LmlkbDsgcGF0aCA9
IGZpbGVhcGkvRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVBQjE0RTlFMkVGMDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnkuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9y
eUVudHJ5LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUFDMTRFOUUyRjgwMDQ0OUUxMyAv
KiBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzk1LDYgKzEzMzk5LDggQEAKIAkJMUFFNDJGNjcwQUE0
QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICov
LAorCQkJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJ
CTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTFB
OTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAogCQkJCTI5QTMwOUFC
MTU2MUM5OUIwMEJCRDhFNSAvKiBSdW5Mb29wQ0YuY3BwICovLApAQCAtMjA5MDgsNiArMjA5MTQs
NyBAQAogCQkJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUQ3QkNGQTE0NDRBRjdEMDA3MDYxOUMgLyogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQzA4Q0YzMTVGOTQxRkQw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFB
OEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTIyQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTIzMjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDEwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE5MSw2ICsy
NjE5OCw3IEBACiAJCQkJMUFGOEUxMzMxMjU2NUE0NDAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjhFMUMzMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNl
cnZlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGOTQ1RUNCMTYxRjdGMzYwMDk3MUJD
OCAvKiBQc2V1ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQThFNTY2MTc1NTJC
MkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMDgxRkVG
RjE2QjBBMkI2MDA4QUFBN0EgLyogUHVibGljU3VmZml4TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRENjg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZp
c2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgYm9vbCBLVVJMOjppc0hpZXJhcmNoaWNhbCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwogfQog
Ci12b2lkIEtVUkw6OmNvcHlUb0J1ZmZlcihDaGFyQnVmZmVyJiBidWZmZXIpIGNvbnN0Cit2b2lk
IEtVUkw6OmNvcHlUb0J1ZmZlcihVUkxDaGFyQnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFy
YWN0ZXJzIGluIHRoZSBzdHJpbmchCiAgICAgLy8gVGhhdCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJM
LCB3aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9yIGludmFsaWQgVVJMcy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDE1MDgwNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBL
VVJMX2gKICNkZWZpbmUgS1VSTF9oCiAKKyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xOTYsNyArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
dmFsaWRhdGUoKTsKICAgICBzdGF0aWMgYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNv
bnN0IGNoYXIqKTsKICAgICB2b2lkIGluaXQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFRleHRFbmNvZGluZyYpOwotICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1
MTI+JiBidWZmZXIpIGNvbnN0OworICAgIHZvaWQgY29weVRvQnVmZmVyKFVSTENoYXJCdWZmZXIm
IGJ1ZmZlcikgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIGdpdmVuIFVSTC4gVGhlIG9yaWdp
bmFsU3RyaW5nIHBhcmFtZXRlciBhbGxvd3MgZm9yIGFuCiAgICAgLy8gb3B0aW1pemF0aW9uOiBX
aGVuIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0cmluZywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJDRlVSTEV4dHJhcy5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplLCBDRlVSTFJlZiBiYXNl
VVJMKQoreworICAgIC8vIE5PVEU6IFdlIHVzZSBVVEYtOCBoZXJlIHNpbmNlIHRoaXMgZW5jb2Rp
bmcgaXMgdXNlZCB3aGVuIGNvbXB1dGluZyBzdHJpbmdzIHdoZW4gcmV0dXJuaW5nIFVSTCBjb21w
b25lbnRzCisgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGlj
aAorICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZvcm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4g
YSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2UgU2hpZnQtSklTLCBzbyB3ZSBmYWxsIGJhY2sKKyAg
ICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbi0xIGluIHRob3NlIGNhc2VzLgorICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgc2l6ZSwga0NGU3Ry
aW5nRW5jb2RpbmdVVEY4LCBiYXNlVVJMLCB0cnVlKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygwLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCBiYXNlVVJMLCB0cnVlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmwsIFVSTENoYXJCdWZmZXImIHJlc3VsdCkKK3sK
KyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAsIDApOworICAg
IHJlc3VsdC5yZXNpemUoYnl0ZXNMZW5ndGgpOworICAgIENGSW5kZXggZmluYWxMZW5ndGggPSBD
RlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KHJlc3VsdC5kYXRhKCkp
LCBieXRlc0xlbmd0aCk7CisgICAgQVNTRVJUX1VOVVNFRChmaW5hbExlbmd0aCwgZmluYWxMZW5n
dGggPT0gYnl0ZXNMZW5ndGgpOworfQorCit2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmIHVybCwg
Q1N0cmluZyYgcmVzdWx0KQoreworICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5
dGVzKHVybCwgMCwgMCk7CisgICAgY2hhciogYnl0ZXM7CisgICAgcmVzdWx0ID0gQ1N0cmluZzo6
bmV3VW5pbml0aWFsaXplZChieXRlc0xlbmd0aCwgYnl0ZXMpOworICAgIENGSW5kZXggZmluYWxM
ZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5dGVz
KSwgYnl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVu
Z3RoID09IGJ5dGVzTGVuZ3RoKTsKK30KKworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0ZV
UkxFeHRyYXNfaAorI2RlZmluZSBDRlVSTEV4dHJhc19oCisKKyNpbmNsdWRlIDxzeXMvcGFyYW0u
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBVUkxDaGFyQnVmZmVyOworCitSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90LCBDRlVSTFJlZiBiYXNl
VVJMID0gMCk7Cit2b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBVUkxDaGFyQnVmZmVyJik7Cit2
b2lkIGdldFVSTEJ5dGVzKENGVVJMUmVmLCBDU3RyaW5nJik7CisKK30KKworI2VuZGlmIC8vIENG
VVJMRXh0cmFzX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0NGVVJMRXh0cmFzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCww
ICsxICMjCituYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNTA4MDYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNiArMjcsMTMgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NGVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwotCi1S
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVy
Jik7Ci0KIEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQogewogICAgIGlmICghdXJsKSB7CkBAIC00
NCwyNCArNDEsMTAgQEAgS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAs
IDApOwotICAgIFZlY3RvcjxjaGFyLCA1MTI+IGJ1ZmZlcihieXRlc0xlbmd0aCArIDEpOwotICAg
IGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKLSAgICBDRlVSTEdldEJ5dGVzKHVybCwgcmVpbnRl
cnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOwotICAgIGJ5dGVzW2J5dGVz
TGVuZ3RoXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnl0ZXMpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpCi17Ci0g
ICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2luY2UgdGhpcyBlbmNvZGluZyBpcyB1c2Vk
IHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAg
ICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBp
cyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8g
Y291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVu
dCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdlIGZhbGwgYmFjawotICAgIC8vIG9udG8g
dXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMuCi0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIDAsIHRydWUpKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNp
emUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIDAsIHRydWUpKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhl
cmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVz
KTsKKyAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykg
JiYgIShQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkKQEAgLTcwLDcgKzUzLDcgQEAgUmV0YWlu
UHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVSTCgpIAogICAgIC8vIEZJWE1FOiBXaGF0IHNo
b3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxzPwogICAgIC8vIEN1cnJlbnRseSBpdCB0
aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5n
IGluIHRoYXQgY2FzZSwKICAgICAvLyB3aGljaCBpcyBjbGVhcmx5IHdyb25nLgotICAgIENoYXJC
dWZmZXIgYnVmZmVyOworICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwogICAgIGNvcHlUb0J1ZmZl
cihidWZmZXIpOwogICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCShyZXZpc2lvbiAxNTA4
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTYgKzI2LDEyIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIktV
UkwuaCIKIAorI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKICNpbXBvcnQgIkZvdW5kYXRpb25FeHRy
YXMuaCIKLSNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NGVVJMLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXVEY7CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwotZXh0ZXJuIFJldGFp
blB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1
ZmZlcik7Ci0KIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKIHsKICAgICBpZiAoIXVybCkgewpAQCAt
NDMsMzQgKzM5LDM0IEBAIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIDAsIDApOwotICAgIFZlY3RvcjxjaGFyLCA1MTI+IGJ1
ZmZlcihieXRlc0xlbmd0aCArIDEpOwotICAgIGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKLSAg
ICBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHJlaW50ZXJw
cmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVuZ3RoKTsKLSAgICBieXRlc1tieXRlc0xl
bmd0aF0gPSAnXDAnOwotICAgIHBhcnNlKGJ5dGVzKTsKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0
IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAg
Z2V0VVJMQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4odXJsKSwgdXJsQnl0ZXMpOwor
ICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKIEtVUkw6Om9wZXJhdG9yIE5TVVJMICoo
KSBjb25zdAogeworICAgIC8vIENyZWF0aW5nIGEgdG9sbC1mcmVlIGJyaWRnZWQgQ0ZVUkwsIGJl
Y2F1c2UgYSByZWFsIE5TVVJMIHdvdWxkIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5n
LgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hlbiByb3VuZC10cmlwcGluZyB2aWEgQ0ZV
UkxHZXRCeXRlcygpLgogICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5s
ZWFrUmVmKCkpOwogfQogCi0vLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBO
U1VSTCBhbmQgQ0ZVUkwgdG8KLS8vIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBl
bXB0eSBhbmQgbnVsbCB2YWx1ZXMuCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNG
VVJMKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlk
Z2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8KKyAgICAgICAgLy8gY3JlYXRlIGEgQ0ZVUkxS
ZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KICAgICAgICAgUmV0YWlu
UHRyPE5TVVJMPiBlbXB0eU5TVVJMID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpAIiJdKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGVt
cHR5TlNVUkwuZ2V0KCkpOwogICAgIH0KIAotICAgIENoYXJCdWZmZXIgYnVmZmVyOworICAgIFVS
TENoYXJCdWZmZXIgYnVmZmVyOwogICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIHJldHVy
biBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyKTsKKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkxG
cm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJy
b3JDRi5jcHAJKHJldmlzaW9uIDE1MDgwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEw
Nyw4IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAgICAgICAgICAg
ICBpZiAoZmFpbGluZ1VSTCkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
YWJzb2x1dGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ29weUFic29sdXRlVVJMKGZhaWxpbmdVUkwp
KTsKICAgICAgICAgICAgICAgICBpZiAoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IENGVVJMR2V0U3RyaW5nIHJldHVybnMgYSBub3JtYWxpemVk
IFVSTCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGlzIGFjdHVhbGx5IHVzZWQgYnkgQ0ZO
ZXR3b3JrLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgdXNlIENGVVJMR2V0Qnl0
ZXMgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICAgZmFpbGluZ1VSTFN0cmluZyA9IENGVVJM
R2V0U3RyaW5nKGFic29sdXRlVVJMUmVmLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9m
YWlsaW5nVVJMID0gU3RyaW5nKGZhaWxpbmdVUkxTdHJpbmcpOwogICAgICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA1LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEZyZWV6ZSB3aGVuIGxvYWRp
bmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3RvbnBvc3QuY29tIHdpdGggTmV0d29ya1By
b2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjk2NTk1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJUEM6OmVuY29kZSk6CisgICAgICAgIChD
b3JlSVBDOjpkZWNvZGUpOgorICAgICAgICBGaXggZm9yIHRoZSBidWc6IHVzZSBnb29kIHNoYXJl
ZCBXZWJDb3JlIGNvZGUgdG8gbWFuaXB1bGF0ZSBDRlVSTHMuIEFsc28sIGFkZGVkCisgICAgICAg
IGEgRklYTUUgYWJvdXQgZW1wdHkgVVJMcy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9X
S1VSTENGLmNwcDogKFdLVVJMQ3JlYXRlV2l0aENGVVJMKTogRml4ZWQgdG8gbm90IHVzZQorICAg
ICAgICBDRlVSTEdldFN0cmluZywgYXMgdGhhdCBjb3VsZCBwcmV2ZW50IGxvYWRpbmcgY2VydGFp
biByZXNvdXJjZXMsIGxpa2Ugb25lcyB3aXRoCisgICAgICAgIGN1cmx5IGJyYWNlcyBpbiByZXNv
dXJjZSBzcGVjaWZpZXJzLiBXZSB3YW50IEtVUkwgbm9ybWFsaXphdGlvbiwgbm90IENGVVJMIG9u
ZS4KKwogMjAxMy0wNS0yOCAgTGF1cm8gTmV0byA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFtHVEtdIENvbm5lY3Rpb24gaXNzdWVzIGluIHJlcGVhdGVkIFdlYlByb2Nlc3Mg
Y3Jhc2gvcmVsb2Fkcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tV
UkxDRi5jcHAJKHJldmlzaW9uIDE1MDgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsMTAgQEAgV0tVUkxS
ZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYgYwogICAgIGlmICghY2ZVUkwpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgU3RyaW5nIHVybFN0cmluZyhDRlVSTEdldFN0cmluZyhjZlVS
TCkpOwotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh1cmxTdHJpbmcpOworICAgIENTdHJpbmcg
dXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkwsIHVybEJ5dGVzKTsKKworICAgIHJldHVy
biB0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRhKCkpOwogfQogCiBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHJl
dmlzaW9uIDE1MDgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIgKzI5LDE1IEBACiAjaW5jbHVkZSAiQXJn
dW1lbnREZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KICNlbmRpZgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwog
bmFtZXNwYWNlIENvcmVJUEMgewogCiBDRlR5cGVSZWYgdG9rZW5OdWxsVHlwZVJlZigpCkBAIC01
MDAsNyArNTAzLDEwIEBAIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgQ0YK
ICAgICBpZiAoYmFzZVVSTCkKICAgICAgICAgZW5jb2RlKGVuY29kZXIsIGJhc2VVUkwpOwogCi0g
ICAgZW5jb2RlKGVuY29kZXIsIENGVVJMR2V0U3RyaW5nKHVybCkpOworICAgIFVSTENoYXJCdWZm
ZXIgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7CisgICAgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSk7CisgICAgZW5jb2RlciA8
PCBkYXRhUmVmZXJlbmNlOwogfQogCiBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxDRlVSTFJlZj4mIHJlc3VsdCkKQEAgLTUxNCwyNiArNTIwLDIzIEBAIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmUKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZzsKLSAg
ICBpZiAoIWRlY29kZShkZWNvZGVyLCBzdHJpbmcpKQorICAgIENvcmVJUEM6OkRhdGFSZWZlcmVu
Y2UgdXJsQnl0ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmxCeXRlcykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBGSVhNRTogTW92ZSB0
aGlzIHRvIEFyZ3VtZW50Q29kZXJzQ0ZNYWMubW0gYW5kIGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0
byBiZSBDKysKICAgICAvLyBpbnN0ZWFkIG9mIE9iamVjdGl2ZS1DKysuCi0gICAgaWYgKCFDRlN0
cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpKSB7CisgICAgaWYgKHVybEJ5dGVzLmlzRW1wdHko
KSkgewogICAgICAgICAvLyBDRlVSTCBjYW4ndCBob2xkIGFuIGVtcHR5IFVSTCwgdW5saWtlIE5T
VVJMLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBsb3NlcyBiYXNlIFVSTCwgd2hpY2ggc2VlbXMg
aW5jb3JyZWN0LgogICAgICAgICByZXN1bHQgPSByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihb
TlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIAotICAgIENGVVJMUmVmIHVybCA9IENGVVJMQ3Jl
YXRlV2l0aFN0cmluZygwLCBzdHJpbmcuZ2V0KCksIGJhc2VVUkwuZ2V0KCkpOwotICAgIGlmICgh
dXJsKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBhZG9wdENGKHVybCk7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmVzdWx0ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNp
emUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmIFVTRShT
RUNVUklUWV9GUkFNRVdPUkspCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTA4MzMpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0y
OCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBGcmVlemUg
d2hlbiBsb2FkaW5nIGEgcGFydGljdWxhciBwYWdlIG9uIHdhc2hpbmd0b25wb3N0LmNvbSB3aXRo
IE5ldHdvcmtQcm9jZXNzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjg4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI5NjU5NTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy91cmkvcmVzb3VyY2VzL2VjaG8tdXJpLnBocDogQWRkZWQu
CisKIDIwMTMtMDUtMjggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbmRvd3NdIFNpbGVuY2UgYSBmZXcgZmFpbHVyZXMgdG8gZ2V0IGJvdCBncmVlbi4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvY3Vy
bHktYnJhY2VzLWVzY2FwaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdCB0aGF0IGN1cmx5IGJyYWNlcyBhcmUg
bm90IGVzY2FwZWQgaW4gcmVxdWVzdCBxdWVyaWVzIChidWcgMTE2ODg3KQorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZXEucmVzcG9uc2VUZXh0IGlzICcvdXJpL3Jlc291
cmNlcy9lY2hvLXVyaS5waHA/cT17fScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMK
K25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1l
c2NhcGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGN1cmx5IGJyYWNlcyBh
cmUgbm90IGVzY2FwZWQgaW4gcmVxdWVzdCBxdWVyaWVzIChidWcgMTE2ODg3KSIpOworCitqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKK3JlcS5v
cGVuKCJHRVQiLCAgInJlc291cmNlcy9lY2hvLXVyaS5waHA/cT17fSIsIHRydWUpOworcmVxLm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCJyZXEucmVzcG9uc2VUZXh0IiwgIicv
dXJpL3Jlc291cmNlcy9lY2hvLXVyaS5waHA/cT17fSciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KK3JlcS5zZW5kKCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVz
Y2FwaW5nLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMj
Cit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy91cmkvcmVzb3VyY2VzL2VjaG8tdXJpLnBocAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9yZXNvdXJjZXMvZWNoby11cmkucGhwCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvcmVzb3VyY2VzL2VjaG8tdXJp
LnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzw/cGhwCisgICAgaGVhZGVyKCJD
b250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsKKyAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEg
RGVjIDIwMDMgMTY6MDA6MDAgR01UXG4iKTsKKyAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5v
LXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlXG4iKTsKKyAgICBoZWFkZXIoIlByYWdt
YTogbm8tY2FjaGVcbiIpOworICAgIGVjaG8gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107Cis/Pgo=
</data>
<flag name="review"
          id="224550"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="224552"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203097</attachid>
            <date>2013-05-28 15:09:07 -0700</date>
            <delta_ts>2013-05-28 15:29:10 -0700</delta_ts>
            <desc>with build fixes</desc>
            <filename>washingtonpost.txt</filename>
            <type>text/plain</type>
            <size>29404</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTA1LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEZyZWV6ZSB3aGVuIGxvYWRp
bmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3RvbnBvc3QuY29tIHdpdGggTmV0d29ya1By
b2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjk2NTk1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAorCisgICAgICAgIFRoZSBpc3N1ZSB3YXMg
dGhhdCBXZWJLaXQgdXNlZCBhbiBpbmNvcnJlY3QgYWNjZXNzb3IgdG8gZ2V0IGEgc3RyaW5nIG91
dCBvZiBDRlVSTCwKKyAgICAgICAgdW5saWtlIFdlYkNvcmUuCisKKyAgICAgICAgQ2VudHJhbGl6
ZWQgY29kZSBmb3IgY29udmVydGluZyBiZXR3ZWVuIENGVVJMcyBhbmQgc3RyaW5ncyBpbiBhIHBs
YWNlIHRoYXQgV2ViS2l0CisgICAgICAgIGNhbiB1c2UgZGlyZWN0bHkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEtlZXBpbmcgdGhpbmdzIGJ1aWxk
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6IChXZWJDb3JlOjpLVVJMOjpjb3B5
VG9CdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgVXBkYXRlZCBm
b3IgYSBuZXcgdHlwZWRlZiBuYW1lLiBUaGUgY29kZSB3YXMgdXNpbmcgVmVjdG9yPGNoYXIsIDUx
Mj4gYW5kIENoYXJCdWZmZXIKKyAgICAgICAgaW5jb25zaXN0ZW50bHksIGFuZCBub3cgVVJMcyB1
c2UgVVJMQ2hhckJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VVJMQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNy
ZWF0ZUNGVVJMKToKKyAgICAgICAgRXh0cmFjdGVkIGNvZGUgZm9yIENGVVJMIHN0cmluZyBtYW5p
cHVsYXRpb24gdGhhdCBpcyBub3QgbG9nY2FsbHkgcGFydCBvZiBLVVJMLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKTog
VXNlIHRoZSBuZXcgZ2V0VVJMQnl0ZXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpLVVJM
OjpvcGVyYXRvciBOU1VSTCAqKTogQWRkZWQgYSBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6Y3JlYXRlQ0ZVUkwpOiBBZGRlZCBhIGNvbW1lbnQsIGFuZCB1cGRhdGVkIGZvciBuZXcg
bmFtZXMgYW5kCisgICAgICAgIHNpZ25hdHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0
Zm9ybUxhenlJbml0KToKKyAgICAgICAgQWRkZWQgYSBGSVhNRS4gV2UgYXJlIHN0aWxsIHVzaW5n
IENGVVJMR2V0U3RyaW5nIGhlcmUuIFRoZSBkaWZmaWN1bHR5IGlzIGdldHRpbmcKKyAgICAgICAg
ZW5jb2RpbmdzIHJpZ2h0LgorCiAyMDEzLTA1LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIER1bXBSZW5kZXJUcmVlIGF0IGNvbS5hcHBsZS5X
ZWJDb3JlOiBXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3Vl
ICsgMTU0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTUwODA2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcs
OCBAQCBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjFzaG91bGRQcmludEV4CiBfX1pON1dlYkNv
cmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgogX19aTjdXZWJDb3Jl
MTFTUUxSZXN1bHRPa0UKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJM
CitfX1pON1dlYkNvcmUxMWdldFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKK19f
Wk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJOM1dURjZWZWN0b3JJY0xtNTEyRU5T
M18xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTFpQmVhbUN1cnNvckV2CiBfX1pO
N1dlYkNvcmUxMW1lbW9yeUNhY2hlRXYKIF9fWk43V2ViQ29yZTExc3RhcnRPZkxpbmVFUktOU18x
NVZpc2libGVQb3NpdGlvbkUKQEAgLTcxNyw2ICs3MTksNyBAQCBfX1pON1dlYkNvcmUyMVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZv
RVA1TlNVUkwKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0aW4xRW5jb2RpbmdFdgorX19aTjdX
ZWJDb3JlMjFjcmVhdGVDRlVSTEZyb21CdWZmZXJFUEtjbVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29y
ZTIxZmluZEV2ZW50V2l0aEtleVN0YXRlRVBOU181RXZlbnRFCiBfX1pON1dlYkNvcmUyMWdldENh
Y2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5m
b0UKIF9fWk43V2ViQ29yZTIxaXNCYWNrRm9yd2FyZExvYWRUeXBlRU5TXzEzRnJhbWVMb2FkVHlw
ZUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk3MzAsNiArMjk3MzAsMTQgQEAKIAkJCQlO
YW1lPSJjZiIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxjZlxDRlVSTEV4dHJhcy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cY2Zc
RmlsZVN5c3RlbUNGLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTUwODA2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDIyMiw2ICs0MjIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXHdpblxXaGVlbEV2ZW50V2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaWRnZXRXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0Yu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1
ZmZlckNGLmNwcCIgLz4KQEAgLTExNjA5LDYgKzExNjEwLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dz
VG91Y2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXENGVVJM
RXh0cmFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5c
Q2VydGlmaWNhdGVDRldpbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXENvbG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lv
biAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTUxNzUsNiArNTE3NSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXENocm9tZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxjZjwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cY2ZcU2hhcmVkQnVmZmVyQ0YuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyNjc5LDYgKzEyNjgyLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIj4KICAg
ICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2ZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRyYXMuaCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlmaWNhdGVDRldpbi5oIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Zcd2luPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MTksNiArNTQxOSw4IEBA
CiAJCUUxQTVGOTlCMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTVGOTlB
MEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
RTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3
MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IH07CiAJCUUxQTY0M0ZE
MEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0ZDMEVDMDk3QTAwMDc3
OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJRTFBOEU1NjYxNzU1
MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5jcHAgKi87IH07CisJCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBQ0FGNEMwRTc5MUFBRjAwODdEMTJCIC8q
IERPTU1lc3NhZ2VQb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBQ0FGNEEwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1lc3NhZ2VQb3J0Lm1tICov
OyB9OwogCQlFMUFDQUY0RDBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVzc2FnZVBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUNBRjRCMEU3OTFB
QUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9ydC5oICovOyB9OwogCQlFMUFEMTJENjEyOTVEMEJE
MDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRDEyRDUxMjk1RDBCRDAwQUNB
OTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTEyMjAx
LDYgKzEyMjAzLDggQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyog
RmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVMaXN0LmlkbDsgcGF0aCA9
IGZpbGVhcGkvRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVBQjE0RTlFMkVGMDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnkuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9y
eUVudHJ5LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUFDMTRFOUUyRjgwMDQ0OUUxMyAv
KiBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzk1LDYgKzEzMzk5LDggQEAKIAkJMUFFNDJGNjcwQUE0
QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICov
LAorCQkJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJ
CTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTFB
OTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAogCQkJCTI5QTMwOUFC
MTU2MUM5OUIwMEJCRDhFNSAvKiBSdW5Mb29wQ0YuY3BwICovLApAQCAtMjA5MDgsNiArMjA5MTQs
NyBAQAogCQkJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUQ3QkNGQTE0NDRBRjdEMDA3MDYxOUMgLyogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQzA4Q0YzMTVGOTQxRkQw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFB
OEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTIyQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTIzMjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDEwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE5MSw2ICsy
NjE5OCw3IEBACiAJCQkJMUFGOEUxMzMxMjU2NUE0NDAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjhFMUMzMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNl
cnZlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGOTQ1RUNCMTYxRjdGMzYwMDk3MUJD
OCAvKiBQc2V1ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQThFNTY2MTc1NTJC
MkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMDgxRkVG
RjE2QjBBMkI2MDA4QUFBN0EgLyogUHVibGljU3VmZml4TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRENjg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZp
c2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgYm9vbCBLVVJMOjppc0hpZXJhcmNoaWNhbCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwogfQog
Ci12b2lkIEtVUkw6OmNvcHlUb0J1ZmZlcihDaGFyQnVmZmVyJiBidWZmZXIpIGNvbnN0Cit2b2lk
IEtVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQogICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFz
ZVVSTCkKK3sKKyAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29k
aW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29t
cG9uZW50cworICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlz
IGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hp
Y2gKKyAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGlu
IGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCisg
ICAgLy8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KKyAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhC
eXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCit7
CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAg
ICByZXN1bHQucmVzaXplKGJ5dGVzTGVuZ3RoKTsKKyAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0g
Q0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHQuZGF0YSgp
KSwgYnl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVu
Z3RoID09IGJ5dGVzTGVuZ3RoKTsKK30KKwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmws
IENTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRC
eXRlcyh1cmwsIDAsIDApOworICAgIGNoYXIqIGJ5dGVzOworICAgIHJlc3VsdCA9IENTdHJpbmc6
Om5ld1VuaW5pdGlhbGl6ZWQoYnl0ZXNMZW5ndGgsIGJ5dGVzKTsKKyAgICBDRkluZGV4IGZpbmFs
TGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRl
cyksIGJ5dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExl
bmd0aCA9PSBieXRlc0xlbmd0aCk7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENG
VVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8c3lzL3BhcmFt
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVk
ZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJMQ2hhckJ1ZmZlcjsKKworUmV0YWluUHRyPENGVVJMUmVm
PiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFz
ZVVSTCA9IDApOwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOwor
dm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiwgQ1N0cmluZyYpOworCit9CisKKyNlbmRpZiAvLyBD
RlVSTEV4dHJhc19oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9DRlVSTEV4dHJhcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAs
MCArMSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAkocmV2aXNpb24gMTUwODA2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTcgKzI2LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NGVVJMLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci0KLVJldGFpblB0
cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImKTsKLQog
S1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiB7CiAgICAgaWYgKCF1cmwpIHsKQEAgLTQ0LDI0ICs0
MSwxMCBAQCBLVVJMOjpLVVJMKENGVVJMUmVmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIENGSW5kZXggYnl0ZXNMZW5ndGggPSBDRlVSTEdldEJ5dGVzKHVybCwgMCwgMCk7Ci0g
ICAgVmVjdG9yPGNoYXIsIDUxMj4gYnVmZmVyKGJ5dGVzTGVuZ3RoICsgMSk7Ci0gICAgY2hhciog
Ynl0ZXMgPSAmYnVmZmVyWzBdOwotICAgIENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9j
YXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7Ci0gICAgYnl0ZXNbYnl0ZXNMZW5ndGhd
ID0gJ1wwJzsKLSAgICBwYXJzZShieXRlcyk7Ci19Ci0KLVJldGFpblB0cjxDRlVSTFJlZj4gY3Jl
YXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICAvLyBO
T1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29kaW5nIGlzIHVzZWQgd2hlbiBj
b21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29tcG9uZW50cwotICAgIC8vIChl
LmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0
b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hpY2gKLSAgICAvLyBjb3VsZCBl
aXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29k
aW5nLCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCi0gICAgLy8gb250byB1c2luZyBJ
U08gTGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcygwLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCksIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgMCwgdHJ1ZSkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgMCwgdHJ1ZSkpOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAg
ICBDU3RyaW5nIHVybEJ5dGVzOworICAgIGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOworICAg
IHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhKFBM
QVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQpAQCAtNzAsNyArNTMsNyBAQCBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgCiAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRo
aXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/CiAgICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBh
d2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhh
dCBjYXNlLAogICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgQ2hhckJ1ZmZlciBi
dWZmZXI7CisgICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7CiAgICAgY29weVRvQnVmZmVyKGJ1ZmZl
cik7CiAgICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0JKHJldmlzaW9uIDE1MDgwNikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxNiArMjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiS1VSTC5oIgog
CisjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgogI2ltcG9ydCAiRm91bmRhdGlvbkV4dHJhcy5oIgot
I2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdURjsK
KyNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10
eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci1leHRlcm4gUmV0YWluUHRyPENG
VVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgQ2hhckJ1ZmZlciYgYnVmZmVyKTsK
LQogS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogewogICAgIGlmICghdXJsKSB7CkBAIC00MywzNCAr
MzksMzQgQEAgS1VSTDo6S1VSTChOU1VSTCAqdXJsKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDxDRlVSTFJlZj4odXJsKSwgMCwgMCk7Ci0gICAgVmVjdG9yPGNoYXIsIDUxMj4gYnVmZmVyKGJ5
dGVzTGVuZ3RoICsgMSk7Ci0gICAgY2hhciogYnl0ZXMgPSAmYnVmZmVyWzBdOwotICAgIENGVVJM
R2V0Qnl0ZXMocmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4odXJsKSwgcmVpbnRlcnByZXRfY2Fz
dDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNMZW5ndGgpOwotICAgIGJ5dGVzW2J5dGVzTGVuZ3RoXSA9
ICdcMCc7Ci0gICAgcGFyc2UoYnl0ZXMpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8g
aWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxC
eXRlcyhyZWludGVycHJldF9jYXN0PENGVVJMUmVmPih1cmwpLCB1cmxCeXRlcyk7CisgICAgcGFy
c2UodXJsQnl0ZXMuZGF0YSgpKTsKIH0KIAogS1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0
CiB7CisgICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCwgYmVjYXVzZSBh
IHJlYWwgTlNVUkwgd291bGQgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCisgICAg
Ly8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5
dGVzKCkuCiAgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlVSTCgpLmxlYWtSZWYo
KSk7CiB9CiAKLS8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFu
ZCBDRlVSTCB0bwotLy8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFu
ZCBudWxsIHZhbHVlcy4KIFJldGFpblB0cjxDRlVSTFJlZj4gS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBj
b25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
aXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3
ZWVuIE5TVVJMIGFuZCBDRlVSTCB0bworICAgICAgICAvLyBjcmVhdGUgYSBDRlVSTFJlZiBzdXBw
b3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwgdmFsdWVzLgogICAgICAgICBSZXRhaW5QdHI8TlNV
Ukw+IGVtcHR5TlNVUkwgPSBhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
Il0pOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oZW1wdHlOU1VS
TC5nZXQoKSk7CiAgICAgfQogCi0gICAgQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgVVJMQ2hhckJ1
ZmZlciBidWZmZXI7CiAgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGNyZWF0
ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIpOworICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNw
cAkocmV2aXNpb24gMTUwODA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDggQEAg
dm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICAgICAgICAgIGlmIChm
YWlsaW5nVVJMKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBhYnNvbHV0
ZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5QWJzb2x1dGVVUkwoZmFpbGluZ1VSTCkpOwogICAg
ICAgICAgICAgICAgIGlmIChhYnNvbHV0ZVVSTFJlZi5nZXQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogQ0ZVUkxHZXRTdHJpbmcgcmV0dXJucyBhIG5vcm1hbGl6ZWQgVVJMIHdo
aWNoIGlzIGRpZmZlcmVudCBmcm9tIHdoYXQgaXMgYWN0dWFsbHkgdXNlZCBieSBDRk5ldHdvcmsu
CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCB1c2UgQ0ZVUkxHZXRCeXRlcyBpbnN0
ZWFkLgogICAgICAgICAgICAgICAgICAgICBmYWlsaW5nVVJMU3RyaW5nID0gQ0ZVUkxHZXRTdHJp
bmcoYWJzb2x1dGVVUkxSZWYuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ZhaWxpbmdV
UkwgPSBTdHJpbmcoZmFpbGluZ1VSTFN0cmluZyk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMTUwODMzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDUtMjggIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgRnJlZXplIHdoZW4gbG9hZGluZyBhIHBh
cnRpY3VsYXIgcGFnZSBvbiB3YXNoaW5ndG9ucG9zdC5jb20gd2l0aCBOZXR3b3JrUHJvY2VzcyBl
bmFibGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTY4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyOTY1OTU5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL2NmL0FyZ3VtZW50Q29k
ZXJzQ0YuY3BwOgorICAgICAgICAoQ29yZUlQQzo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6
OmRlY29kZSk6CisgICAgICAgIEZpeCBmb3IgdGhlIGJ1ZzogdXNlIGdvb2Qgc2hhcmVkIFdlYkNv
cmUgY29kZSB0byBtYW5pcHVsYXRlIENGVVJMcy4gQWxzbywgYWRkZWQKKyAgICAgICAgYSBGSVhN
RSBhYm91dCBlbXB0eSBVUkxzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0Yu
Y3BwOiAoV0tVUkxDcmVhdGVXaXRoQ0ZVUkwpOiBGaXhlZCB0byBub3QgdXNlCisgICAgICAgIENG
VVJMR2V0U3RyaW5nLCBhcyB0aGF0IGNvdWxkIHByZXZlbnQgbG9hZGluZyBjZXJ0YWluIHJlc291
cmNlcywgbGlrZSBvbmVzIHdpdGgKKyAgICAgICAgY3VybHkgYnJhY2VzIGluIHJlc291cmNlIHNw
ZWNpZmllcnMuIFdlIHdhbnQgS1VSTCBub3JtYWxpemF0aW9uLCBub3QgQ0ZVUkwgb25lLgorCiAy
MDEzLTA1LTI4ICBMYXVybyBOZXRvIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAg
ICAgW0dUS10gQ29ubmVjdGlvbiBpc3N1ZXMgaW4gcmVwZWF0ZWQgV2ViUHJvY2VzcyBjcmFzaC9y
ZWxvYWRzLgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNw
cAkocmV2aXNpb24gMTUwODA2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dL
VVJMQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwxMCBAQCBXS1VSTFJlZiBXS1VS
TENyZWF0ZVdpdGhDRlVSTChDRlVSTFJlZiBjCiAgICAgaWYgKCFjZlVSTCkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBTdHJpbmcgdXJsU3RyaW5nKENGVVJMR2V0U3RyaW5nKGNmVVJMKSk7Ci0g
ICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHVybFN0cmluZyk7CisgICAgQ1N0cmluZyB1cmxCeXRl
czsKKyAgICBnZXRVUkxCeXRlcyhjZlVSTCwgdXJsQnl0ZXMpOworCisgICAgcmV0dXJuIHRvQ29w
aWVkVVJMQVBJKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKIENGVVJMUmVmIFdLVVJMQ29weUNGVVJM
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJMUmVmKQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkocmV2aXNpb24g
MTUwODA2KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMiArMjksMTUgQEAKICNpbmNsdWRlICJBcmd1bWVudERl
Y29kZXIuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9DRlVSTEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CiAKIENGVHlwZVJlZiB0b2tlbk51bGxUeXBlUmVmKCkKQEAgLTUwMCw3ICs1
MDMsMTAgQEAgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBDRgogICAgIGlm
IChiYXNlVVJMKQogICAgICAgICBlbmNvZGUoZW5jb2RlciwgYmFzZVVSTCk7CiAKLSAgICBlbmNv
ZGUoZW5jb2RlciwgQ0ZVUkxHZXRTdHJpbmcodXJsKSk7CisgICAgVVJMQ2hhckJ1ZmZlciB1cmxC
eXRlczsKKyAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKKyAgICBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
dXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpKTsKKyAgICBlbmNvZGVyIDw8IGRhdGFS
ZWZlcmVuY2U7CiB9CiAKIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0
YWluUHRyPENGVVJMUmVmPiYgcmVzdWx0KQpAQCAtNTE0LDI2ICs1MjAsMjMgQEAgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwotICAgIGlmICgh
ZGVjb2RlKGRlY29kZXIsIHN0cmluZykpCisgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSB1cmxC
eXRlczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybEJ5dGVzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8g
QXJndW1lbnRDb2RlcnNDRk1hYy5tbSBhbmQgY2hhbmdlIHRoaXMgZmlsZSBiYWNrIHRvIGJlIEMr
KwogICAgIC8vIGluc3RlYWQgb2YgT2JqZWN0aXZlLUMrKy4KLSAgICBpZiAoIUNGU3RyaW5nR2V0
TGVuZ3RoKHN0cmluZy5nZXQoKSkpIHsKKyAgICBpZiAodXJsQnl0ZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIENGVVJMIGNhbid0IGhvbGQgYW4gZW1wdHkgVVJMLCB1bmxpa2UgTlNVUkwuCisg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGxvc2VzIGJhc2UgVVJMLCB3aGljaCBzZWVtcyBpbmNvcnJl
Y3QuCiAgICAgICAgIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiIl0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYK
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgQ0ZVUkxSZWYgdXJsID0gQ0ZVUkxDcmVhdGVXaXRo
U3RyaW5nKDAsIHN0cmluZy5nZXQoKSwgYmFzZVVSTC5nZXQoKSk7Ci0gICAgaWYgKCF1cmwpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGFkb3B0Q0YodXJsKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXN1bHQgPSBjcmVhdGVDRlVSTEZyb21CdWZmZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4odXJsQnl0ZXMuZGF0YSgpKSwgdXJsQnl0ZXMuc2l6ZSgpLCBi
YXNlVVJMLmdldCgpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgVVNFKFNFQ1VSSVRZ
X0ZSQU1FV09SSykKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA1LTI4ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEZyZWV6ZSB3aGVuIGxv
YWRpbmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3RvbnBvc3QuY29tIHdpdGggTmV0d29y
a1Byb2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjk2NTk1OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
dXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3VyaS9yZXNvdXJjZXMvZWNoby11cmkucGhwOiBBZGRlZC4KKwogMjAx
My0wNS0yOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2luZG93c10gU2lsZW5jZSBhIGZldyBmYWlsdXJlcyB0byBnZXQgYm90IGdyZWVuLgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVzY2FwaW5nLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFj
ZXMtZXNjYXBpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVzY2FwaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEwIEBACitUZXN0IHRoYXQgY3VybHkgYnJhY2VzIGFyZSBub3QgZXNj
YXBlZCBpbiByZXF1ZXN0IHF1ZXJpZXMgKGJ1ZyAxMTY4ODcpCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHJlcS5yZXNwb25zZVRleHQgaXMgJy91cmkvcmVzb3VyY2VzL2Vj
aG8tdXJpLnBocD9xPXt9JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
dXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVzY2FwaW5n
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY3VybHkgYnJhY2VzIGFyZSBub3Qg
ZXNjYXBlZCBpbiByZXF1ZXN0IHF1ZXJpZXMgKGJ1ZyAxMTY4ODcpIik7CisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCit2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworcmVxLm9wZW4oIkdF
VCIsICAicmVzb3VyY2VzL2VjaG8tdXJpLnBocD9xPXt9IiwgdHJ1ZSk7CityZXEub25sb2FkID0g
ZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoInJlcS5yZXNwb25zZVRleHQiLCAiJy91cmkvcmVz
b3VyY2VzL2VjaG8tdXJpLnBocD9xPXt9JyIpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorcmVx
LnNlbmQoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcu
aHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46bWltZS10eXBlCiMjIC0wLDAgKzEgIyMKK3RleHQv
aHRtbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3VyaS9yZXNvdXJjZXMvZWNoby11cmkucGhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvdXJpL3Jlc291cmNlcy9lY2hvLXVyaS5waHAJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9yZXNvdXJjZXMvZWNoby11cmkucGhwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorPD9waHAKKyAgICBoZWFkZXIoIkNvbnRlbnQt
VHlwZTogdGV4dC9wbGFpbiIpOworICAgIGhlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAw
MyAxNjowMDowMCBHTVRcbiIpOworICAgIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUs
IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGVcbiIpOworICAgIGhlYWRlcigiUHJhZ21hOiBuby1j
YWNoZVxuIik7CisgICAgZWNobyAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsKKz8+Cg==
</data>
<flag name="review"
          id="224554"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="224556"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203100</attachid>
            <date>2013-05-28 15:29:10 -0700</date>
            <delta_ts>2013-05-28 15:41:20 -0700</delta_ts>
            <desc>with more build fixes</desc>
            <filename>washingtonpost.txt</filename>
            <type>text/plain</type>
            <size>29381</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDEzLTA1LTI4ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEZyZWV6ZSB3aGVuIGxvYWRp
bmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3RvbnBvc3QuY29tIHdpdGggTmV0d29ya1By
b2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjk2NTk1OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L3VyaS9jdXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAorCisgICAgICAgIFRoZSBpc3N1ZSB3YXMg
dGhhdCBXZWJLaXQgdXNlZCBhbiBpbmNvcnJlY3QgYWNjZXNzb3IgdG8gZ2V0IGEgc3RyaW5nIG91
dCBvZiBDRlVSTCwKKyAgICAgICAgdW5saWtlIFdlYkNvcmUuCisKKyAgICAgICAgQ2VudHJhbGl6
ZWQgY29kZSBmb3IgY29udmVydGluZyBiZXR3ZWVuIENGVVJMcyBhbmQgc3RyaW5ncyBpbiBhIHBs
YWNlIHRoYXQgV2ViS2l0CisgICAgICAgIGNhbiB1c2UgZGlyZWN0bHkuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEtlZXBpbmcgdGhpbmdzIGJ1aWxk
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6IChXZWJDb3JlOjpLVVJMOjpjb3B5
VG9CdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgVXBkYXRlZCBm
b3IgYSBuZXcgdHlwZWRlZiBuYW1lLiBUaGUgY29kZSB3YXMgdXNpbmcgVmVjdG9yPGNoYXIsIDUx
Mj4gYW5kIENoYXJCdWZmZXIKKyAgICAgICAgaW5jb25zaXN0ZW50bHksIGFuZCBub3cgVVJMcyB1
c2UgVVJMQ2hhckJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRlVSTEZyb21CdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VVJMQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0NGVVJM
RXh0cmFzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OmNy
ZWF0ZUNGVVJMKToKKyAgICAgICAgRXh0cmFjdGVkIGNvZGUgZm9yIENGVVJMIHN0cmluZyBtYW5p
cHVsYXRpb24gdGhhdCBpcyBub3QgbG9nY2FsbHkgcGFydCBvZiBLVVJMLgorCisgICAgICAgICog
cGxhdGZvcm0vbWFjL0tVUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKTog
VXNlIHRoZSBuZXcgZ2V0VVJMQnl0ZXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpLVVJM
OjpvcGVyYXRvciBOU1VSTCAqKTogQWRkZWQgYSBjb21tZW50LgorICAgICAgICAoV2ViQ29yZTo6
S1VSTDo6Y3JlYXRlQ0ZVUkwpOiBBZGRlZCBhIGNvbW1lbnQsIGFuZCB1cGRhdGVkIGZvciBuZXcg
bmFtZXMgYW5kCisgICAgICAgIHNpZ25hdHVyZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0
Zm9ybUxhenlJbml0KToKKyAgICAgICAgQWRkZWQgYSBGSVhNRS4gV2UgYXJlIHN0aWxsIHVzaW5n
IENGVVJMR2V0U3RyaW5nIGhlcmUuIFRoZSBkaWZmaWN1bHR5IGlzIGdldHRpbmcKKyAgICAgICAg
ZW5jb2RpbmdzIHJpZ2h0LgorCiAyMDEzLTA1LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIER1bXBSZW5kZXJUcmVlIGF0IGNvbS5hcHBsZS5X
ZWJDb3JlOiBXZWJDb3JlOjpSZW5kZXJUZXh0VHJhY2tDdWU6OnJlcG9zaXRpb25HZW5lcmljQ3Vl
ICsgMTU0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTUwODA2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw2ICsxNjcs
OCBAQCBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjFzaG91bGRQcmludEV4CiBfX1pON1dlYkNv
cmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgogX19aTjdXZWJDb3Jl
MTFTUUxSZXN1bHRPa0UKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJM
CitfX1pON1dlYkNvcmUxMWdldFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKK19f
Wk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJOM1dURjZWZWN0b3JJY0xtNTEyRU5T
M18xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTFpQmVhbUN1cnNvckV2CiBfX1pO
N1dlYkNvcmUxMW1lbW9yeUNhY2hlRXYKIF9fWk43V2ViQ29yZTExc3RhcnRPZkxpbmVFUktOU18x
NVZpc2libGVQb3NpdGlvbkUKQEAgLTcxNyw2ICs3MTksNyBAQCBfX1pON1dlYkNvcmUyMVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUQxRXYKIF9fWk43V2ViQ29yZTIxVVJMQnlSZW1vdmluZ1VzZXJJbmZv
RVA1TlNVUkwKIF9fWk43V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuNXBhcnNlRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjFXaW5kb3dzTGF0aW4xRW5jb2RpbmdFdgorX19aTjdX
ZWJDb3JlMjFjcmVhdGVDRlVSTEZyb21CdWZmZXJFUEtjbVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29y
ZTIxZmluZEV2ZW50V2l0aEtleVN0YXRlRVBOU181RXZlbnRFCiBfX1pON1dlYkNvcmUyMWdldENh
Y2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5m
b0UKIF9fWk43V2ViQ29yZTIxaXNCYWNrRm9yd2FyZExvYWRUeXBlRU5TXzEzRnJhbWVMb2FkVHlw
ZUUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjk3MzAsNiArMjk3MzAsMTQgQEAKIAkJCQlO
YW1lPSJjZiIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxjZlxDRlVSTEV4dHJhcy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cY2Zc
RmlsZVN5c3RlbUNGLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTUwODA2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDIyMiw2ICs0MjIyLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXHdpblxXaGVlbEV2ZW50V2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaWRnZXRXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0Yu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1
ZmZlckNGLmNwcCIgLz4KQEAgLTExNjA5LDYgKzExNjEwLDcgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dz
VG91Y2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXENGVVJM
RXh0cmFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5c
Q2VydGlmaWNhdGVDRldpbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcQml0bWFwSW1hZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXENvbG9yLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lv
biAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTUxNzUsNiArNTE3NSw5IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXENocm9tZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdl
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxjZjwv
RmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cY2ZcU2hhcmVkQnVmZmVyQ0YuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEyNjc5LDYgKzEyNjgyLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHN2Z1xTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIj4KICAg
ICAgIDxGaWx0ZXI+cmVuZGVyaW5nXHN2ZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRyYXMuaCI+CisgICAg
ICA8RmlsdGVyPnBsYXRmb3JtXGNmPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlmaWNhdGVDRldpbi5oIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Zcd2luPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MTksNiArNTQxOSw4IEBA
CiAJCUUxQTVGOTlCMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTVGOTlB
MEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLzsgfTsKIAkJ
RTFBNjQzRjIwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0YxMEVDMDk3
MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi87IH07CiAJCUUxQTY0M0ZE
MEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTY0M0ZDMEVDMDk3QTAwMDc3
OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJRTFBOEU1NjYxNzU1
MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5jcHAgKi87IH07CisJCUUxQThFNTY3MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJh
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBOEU1
NjUxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFBQ0FGNEMwRTc5MUFBRjAwODdEMTJCIC8q
IERPTU1lc3NhZ2VQb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBQ0FGNEEwRTc5MUFBRjAwODdEMTJCIC8qIERPTU1lc3NhZ2VQb3J0Lm1tICov
OyB9OwogCQlFMUFDQUY0RDBFNzkxQUFGMDA4N0QxMkIgLyogRE9NTWVzc2FnZVBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQUNBRjRCMEU3OTFB
QUYwMDg3RDEyQiAvKiBET01NZXNzYWdlUG9ydC5oICovOyB9OwogCQlFMUFEMTJENjEyOTVEMEJE
MDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBRDEyRDUxMjk1RDBCRDAwQUNB
OTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKQEAgLTEyMjAx
LDYgKzEyMjAzLDggQEAKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNN
ZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
QTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUxQThFNTY0MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRlVSTEV4dHJhcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4
dHJhcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRlVSTEV4dHJhcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFCMUVBODE0RTlFMjdEMDA0NDlFMTMgLyog
RmlsZUxpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZpbGVMaXN0LmlkbDsgcGF0aCA9
IGZpbGVhcGkvRmlsZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUFC
MUVBQjE0RTlFMkVGMDA0NDlFMTMgLyogRGlyZWN0b3J5RW50cnkuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9y
eUVudHJ5LmlkbDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQUIxRUFDMTRFOUUyRjgwMDQ0OUUxMyAv
KiBEaXJlY3RvcnlFbnRyeVN5bmMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IERpcmVjdG9yeUVudHJ5U3luYy5pZGw7IHBh
dGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzk1LDYgKzEzMzk5LDggQEAKIAkJMUFFNDJGNjcwQUE0
QjhDQjAwQzg2MTJEIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICov
LAorCQkJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJ
CTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCTFB
OTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAogCQkJCTI5QTMwOUFC
MTU2MUM5OUIwMEJCRDhFNSAvKiBSdW5Mb29wQ0YuY3BwICovLApAQCAtMjA5MDgsNiArMjA5MTQs
NyBAQAogCQkJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUQ3QkNGQTE0NDRBRjdEMDA3MDYxOUMgLyogQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUFBQzA4Q0YzMTVGOTQxRkQw
MEYxRTE4OCAvKiBBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTFB
OEU1NjcxNzU1MkIyQTAwNzQ4OEU3IC8qIENGVVJMRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTIyQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTIzMjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDEwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE5MSw2ICsy
NjE5OCw3IEBACiAJCQkJMUFGOEUxMzMxMjU2NUE0NDAwMjMwRkY3IC8qIFByb3h5U2VydmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjhFMUMzMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNl
cnZlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZGOTQ1RUNCMTYxRjdGMzYwMDk3MUJD
OCAvKiBQc2V1ZG9FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxQThFNTY2MTc1NTJC
MkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMDgxRkVG
RjE2QjBBMkI2MDA4QUFBN0EgLyogUHVibGljU3VmZml4TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRENjg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZp
c2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgYm9vbCBLVVJMOjppc0hpZXJhcmNoaWNhbCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwogfQog
Ci12b2lkIEtVUkw6OmNvcHlUb0J1ZmZlcihDaGFyQnVmZmVyJiBidWZmZXIpIGNvbnN0Cit2b2lk
IEtVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQogICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlk
IFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ0ZVUkxFeHRyYXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgQ0ZVUkxSZWYgYmFz
ZVVSTCkKK3sKKyAgICAvLyBOT1RFOiBXZSB1c2UgVVRGLTggaGVyZSBzaW5jZSB0aGlzIGVuY29k
aW5nIGlzIHVzZWQgd2hlbiBjb21wdXRpbmcgc3RyaW5ncyB3aGVuIHJldHVybmluZyBVUkwgY29t
cG9uZW50cworICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBhdGgpLiBIb3dldmVyLCB0aGlz
IGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVURi04IHNlcXVlbmNlcywgd2hp
Y2gKKyAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGlu
IGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIFNoaWZ0LUpJUywgc28gd2UgZmFsbCBiYWNrCisg
ICAgLy8gb250byB1c2luZyBJU08gTGF0aW4tMSBpbiB0aG9zZSBjYXNlcy4KKyAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhC
eXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIHNpemUsIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBzaXplLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgYmFzZVVSTCwgdHJ1ZSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgZ2V0VVJMQnl0ZXMoQ0ZVUkxSZWYgdXJsLCBVUkxDaGFyQnVmZmVyJiByZXN1bHQpCit7
CisgICAgQ0ZJbmRleCBieXRlc0xlbmd0aCA9IENGVVJMR2V0Qnl0ZXModXJsLCAwLCAwKTsKKyAg
ICByZXN1bHQucmVzaXplKGJ5dGVzTGVuZ3RoKTsKKyAgICBDRkluZGV4IGZpbmFsTGVuZ3RoID0g
Q0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihyZXN1bHQuZGF0YSgp
KSwgYnl0ZXNMZW5ndGgpOworICAgIEFTU0VSVF9VTlVTRUQoZmluYWxMZW5ndGgsIGZpbmFsTGVu
Z3RoID09IGJ5dGVzTGVuZ3RoKTsKK30KKwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJlZiB1cmws
IENTdHJpbmcmIHJlc3VsdCkKK3sKKyAgICBDRkluZGV4IGJ5dGVzTGVuZ3RoID0gQ0ZVUkxHZXRC
eXRlcyh1cmwsIDAsIDApOworICAgIGNoYXIqIGJ5dGVzOworICAgIHJlc3VsdCA9IENTdHJpbmc6
Om5ld1VuaW5pdGlhbGl6ZWQoYnl0ZXNMZW5ndGgsIGJ5dGVzKTsKKyAgICBDRkluZGV4IGZpbmFs
TGVuZ3RoID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRl
cyksIGJ5dGVzTGVuZ3RoKTsKKyAgICBBU1NFUlRfVU5VU0VEKGZpbmFsTGVuZ3RoLCBmaW5hbExl
bmd0aCA9PSBieXRlc0xlbmd0aCk7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmNwcApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NGVVJMRXh0cmFzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENG
VVJMRXh0cmFzX2gKKyNkZWZpbmUgQ0ZVUkxFeHRyYXNfaAorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4gVVJM
Q2hhckJ1ZmZlcjsKKworUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTEZyb21CdWZmZXIo
Y29uc3QgY2hhciosIHNpemVfdCwgQ0ZVUkxSZWYgYmFzZVVSTCA9IDApOwordm9pZCBnZXRVUkxC
eXRlcyhDRlVSTFJlZiwgVVJMQ2hhckJ1ZmZlciYpOwordm9pZCBnZXRVUkxCeXRlcyhDRlVSTFJl
ZiwgQ1N0cmluZyYpOworCit9CisKKyNlbmRpZiAvLyBDRlVSTEV4dHJhc19oCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9DRlVSTEV4dHJhcy5oCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCArMSAjIworbmF0aXZlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tVUkxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S1VSTENGTmV0LmNwcAkocmV2aXNpb24gMTUwODA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS1VSTENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTcgKzI2LDE0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogCi0jaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZVUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hh
ciwgNTEyPiBDaGFyQnVmZmVyOwotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJv
bUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJik7Ci0KIEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQog
ewogICAgIGlmICghdXJsKSB7CkBAIC00NCwyNCArNDEsMTAgQEAgS1VSTDo6S1VSTChDRlVSTFJl
ZiB1cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRkluZGV4IGJ5dGVzTGVuZ3Ro
ID0gQ0ZVUkxHZXRCeXRlcyh1cmwsIDAsIDApOwotICAgIFZlY3RvcjxjaGFyLCA1MTI+IGJ1ZmZl
cihieXRlc0xlbmd0aCArIDEpOwotICAgIGNoYXIqIGJ5dGVzID0gJmJ1ZmZlclswXTsKLSAgICBD
RlVSTEdldEJ5dGVzKHVybCwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KGJ5dGVzKSwgYnl0ZXNM
ZW5ndGgpOwotICAgIGJ5dGVzW2J5dGVzTGVuZ3RoXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnl0ZXMp
OwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBD
aGFyQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgLy8gTk9URTogV2UgdXNlIFVURi04IGhlcmUgc2lu
Y2UgdGhpcyBlbmNvZGluZyBpcyB1c2VkIHdoZW4gY29tcHV0aW5nIHN0cmluZ3Mgd2hlbiByZXR1
cm5pbmcgVVJMIGNvbXBvbmVudHMKLSAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1wYXRoKS4g
SG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBVVEYtOCBz
ZXF1ZW5jZXMsIHdoaWNoCi0gICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9ybWVkIHN0cmlu
ZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBTaGlmdC1KSVMsIHNvIHdl
IGZhbGwgYmFjawotICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluLTEgaW4gdGhvc2UgY2FzZXMu
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ1ZmZl
ci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIDAsIHRydWUp
KTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihi
dWZmZXIuZGF0YSgpKSwgYnVmZmVyLnNpemUoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEs
IDAsIHRydWUpKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQg
T0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBn
ZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKKyAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwog
fQogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIShQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkK
QEAgLTcwLDcgKzUzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVSTCgp
IAogICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3IgaW52YWxpZCBVUkxz
PwogICAgIC8vIEN1cnJlbnRseSBpdCB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiB0aGUg
Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGluIHRoYXQgY2FzZSwKICAgICAvLyB3aGljaCBpcyBj
bGVhcmx5IHdyb25nLgotICAgIENoYXJCdWZmZXIgYnVmZmVyOworICAgIFVSTENoYXJCdWZmZXIg
YnVmZmVyOwogICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwogICAgIHJldHVybiBjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9LVVJMTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9L
VVJMTWFjLm1tCShyZXZpc2lvbiAxNTA4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvS1VSTE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsMTYgKzI2LDEyIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIktVUkwuaCIKIAorI2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIK
ICNpbXBvcnQgIkZvdW5kYXRpb25FeHRyYXMuaCIKLSNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
VVJMLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXVEY7CisjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBWZWN0b3I8Y2hhciwgNTEyPiBD
aGFyQnVmZmVyOwotZXh0ZXJuIFJldGFpblB0cjxDRlVSTFJlZj4gY3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKGNvbnN0IENoYXJCdWZmZXImIGJ1ZmZlcik7Ci0KIEtVUkw6OktVUkwoTlNVUkwgKnVybCkK
IHsKICAgICBpZiAoIXVybCkgewpAQCAtNDMsMzQgKzM5LDM0IEBAIEtVUkw6OktVUkwoTlNVUkwg
KnVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENGSW5kZXggYnl0ZXNMZW5ndGgg
PSBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIDAsIDApOwot
ICAgIFZlY3RvcjxjaGFyLCA1MTI+IGJ1ZmZlcihieXRlc0xlbmd0aCArIDEpOwotICAgIGNoYXIq
IGJ5dGVzID0gJmJ1ZmZlclswXTsKLSAgICBDRlVSTEdldEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
Q0ZVUkxSZWY+KHVybCksIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVu
Z3RoKTsKLSAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOwotICAgIHBhcnNlKGJ5dGVzKTsK
KyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPworICAg
IENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxDRlVS
TFJlZj4odXJsKSwgdXJsQnl0ZXMpOworICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAK
IEtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdAogeworICAgIC8vIENyZWF0aW5nIGEgdG9s
bC1mcmVlIGJyaWRnZWQgQ0ZVUkwsIGJlY2F1c2UgYSByZWFsIE5TVVJMIHdvdWxkIG5vdCBwcmVz
ZXJ2ZSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorICAgIC8vIFdlJ2xsIG5lZWQgZmlkZWxpdHkgd2hl
biByb3VuZC10cmlwcGluZyB2aWEgQ0ZVUkxHZXRCeXRlcygpLgogICAgIHJldHVybiBIYXJkQXV0
b3JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwogfQogCi0vLyBXZSB1c2UgdGhlIHRv
bGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8KLS8vIGNyZWF0ZSBhIENG
VVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCiBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKGlzRW1wdHkoKSkgeworICAgICAgICAvLyBX
ZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8KKyAg
ICAgICAgLy8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxs
IHZhbHVlcy4KICAgICAgICAgUmV0YWluUHRyPE5TVVJMPiBlbXB0eU5TVVJMID0gYWRvcHROUyhb
W05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKTsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGVtcHR5TlNVUkwuZ2V0KCkpOwogICAgIH0KIAotICAgIENo
YXJCdWZmZXIgYnVmZmVyOworICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwogICAgIGNvcHlUb0J1
ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyKTsK
KyAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCkpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAJKHJldmlzaW9uIDE1MDgwNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw4IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZv
cm1MYXp5SW5pdCgpCiAgICAgICAgICAgICBpZiAoZmFpbGluZ1VSTCkgewogICAgICAgICAgICAg
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYWJzb2x1dGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ29w
eUFic29sdXRlVVJMKGZhaWxpbmdVUkwpKTsKICAgICAgICAgICAgICAgICBpZiAoYWJzb2x1dGVV
UkxSZWYuZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IENGVVJMR2V0U3Ry
aW5nIHJldHVybnMgYSBub3JtYWxpemVkIFVSTCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0
IGlzIGFjdHVhbGx5IHVzZWQgYnkgQ0ZOZXR3b3JrLgorICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgdXNlIENGVVJMR2V0Qnl0ZXMgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICAg
ZmFpbGluZ1VSTFN0cmluZyA9IENGVVJMR2V0U3RyaW5nKGFic29sdXRlVVJMUmVmLmdldCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gU3RyaW5nKGZhaWxpbmdVUkxTdHJp
bmcpOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MDgzMykK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTA1LTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIEZyZWV6ZSB3aGVuIGxvYWRpbmcgYSBwYXJ0aWN1bGFyIHBhZ2Ugb24gd2FzaGluZ3Rv
bnBvc3QuY29tIHdpdGggTmV0d29ya1Byb2Nlc3MgZW5hYmxlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2ODg3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMjk2NTk1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjpkZWNvZGUpOgorICAgICAgICBGaXggZm9y
IHRoZSBidWc6IHVzZSBnb29kIHNoYXJlZCBXZWJDb3JlIGNvZGUgdG8gbWFuaXB1bGF0ZSBDRlVS
THMuIEFsc28sIGFkZGVkCisgICAgICAgIGEgRklYTUUgYWJvdXQgZW1wdHkgVVJMcy4KKworICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcDogKFdLVVJMQ3JlYXRlV2l0aENGVVJM
KTogRml4ZWQgdG8gbm90IHVzZQorICAgICAgICBDRlVSTEdldFN0cmluZywgYXMgdGhhdCBjb3Vs
ZCBwcmV2ZW50IGxvYWRpbmcgY2VydGFpbiByZXNvdXJjZXMsIGxpa2Ugb25lcyB3aXRoCisgICAg
ICAgIGN1cmx5IGJyYWNlcyBpbiByZXNvdXJjZSBzcGVjaWZpZXJzLiBXZSB3YW50IEtVUkwgbm9y
bWFsaXphdGlvbiwgbm90IENGVVJMIG9uZS4KKwogMjAxMy0wNS0yOCAgTGF1cm8gTmV0byA8bGF1
cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtHVEtdIENvbm5lY3Rpb24gaXNzdWVz
IGluIHJlcGVhdGVkIFdlYlByb2Nlc3MgY3Jhc2gvcmVsb2Fkcy4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAJKHJldmlzaW9uIDE1MDgwNikKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsOCArNDEsMTAgQEAgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoQ0ZVUkxSZWYg
YwogICAgIGlmICghY2ZVUkwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgU3RyaW5nIHVybFN0
cmluZyhDRlVSTEdldFN0cmluZyhjZlVSTCkpOwotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh1
cmxTdHJpbmcpOworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMoY2ZVUkws
IHVybEJ5dGVzKTsKKworICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh1cmxCeXRlcy5kYXRhKCkp
OwogfQogCiBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JS
ZWYsIFdLVVJMUmVmIFVSTFJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9jZi9Bcmd1
bWVudENvZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvY2Yv
QXJndW1lbnRDb2RlcnNDRi5jcHAJKHJldmlzaW9uIDE1MDgwNikKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTIg
KzI5LDE1IEBACiAjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXJndW1l
bnRFbmNvZGVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQ0ZVUkxFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9S
TShNQUMpCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNlbmRpZgogCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIENvcmVJUEMgewogCiBDRlR5cGVSZWYg
dG9rZW5OdWxsVHlwZVJlZigpCkBAIC01MDAsNyArNTAzLDEwIEBAIHZvaWQgZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgQ0YKICAgICBpZiAoYmFzZVVSTCkKICAgICAgICAgZW5jb2Rl
KGVuY29kZXIsIGJhc2VVUkwpOwogCi0gICAgZW5jb2RlKGVuY29kZXIsIENGVVJMR2V0U3RyaW5n
KHVybCkpOworICAgIFVSTENoYXJCdWZmZXIgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXModXJs
LCB1cmxCeXRlcyk7CisgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVz
LnNpemUoKSk7CisgICAgZW5jb2RlciA8PCBkYXRhUmVmZXJlbmNlOwogfQogCiBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRlVSTFJlZj4mIHJlc3VsdCkK
QEAgLTUxNCwyNiArNTIwLDIzIEBAIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgUmUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHN0cmluZzsKLSAgICBpZiAoIWRlY29kZShkZWNvZGVyLCBzdHJpbmcpKQor
ICAgIENvcmVJUEM6OkRhdGFSZWZlcmVuY2UgdXJsQnl0ZXM7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh1cmxCeXRlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEFyZ3VtZW50Q29kZXJzQ0ZNYWMubW0gYW5k
IGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0byBiZSBDKysKICAgICAvLyBpbnN0ZWFkIG9mIE9iamVj
dGl2ZS1DKysuCi0gICAgaWYgKCFDRlN0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpKSB7Cisg
ICAgaWYgKHVybEJ5dGVzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBDRlVSTCBjYW4ndCBob2xk
IGFuIGVtcHR5IFVSTCwgdW5saWtlIE5TVVJMLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBkaXNj
YXJkcyBiYXNlIFVSTCwgd2hpY2ggc2VlbXMgaW5jb3JyZWN0LgogICAgICAgICByZXN1bHQgPSBy
ZWludGVycHJldF9jYXN0PENGVVJMUmVmPihbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIAot
ICAgIENGVVJMUmVmIHVybCA9IENGVVJMQ3JlYXRlV2l0aFN0cmluZygwLCBzdHJpbmcuZ2V0KCks
IGJhc2VVUkwuZ2V0KCkpOwotICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXN1bHQgPSBhZG9wdENGKHVybCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmVzdWx0
ID0gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVy
bEJ5dGVzLmRhdGEoKSksIHVybEJ5dGVzLnNpemUoKSwgYmFzZVVSTC5nZXQoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogI2lmIFVTRShTRUNVUklUWV9GUkFNRVdPUkspCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNTA4MzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMy0wNS0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KKworICAgICAgICBGcmVlemUgd2hlbiBsb2FkaW5nIGEgcGFydGljdWxhciBwYWdl
IG9uIHdhc2hpbmd0b25wb3N0LmNvbSB3aXRoIE5ldHdvcmtQcm9jZXNzIGVuYWJsZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjg4NworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTI5NjU5NTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBp
bmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3VyaS9jdXJseS1i
cmFjZXMtZXNjYXBpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy91cmkvcmVz
b3VyY2VzL2VjaG8tdXJpLnBocDogQWRkZWQuCisKIDIwMTMtMDUtMjggIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIFNpbGVuY2UgYSBmZXcg
ZmFpbHVyZXMgdG8gZ2V0IGJvdCBncmVlbi4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
dXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVzY2FwaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNl
cy1lc2NhcGluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAor
VGVzdCB0aGF0IGN1cmx5IGJyYWNlcyBhcmUgbm90IGVzY2FwZWQgaW4gcmVxdWVzdCBxdWVyaWVz
IChidWcgMTE2ODg3KQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByZXEu
cmVzcG9uc2VUZXh0IGlzICcvdXJpL3Jlc291cmNlcy9lY2hvLXVyaS5waHA/cT17fScKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMtZXNjYXBp
bmctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCAr
MSAjIwordGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9jdXJseS1icmFjZXMt
ZXNjYXBpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9j
dXJseS1icmFjZXMtZXNjYXBpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvdXJpL2N1cmx5LWJyYWNlcy1lc2NhcGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlv
bigiVGVzdCB0aGF0IGN1cmx5IGJyYWNlcyBhcmUgbm90IGVzY2FwZWQgaW4gcmVxdWVzdCBxdWVy
aWVzIChidWcgMTE2ODg3KSIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHJlcSA9
IG5ldyBYTUxIdHRwUmVxdWVzdDsKK3JlcS5vcGVuKCJHRVQiLCAgInJlc291cmNlcy9lY2hvLXVy
aS5waHA/cT17fSIsIHRydWUpOworcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHNob3Vs
ZEJlKCJyZXEucmVzcG9uc2VUZXh0IiwgIicvdXJpL3Jlc291cmNlcy9lY2hvLXVyaS5waHA/cT17
fSciKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KK3JlcS5zZW5kKCk7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy91cmkvY3VybHktYnJhY2VzLWVzY2FwaW5nLmh0bWwKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDog
c3ZuOm1pbWUtdHlwZQojIyAtMCwwICsxICMjCit0ZXh0L2h0bWwKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy91cmkvcmVzb3VyY2Vz
L2VjaG8tdXJpLnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3VyaS9y
ZXNvdXJjZXMvZWNoby11cmkucGhwCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy91cmkvcmVzb3VyY2VzL2VjaG8tdXJpLnBocAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDcgQEAKKzw/cGhwCisgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iKTsKKyAg
ICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UXG4iKTsKKyAg
ICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlk
YXRlXG4iKTsKKyAgICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGVcbiIpOworICAgIGVjaG8gJF9T
RVJWRVJbJ1JFUVVFU1RfVVJJJ107Cis/Pgo=
</data>
<flag name="commit-queue"
          id="224559"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>