<?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>26708</bug_id>
          
          <creation_ts>2009-06-24 21:57:12 -0700</creation_ts>
          <short_desc>XSSAuditor false negatives</short_desc>
          <delta_ts>2009-06-27 12:38:30 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128092</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-24 21:57:12 -0700</bug_when>
    <thetext>Gareth Heyes has been look at our XSSAuditor and found a number of false negatives.  We should fix them:

HTML entities:

test.php?x=%3Ca%20href%3D%26%23x0000006a%26%23x61%26%23x76%26%23x61%26%23x73%26%23x63%26%23x72%26%23x69%26%23x70%26%23x74%26%23x3a%26%23x61%26%23x6c%26%23x65%26%23x72%26%23x74%26%23x28%26%23x31%26%23x29%3Etest%3Ca%3E

test.php?x=%3Cimg%20src=1%20onerror=%26%2397%26%23108%26%23101%26%23114%26%23116%26%2340%26%2349%26%2341%3E

Scheme relative paths:

test.php?x=%3Cscript%20src=//businessinfo.co.uk/labs/xss/xss.js%3E%3C/script%3E

iframe + JavaScript URL:

test.php?x=%3Ciframe%20src=javascript:alert(document.domain)%3E

HTTP-Equiv UTF-7:

test.php?x=%3Cmeta%20http-equiv=%22Content-Type%22%20content=%22text/html;%20charset=UTF-7%22%20/%3E%2bADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAxACkAPAAvAHMAYwByAGkAcAB0AD4-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128411</commentid>
    <comment_count>1</comment_count>
      <attachid>31912</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-25 23:28:07 -0700</bug_when>
    <thetext>Created attachment 31912
Initial patch for false negatives with tests

Resolves issues with HTML entities, scheme relative paths, and iFrame JavaScript URLs. Fix for the HTTP-Equiv UTF-7 forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128415</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-26 00:17:40 -0700</bug_when>
    <thetext>In general, we shouldn&apos;t be duplicating code from other source files.  You should modify the other files to expose the functions you need in their header files.  For example, fixUpChar could be moved to HTMLTokenizer.h (and possibly renamed) and similarly hexDigitValue.

I also wish we didn&apos;t have to write our own XSSAuditor::decodeURLHTMLEntities.  Does this function not exist elsewhere?  If not, we should add it to the right file instead of adding it to the auditor directly.  Also for XSSAuditor::findInRequest, we should only search the parent frame if the current frame&apos;s URL is about:blank.  That should cover the &lt;iframe src=&quot;javascript:...&quot;&gt; case.

Finally, we should do the XSS_AUDITOR_PAGE_HEADERS work in a separate bug / patch because it&apos;s not related to these false negatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128416</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-26 00:38:10 -0700</bug_when>
    <thetext>I will clean up the patch.

I could not find an equivalent function to XSSAuditor::decodeURLHTMLEntities.

(In reply to comment #2)
&gt; In general, we shouldn&apos;t be duplicating code from other source files.  You
&gt; should modify the other files to expose the functions you need in their header
&gt; files.  For example, fixUpChar could be moved to HTMLTokenizer.h (and possibly
&gt; renamed) and similarly hexDigitValue.
&gt; 
&gt; I also wish we didn&apos;t have to write our own XSSAuditor::decodeURLHTMLEntities. 
&gt; Does this function not exist elsewhere?  If not, we should add it to the right
&gt; file instead of adding it to the auditor directly.  Also for
&gt; XSSAuditor::findInRequest, we should only search the parent frame if the
&gt; current frame&apos;s URL is about:blank.  That should cover the &lt;iframe
&gt; src=&quot;javascript:...&quot;&gt; case.
&gt; 
&gt; Finally, we should do the XSS_AUDITOR_PAGE_HEADERS work in a separate bug /
&gt; patch because it&apos;s not related to these false negatives.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128636</commentid>
    <comment_count>4</comment_count>
      <attachid>31972</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-26 21:51:10 -0700</bug_when>
    <thetext>Created attachment 31972
Updated patch with tests.

Cleaned up patch. Fixed HTTP-Equiv UTF-7.

I was not sure where to move the method XSSAuditor::decodeHTMLEntities (formally named decodeURLHTMLEntities). Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128638</commentid>
    <comment_count>5</comment_count>
      <attachid>31973</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-26 22:03:20 -0700</bug_when>
    <thetext>Created attachment 31973
Updated patch with tests.

Removed extraneous header: HTTPHeaderMap.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128655</commentid>
    <comment_count>6</comment_count>
      <attachid>31973</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-27 08:56:41 -0700</bug_when>
    <thetext>Comment on attachment 31973
Updated patch with tests.

This looks great except for the HTML entities part.  That code really shouldn&apos;t be in the XSSAuditor.  It should be shared with the parser.  Can you post a version of the patch without the HTML entities fix?  That way we can get the other issues squared away and focus on the right HTML entities patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128659</commentid>
    <comment_count>7</comment_count>
      <attachid>31978</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-06-27 09:52:09 -0700</bug_when>
    <thetext>Created attachment 31978
Patch without HTML entities support

Removed support for HTML entities.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128660</commentid>
    <comment_count>8</comment_count>
      <attachid>31978</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-27 11:12:57 -0700</bug_when>
    <thetext>Comment on attachment 31978
Patch without HTML entities support

Thanks Dan.  This looks great.  There are some lines with trailing white space, but I&apos;ll fix them when I land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128661</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-27 11:39:39 -0700</bug_when>
    <thetext>Will land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128662</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-27 12:38:30 -0700</bug_when>
    <thetext>I tweaked the patch slightly before landing.  There isn&apos;t any need to store m_parentFrame because you can always get it from m_frame-&gt;tree()-&gt;parent().

Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/security/xssAuditor/http-equiv-utf-7-encoded-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/http-equiv-utf-7-encoded.html
Adding         LayoutTests/http/tests/security/xssAuditor/iframe-javascript-url-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/iframe-javascript-url.html
Adding         LayoutTests/http/tests/security/xssAuditor/resources/echo-intertag-default-encode.pl
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag-utf-7-encoded-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag-utf-7-encoded.html
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-relative-scheme-expected.txt
Adding         LayoutTests/http/tests/security/xssAuditor/script-tag-with-source-relative-scheme.html
Sending        WebCore/ChangeLog
Sending        WebCore/html/HTMLTokenizer.cpp
Sending        WebCore/page/XSSAuditor.cpp
Sending        WebCore/page/XSSAuditor.h
Sending        WebCore/platform/network/ResourceResponseBase.cpp
Sending        WebCore/platform/network/ResourceResponseBase.h
Transmitting file data ................
Committed revision 45312.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31912</attachid>
            <date>2009-06-25 23:28:07 -0700</date>
            <delta_ts>2009-06-26 21:51:10 -0700</delta_ts>
            <desc>Initial patch for false negatives with tests</desc>
            <filename>XSSAuditor_fixes.patch</filename>
            <type>text/plain</type>
            <size>25363</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTI0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDYtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3MDgKKyAg
ICAgICAgCisgICAgICAgIEZpeCB0byBhZGRyZXNzIGZhbHNlIG5lZ2F0aXZlcyB3aXRoIHJlc3Bl
Y3QgdG8gSFRNTCBlbnRpdGllcywgc2NoZW1lIHJlbGF0aXZlIHBhdGhzLAorICAgICAgICBhbmQg
aUZyYW1lIEphdmFTY3JpcHQgVVJMLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGll
cy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2
YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2No
ZW1lLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKTogTW92ZWQgWFNTQXVkaXRvciBj
aGVjayB0byBIVE1MVG9rZW5pemVyOjpwYXJzZVRhZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
b2tlbml6ZXI6OnBhcnNlVGFnKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6IE1vZGlmaWVkIHRv
IGluZm9ybSBYU1NBdWRpdG9yIG9mIHBhcmVudCBmcmFtZSBzbworICAgICAgICBhcyB0byBjb21w
YXJlIGFnYWluc3QgaUZyYW1lIGphdmFzY3JpcHQgVVJMLgorICAgICAgICAqIHBhZ2UvWFNTQXVk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Zml4VXBD
aGFyKToKKyAgICAgICAgKFdlYkNvcmU6OmhleERpZ2l0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6WFNTQXVkaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpzZXRQYXJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVV
UkwpOiBNb2RpZmllZCB0byBjYWxsIGRlY29kZVVSTEhUTUxFbnRpdGllcy4KKyAgICAgICAgKFdl
YkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZVVSTEhUTUxFbnRpdGllcyk6IEFkZGVkIG1ldGhvZCB0
byBzdXBwb3J0IGRlY29kaW5nIEhUTUwgZW50aXRpZXMsCisgICAgICAgIGNvbmZvcm1zIHRvIGZ1
bmN0aW9uYWxpdHkgb2YgSFRNTFRva2VuaXplcjo6cGFyc2VFbnRpdHkuCisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KTogR2VuZXJhbGl6ZWQgdG8gYXJiaXRyYXJ5
IGZyYW1lIHNvIGFzIHRvIHByZXZlbnQgZXhlY3V0aW9uCisgICAgICAgIG9mIGlGcmFtZSBqYXZh
c2NyaXB0IFVSTC4KKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuaDogQWRkZWQgZmllbGQgbV9w
YXJlbnRGcmFtZS4KKwogMjAwOS0wNi0yNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxU
b2tlbml6ZXIuY3BwCShyZXZpc2lvbiA0NTI0NykKKysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5p
emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDE0ICs0MzcsMTEgQEAgSFRNTFRva2VuaXpl
cjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQogICAgICAgICAgICAgICAgIGlmICghbV9kb2Mt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3Rpbmcg
c2NyaXB0IGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5lbGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAg
ICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3IgJiYgbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0
ZXJuYWxTY3JpcHRGcm9tU3JjKG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlKSkgewotICAgICAgICAg
ICAgICAgICAgICAvLyBUaGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBl
eGFtcGxlIGEgd2luZG93LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCi0gICAgICAg
ICAgICAgICAgICAgIC8vIElmIHNvLCB3ZSBkb24ndCB3YW50IHRvIGxvYWQgc2NyaXB0cy4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRv
Y0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLCBtX3Njcmlw
dFRhZ0NoYXJzZXRBdHRyVmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGVuZGlu
Z1NjcmlwdHMuYXBwZW5kKGNzKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAvLyBUaGUgcGFyc2VyIG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5
IGZvciBleGFtcGxlIGEgd2luZG93LmNsb3NlIGNhbGwgaW4gYW4gZWFybGllciBzY3JpcHQuCisg
ICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgor
ICAgICAgICAgICAgICAgIGlmICghbV9wYXJzZXJTdG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NM
b2FkZXIoKS0+cmVxdWVzdFNjcmlwdChtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRU
YWdDaGFyc2V0QXR0clZhbHVlKSkpCisgICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1Njcmlw
dHMuYXBwZW5kKGNzKTsKKyAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
IG1fc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBt
X3NjcmlwdE5vZGUgPSAwOwpAQCAtMTQ3Niw4ICsxNDczLDExIEBAIEhUTUxUb2tlbml6ZXI6OlN0
YXRlIEhUTUxUb2tlbml6ZXI6OnBhcnMKICAgICAgICAgICAgICAgICBtX3NjcmlwdFRhZ0NoYXJz
ZXRBdHRyVmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50VG9r
ZW4uYXR0cnMgJiYgIW1fZnJhZ21lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZG9j
LT5mcmFtZSgpICYmIG1fZG9jLT5mcmFtZSgpLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9IG1fY3VycmVudFRva2VuLmF0dHJzLT5nZXRB
dHRyaWJ1dGVJdGVtKHNyY0F0dHIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9
IG1fY3VycmVudFRva2VuLmF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVtKHNyY0F0dHIpKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2Mt
PmNvbXBsZXRlVVJMKHBhcnNlVVJMKGEtPnZhbHVlKCkpKS5zdHJpbmcoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9YU1NBdWRpdG9yICYmICFtX1hTU0F1ZGl0b3ItPmNhbkxv
YWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYS0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gU3RyaW5nKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA0
NTI0NykKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgyLDYgKzQ4Miw5IEBAIEZyYW1lKiBGcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxG
cmEKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jaGVja0NvbXBsZXRlZCgpOwogICAgIH0KIAor
ICAgIC8vIFNldCB0aGUgcGFyZW50IG9mIHRoZSBzdWIgZnJhbWUgdG8gdGhlIGZyYW1lIG9mIHRo
aXMgZnJhbWVsb2FkZXIuCisgICAgZnJhbWUtPnNjcmlwdCgpLT54c3NBdWRpdG9yKCktPnNldFBh
cmVudEZyYW1lKG1fZnJhbWUpOworICAgIAogICAgIHJldHVybiBmcmFtZS5nZXQoKTsKIH0KIApJ
bmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gNDUyNDcpCisrKyBXZWJDb3JlL3BhZ2UvWFNT
QXVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvQVNDSUlD
VHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2luY2x1ZGUgIkNvbnNv
bGUuaCIKQEAgLTM0LDIxICszNSw1MiBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVFRQ
SGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKIAorI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jIgorCit1c2luZyBuYW1lc3BhY2Ug
V1RGOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gIAorCisvLyBUaGlzIGFycmF5IGFsc28gYXBw
ZWFycyBpbiBmaWxlIEhUTUxUb2tlbml6ZXIuY3BwLgorc3RhdGljIGNvbnN0IFVDaGFyIHdpbmRv
d3NMYXRpbjFFeHRlbnNpb25BcnJheVszMl0gPSB7CisgICAgMHgyMEFDLCAweDAwODEsIDB4MjAx
QSwgMHgwMTkyLCAweDIwMUUsIDB4MjAyNiwgMHgyMDIwLCAweDIwMjEsIC8vIDgwLTg3CisgICAg
MHgwMkM2LCAweDIwMzAsIDB4MDE2MCwgMHgyMDM5LCAweDAxNTIsIDB4MDA4RCwgMHgwMTdELCAw
eDAwOEYsIC8vIDg4LThGCisgICAgMHgwMDkwLCAweDIwMTgsIDB4MjAxOSwgMHgyMDFDLCAweDIw
MUQsIDB4MjAyMiwgMHgyMDEzLCAweDIwMTQsIC8vIDkwLTk3CisgICAgMHgwMkRDLCAweDIxMjIs
IDB4MDE2MSwgMHgyMDNBLCAweDAxNTMsIDB4MDA5RCwgMHgwMTdFLCAweDAxNzggIC8vIDk4LTlG
Cit9OworCisvLyBUaGlzIG1ldGhvZCBhbHNvIGFwcGVhcnMgaW4gZmlsZSBIVE1MVG9rZW5pemVy
LmNwcC4KK3N0YXRpYyBpbmxpbmUgVUNoYXIgZml4VXBDaGFyKFVDaGFyIGMpCit7CisgICAgaWYg
KChjICYgfjB4MUYpICE9IDB4MDA4MCkKKyAgICAgICAgcmV0dXJuIGM7CisgICAgcmV0dXJuIHdp
bmRvd3NMYXRpbjFFeHRlbnNpb25BcnJheVtjIC0gMHg4MF07Cit9ICAgIAorCiAvLyBUaGlzIG1l
dGhvZCBhbHNvIGFwcGVhcnMgaW4gZmlsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAuCiBzdGF0
aWMgYm9vbCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKIHsKICAgICByZXR1cm4gYyA8ICcg
JyB8fCBjID09IDEyNzsKIH0KKworLy8gVGhpcyBtZXRob2QgYWxzbyBhcHBlYXJzIGluIGZpbGUg
S1VSTC5jcHAuCitzdGF0aWMgaW5saW5lIGludCBoZXhEaWdpdFZhbHVlKFVDaGFyIGMpCit7Cisg
ICAgQVNTRVJUKGlzQVNDSUlIZXhEaWdpdChjKSk7CisgICAgaWYgKGMgPCAnQScpCisgICAgICAg
IHJldHVybiBjIC0gJzAnOworICAgIHJldHVybiAoYyAtICdBJyArIDEwKSAmIDB4RjsgLy8gaGFu
ZGxlIGJvdGggdXBwZXIgYW5kIGxvd2VyIGNhc2Ugd2l0aG91dCBhIGJyYW5jaAorfQogICAKIFhT
U0F1ZGl0b3I6OlhTU0F1ZGl0b3IoRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkK
KyAgICAsIG1fcGFyZW50RnJhbWUoMCkKIHsKIH0KIApAQCAtNjEsNiArOTMsMTEgQEAgYm9vbCBY
U1NBdWRpdG9yOjppc0VuYWJsZWQoKSBjb25zdAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1f
ZnJhbWUtPnNldHRpbmdzKCk7CiAgICAgcmV0dXJuIChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+eHNz
QXVkaXRvckVuYWJsZWQoKSk7CiB9CisKK3ZvaWQgWFNTQXVkaXRvcjo6c2V0UGFyZW50RnJhbWUo
RnJhbWUqIGZyYW1lKQoreworICAgIG1fcGFyZW50RnJhbWUgPSBmcmFtZTsKK30KICAgCiBib29s
IFhTU0F1ZGl0b3I6OmNhbkV2YWx1YXRlKGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSkgY29uc3QK
IHsKQEAgLTEwOSwzNSArMTQ2LDE1OCBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRPYmplY3Qo
Y29uc3QgU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBYU1NBdWRpdG9yOjpkZWNv
ZGVVUkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJv
b2wgYWxsb3dOdWxsQ2hhcmFjdGVycykKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29u
c3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgYWxsb3dD
b250cm9sQ2hhcmFjdGVycykKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIFN0cmluZyB1cmwg
PSBzdHI7CiAgICAgCiAgICAgdXJsLnJlcGxhY2UoJysnLCAnICcpOwogICAgIHJlc3VsdCA9IGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwsIGVuY29kaW5nKTsKLSAgICByZXR1cm4gYWxsb3dO
dWxsQ2hhcmFjdGVycyA/IHJlc3VsdCA6IHJlc3VsdC5yZW1vdmVDaGFyYWN0ZXJzKCZpc0NvbnRy
b2xDaGFyYWN0ZXIpOworICAgIGlmICghYWxsb3dDb250cm9sQ2hhcmFjdGVycykKKyAgICAgICAg
cmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7CisgICAgCisgICAg
cmV0dXJuIGRlY29kZVVSTEhUTUxFbnRpdGllcyhyZXN1bHQsIHRydWUsIGFsbG93Q29udHJvbENo
YXJhY3RlcnMpOworfQorICAgIAorU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTEhUTUxFbnRp
dGllcyhjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCBjbG9zZUxhc3RFbnRpdHksIGJvb2wgYWxsb3dD
b250cm9sQ2hhcmFjdGVycykKK3sKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKyAgICBpbnQg
bGVuZ3RoID0gc3RyLmxlbmd0aCgpOworICAgIGludCBlbmNvZGVkUnVuUG9zaXRpb24gPSAwOwor
ICAgIGludCBzZWFyY2hQb3NpdGlvbiA9IDA7CisgICAgaW50IGRlY29kZWRQb3NpdGlvbiA9IDA7
CisgICAgaW50IGVuY29kZWRSdW5MZW5ndGggPSAwOworICAgIHVuc2lnbmVkIEVudGl0eVVuaWNv
ZGVWYWx1ZSA9IDA7CisgICAgdW5zaWduZWQgbGwgPSAwOworICAgIGNvbnN0IFVDaGFyKiBxID0g
MDsKKyAgICBib29sIGZvdW5kSW52YWxpZENoYXIgPSBmYWxzZTsKKyAgICAKKyAgICB3aGlsZSAo
KGVuY29kZWRSdW5Qb3NpdGlvbiA9IHN0ci5maW5kKCcmJywgc2VhcmNoUG9zaXRpb24pKSA+PSAw
IAorICAgICAgICAgICAmJiAoZW5jb2RlZFJ1bkxlbmd0aCA9IGxlbmd0aCAtIGVuY29kZWRSdW5Q
b3NpdGlvbikgPj0gMikgeworICAgICAgICB1bnNpZ25lZCBlbmNvZGVkUnVuRW5kID0gZW5jb2Rl
ZFJ1blBvc2l0aW9uOworICAgICAgICBzZWFyY2hQb3NpdGlvbiA9IGVuY29kZWRSdW5FbmQgKyAx
OworICAgICAgICAKKyAgICAgICAgaWYgKHN0cltlbmNvZGVkUnVuRW5kICsgMV0gPT0gJyMnKSB7
CisgICAgICAgICAgICBFbnRpdHlVbmljb2RlVmFsdWUgPSAwOworICAgICAgICAgICAgcSA9IDA7
CisgICAgICAgICAgICBpZiAoZW5jb2RlZFJ1bkxlbmd0aCA+PSA0CisgICAgICAgICAgICAgICAg
JiYgKHN0cltlbmNvZGVkUnVuRW5kICsgMl0gPT0gJ3gnIHx8IHN0cltlbmNvZGVkUnVuRW5kICsg
Ml0gPT0gJ1gnKQorICAgICAgICAgICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChzdHJbZW5jb2Rl
ZFJ1bkVuZCArIDNdKSkgeworICAgICAgICAgICAgICAgIC8vIFBhcnNlIEhleGFkZWNpbWFsLgor
ICAgICAgICAgICAgICAgIGxsID0gc3RkOjptaW4oZW5jb2RlZFJ1bkxlbmd0aCAtIDMsIDgpOwor
ICAgICAgICAgICAgICAgIHEgPSBzdHIuY2hhcmFjdGVycygpICsgKGVuY29kZWRSdW5FbmQgKyAz
KTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGw7ICsraSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAocVswXSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICsrcTsgLy8gSW5jcmVtZW50IHEgc28gdGhhdCB3ZSBkbyBub3QgaW5jbHVkZSB0aGUg
JzsnIGluIHRoZSBkZWNvZGVkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChxWzBdID09
ICcmJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWlzQVNDSUlIZXhEaWdpdChxWzBdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFjbG9zZUxhc3RFbnRpdHkgfHwgcSA9PSAoc3RyLmNoYXJhY3RlcnMoKSArIChlbmNvZGVk
UnVuRW5kICsgMikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW52YWxpZENo
YXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgRW50aXR5VW5pY29kZVZhbHVlID0gKEVudGl0
eVVuaWNvZGVWYWx1ZSA8PCA0KSB8IGhleERpZ2l0VmFsdWUocVswXSk7CisgICAgICAgICAgICAg
ICAgICAgICsrcTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVu
Y29kZWRSdW5MZW5ndGggPj0gMyAKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNBU0NJSURp
Z2l0KHN0cltlbmNvZGVkUnVuRW5kICsgMl0pKSB7CisgICAgICAgICAgICAgICAgLy8gUGFyc2Ug
ZGVjaW1hbC4KKyAgICAgICAgICAgICAgICBsbCA9IHN0ZDo6bWluKGVuY29kZWRSdW5MZW5ndGgg
LSAyLCA4KTsKKyAgICAgICAgICAgICAgICBxID0gc3RyLmNoYXJhY3RlcnMoKSArIChlbmNvZGVk
UnVuRW5kICsgMik7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxs
OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHFbMF0gPT0gJzsnKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICArK3E7IC8vIEluY3JlbWVudCBxIHNvIHRoYXQgd2UgZG8gbm90IGlu
Y2x1ZGUgdGhlICc7JyBpbiB0aGUgZGVjb2RlZCBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAocVswXSA9PSAnJicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQocVswXSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2xvc2VMYXN0RW50aXR5IHx8IHEgPT0gKHN0ci5jaGFyYWN0ZXJzKCkgKyAo
ZW5jb2RlZFJ1bkVuZCArIDIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZElu
dmFsaWRDaGFyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEVudGl0eVVuaWNvZGVWYWx1ZSA9
IEVudGl0eVVuaWNvZGVWYWx1ZSAqIDEwICsgKHFbMF0gLSAnMCcpOworICAgICAgICAgICAgICAg
ICAgICArK3E7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgLy8gUGFyc2UgZW50aXR5IG5hbWUuCisgICAgICAgICAgICBjaGFy
IGVudGl0eU5hbWVCdWZmZXJbMTBdOworICAgICAgICAgICAgbGwgPSBzdGQ6Om1pbihlbmNvZGVk
UnVuTGVuZ3RoIC0gMSwgKGludCkgc2l6ZW9mKGVudGl0eU5hbWVCdWZmZXIpIC0gMSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBlbnRpdHlOYW1lTGVuZ3RoU29GYXIgPSAwOyAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSBlbnRpdHkgbmFtZS4KKyAgICAgICAgICAgIHEgPSBzdHIuY2hhcmFjdGVycygpICsg
KGVuY29kZWRSdW5FbmQgKyAxKTsKKyAgICAgICAgICAgIGZvciAoOyBlbnRpdHlOYW1lTGVuZ3Ro
U29GYXIgPCBsbDsgKytlbnRpdHlOYW1lTGVuZ3RoU29GYXIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAocVswXSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgKytxOyAvLyBJbmNyZW1lbnQg
cSBzbyB0aGF0IHdlIGRvIG5vdCBpbmNsdWRlIHRoZSAnOycgaW4gdGhlIGRlY29kZWQgc3RyaW5n
LgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKHFbMF0gPT0gJyYnKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMocVswXSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjbG9zZUxhc3RFbnRpdHkgfHwgcSA9PSAoc3RyLmNoYXJhY3RlcnMo
KSArIChlbmNvZGVkUnVuRW5kICsgMikpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJ
bnZhbGlkQ2hhciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbnRpdHlOYW1lQnVmZmVyW2VudGl0eU5hbWVMZW5n
dGhTb0Zhcl0gPSBxWzBdOworICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNvbnN0IEVudGl0eSogZSA9IChmb3VuZEludmFsaWRDaGFyKT8gMCA6IGZpbmRF
bnRpdHkoJmVudGl0eU5hbWVCdWZmZXJbMF0sIGVudGl0eU5hbWVMZW5ndGhTb0Zhcik7CisgICAg
ICAgICAgICBpZiAoZSkKKyAgICAgICAgICAgICAgICBFbnRpdHlVbmljb2RlVmFsdWUgPSBlLT5j
b2RlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZm91bmRJbnZhbGlkQ2hhciB8
fCBFbnRpdHlVbmljb2RlVmFsdWUgPT0gMCB8fCBFbnRpdHlVbmljb2RlVmFsdWUgPiAweDEwRkZG
RikgeworICAgICAgICAgICAgZm91bmRJbnZhbGlkQ2hhciA9IGZhbHNlOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3Ry
LmNoYXJhY3RlcnMoKSArIGRlY29kZWRQb3NpdGlvbiwgZW5jb2RlZFJ1blBvc2l0aW9uIC0gZGVj
b2RlZFBvc2l0aW9uKTsKKyAgICAgICAgaWYgKGFsbG93Q29udHJvbENoYXJhY3RlcnMgfHwgIWlz
Q29udHJvbENoYXJhY3RlcihFbnRpdHlVbmljb2RlVmFsdWUpKQorICAgICAgICAgICAgaWYgKEVu
dGl0eVVuaWNvZGVWYWx1ZSA8PSAweEZGRkYpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChmaXhVcENoYXIoRW50aXR5VW5pY29kZVZhbHVlKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFUxNl9MRUFEKEVudGl0eVVuaWNvZGVWYWx1ZSkp
OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVTE2X1RSQUlMKEVudGl0eVVuaWNvZGVW
YWx1ZSkpOworICAgICAgICAgICAgfQorICAgICAgICBkZWNvZGVkUG9zaXRpb24gPSAocSk/IHEg
LSBzdHIuY2hhcmFjdGVycygpIDogZW5jb2RlZFJ1bkVuZDsKKyAgICB9CisgICAgCisgICAgcmVz
dWx0LmFwcGVuZChzdHIuY2hhcmFjdGVycygpICsgZGVjb2RlZFBvc2l0aW9uLCBsZW5ndGggLSBk
ZWNvZGVkUG9zaXRpb24pOworICAgIAorICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7
CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QKIHsKLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgU3RyaW5n
IHBhZ2VVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICBib29s
IHJlc3VsdCA9IGZhbHNlOworICAgIGlmIChtX3BhcmVudEZyYW1lKQorICAgICAgICByZXN1bHQg
PSBmaW5kSW5SZXF1ZXN0KG1fcGFyZW50RnJhbWUsIHN0cmluZyk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3QobV9mcmFtZSwgc3RyaW5nKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorICAgIAorYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZy
YW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZy
YW1lLT5kb2N1bWVudCgpKTsKKyAgICBTdHJpbmcgcGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKTsKICAgICAKICAgICBpZiAocHJvdG9jb2xJcyhwYWdlVVJMLCAiZGF0
YSIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgCiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8
IHBhZ2VVUkwubGVuZ3RoKCkpIHsKICAgICAgICAgLy8gVGhlIHN0cmluZyBjYW4gYWN0dWFsbHkg
Zml0IGluc2lkZSB0aGUgcGFnZVVSTC4KLSAgICAgICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0g
ZGVjb2RlVVJMKHBhZ2VVUkwsIG1fZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2Rp
bmcoKSk7CisgICAgICAgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChwYWdlVVJM
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKICAgICAgICAgaWYg
KGRlY29kZWRQYWdlVVJMLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCiAgICAgICAgICAg
IHJldHVybiB0cnVlOyAgLy8gV2UndmUgZm91bmQgdGhlIHNtb2tpbmcgZ3VuLgogICAgIH0KICAg
ICAKLSAgICBGb3JtRGF0YSogZm9ybURhdGFPYmogPSBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJvZHkoKTsKKyAgICBGb3JtRGF0YSog
Zm9ybURhdGFPYmogPSBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhT2JqICYmICFmb3JtRGF0YU9i
ai0+aXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyBmb3JtRGF0YSA9IGZvcm1EYXRhT2JqLT5m
bGF0dGVuVG9TdHJpbmcoKTsKICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA8IGZvcm1EYXRh
Lmxlbmd0aCgpKSB7CkBAIC0xNDUsMTIgKzMwNSwyNSBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbmRJ
blJlcXVlc3QoY29uc3QgU3RyCiAgICAgICAgICAgICAvLyB0aGUgdXJsLWVuY29kZWQgUE9TVCBk
YXRhIGJlY2F1c2UgdGhlIGxlbmd0aCBvZiB0aGUgdXJsLWRlY29kZWQKICAgICAgICAgICAgIC8v
IGNvZGUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIHVybC1lbmNv
ZGVkCiAgICAgICAgICAgICAvLyBzdHJpbmcuCi0gICAgICAgICAgICBTdHJpbmcgZGVjb2RlZEZv
cm1EYXRhID0gZGVjb2RlVVJMKGZvcm1EYXRhLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVy
KCktPmVuY29kaW5nKCkpOworICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRl
Y29kZVVSTChmb3JtRGF0YSwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2Rpbmco
KSk7CiAgICAgICAgICAgICBpZiAoZGVjb2RlZEZvcm1EYXRhLmZpbmQoc3RyaW5nLCAwLCBmYWxz
ZSkgIT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSBmb3VuZCB0aGUg
c3RyaW5nIGluIHRoZSBQT1NUIGRhdGEuCiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyNpZiBF
TkFCTEUoWFNTX0FVRElUT1JfUEFHRV9IRUFERVJTKQorICAgIEhUVFBIZWFkZXJNYXAgcGFnZUhl
YWRlcnMgPSBmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVz
dCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBwYWdlSGVhZGVycy5lbmQoKTsKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gcGFnZUhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgPCBoZWFkZXJWYWx1ZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgU3RyaW5n
IGRlY29kZWRIZWFkZXJWYWx1ZSA9IGRlY29kZVVSTChoZWFkZXJWYWx1ZSwgZnJhbWUtPmRvY3Vt
ZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgICAgICBpZiAoZGVjb2RlZEhl
YWRlclZhbHVlLmZpbmQoc3RyaW5nLCAwLCBmYWxzZSkgIT0gLTEpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7IC8vIFdlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIEhFQUQgZGF0YS4KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRl
eDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
WFNTQXVkaXRvci5oCShyZXZpc2lvbiA0NTI0NykKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgflhTU0F1ZGl0b3IoKTsKIAogICAgICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0
OworICAgICAgICAKKyAgICAgICAgLy8gU2V0cyB0aGUgcGFyZW50IGZyYW1lIG9mIHRoaXMgZnJh
bWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBGcmFt
ZUxvYWRlcjo6bG9hZFN1YmZyYW1lLgorICAgICAgICB2b2lkIHNldFBhcmVudEZyYW1lKEZyYW1l
Kik7CiAKICAgICAgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJl
IGFsbG93ZWQgb3IgZGVuaWVkIGV4ZWN1dGlvbgogICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29u
dGVudCBvZiBhbnkgdXNlci1zdWJtaXR0ZWQgZGF0YS4KQEAgLTg5LDEyICs5NCwyOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgY2FuTG9hZE9iamVjdChjb25zdCBTdHJpbmcm
IHVybCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29k
ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVU
RjhFbmNvZGluZygpLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMgPSBmYWxzZSk7CisgICAgICAg
IHN0YXRpYyBTdHJpbmcgZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nID0gVVRGOEVuY29kaW5nKCksIGJvb2wgYWxsb3dDb250cm9sQ2hhcmFj
dGVycyA9IGZhbHNlKTsKIAorICAgICAgICAvLyBEZWNvZGVzIHRoZSBIVE1MIGVudGl0aWVzIGlu
IHRoZSBzcGVjaWZpZWQgc3RyaW5nLiBNYWxmb3JtZWQgZW50aXRlcyByZW1haW4gaW4gdGhlIGRl
Y29kZWQgc3RyaW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJZiBjbG9zZUxhc3RFbnRpdHkg
PT0gdHJ1ZSBhbmQgdGhlIGxhc3QgSFRNTCBlbnRpdHkgZG9lcyBub3QgY29udGFpbiBhIGNsb3Np
bmcgJzsnLCB0aGVuIGl0IGlzIGF1dG9tYXRpY2FsbHkgY2xvc2VkLgorICAgICAgICAvLyBGb3Ig
ZXhhbXBsZSwgZGVjb2RlVVJMSFRNTEVudGl0aWVzKCImIzY1JiMxMTImIzExMiYjMTA4JiMxMDEi
LCB0cnVlLCBmYWxzZSkgaXMgZXF1YWwgdG8gCisgICAgICAgIC8vIGRlY29kZVVSTEhUTUxFbnRp
dGllcygiJiM2NSYjMTEyJiMxMTImIzEwOCYjMTAxOyIsIGZhbHNlLCBmYWxzZSkuIE5vdGljZSB0
aGUgc3RyaW5ncyBpbiB0aGUgYWJvdmUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyIAorICAgICAgICAv
LyBpbiB0aGVpciBleGNsdXNpb24gb3IgaW5jbHVzaW9uIG9mIHRoZSAnOycgdGVybWluYXRpb24g
c2VudGluZWwsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2hlbiBjbG9z
ZUxhc3RFbnRpdHkgPT0gZmFsc2UsIGFuZCBhbGxvd0NvbnRyb2xDaGFyYWN0ZXJzID09IHRydWUs
IHRoZW4gdGhpcyBmdW5jdGlvbiBjb25mb3JtcyB0byB0aGUgZnVuY3Rpb25hbGl0eSAKKyAgICAg
ICAgLy8gb2YgSFRNTFRva2VuaXplcjo6cGFyc2VFbnRpdHkgKHJldi4gNDQ5OTUpLgorICAgICAg
ICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTEhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmIHN0ciwg
Ym9vbCBjbG9zZUxhc3RFbnRpdHkgPSBmYWxzZSwgYm9vbCBhbGxvd0NvbnRyb2xDaGFyYWN0ZXJz
ID0gZmFsc2UpOworICAgICAgICAKICAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0
cmluZyYpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KEZyYW1l
KiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhlIGZyYW1lIHRvIGF1ZGl0
LgogICAgICAgICBGcmFtZSogbV9mcmFtZTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoZSBwYXJl
bnQgZnJhbWUgb2YgdGhpcyBmcmFtZS4gT25seSB2YWxpZCBpZiB0aGlzIGlzIHN1YiBmcmFtZS4K
KyAgICAgICAgRnJhbWUqIG1fcGFyZW50RnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDUyNDcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wNi0yNSAgRGFuaWVsIEJh
dGVzICA8ZGJhdGVzQGludHVkYXRhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRlc3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3MDgKKyAgICAgICAgCisgICAgICAgIFRlc3RzIHByZXZl
bnRpb24gb2YgaW5qZWN0ZWQgc2NyaXB0cyB3aXRoIEhUTUwgZW50aXRpZXMgZW5jb2RpbmcsIHNj
aGVtZSByZWxhdGl2ZSBwYXRocywgCisgICAgICAgIGFuZCBpRnJhbWUgSmF2YVNjcmlwdCBVUkxz
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFz
Y3JpcHQtdXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50
aXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1M
LWVudGl0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy1jbGljay1hbmQtbm90aWZ5LnBsOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1z
Y2hlbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbDog
QWRkZWQuCisKIDIwMDktMDYtMjUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWph
dmFzY3JpcHQtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWph
dmFzY3JpcHQtdXJsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1q
YXZhc2NyaXB0LXVybC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0Np
ZnJhbWUlMjBzcmM9amF2YXNjcmlwdDphbGVydChkb2N1bWVudC5kb21haW4pJTNFJz4KKzwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQt
SFRNTC1lbnRpdGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1ldmVudC1IVE1MLWVudGl0aWVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVz
ZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQg
Zm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1ldmVudC1IVE1MLWVudGl0aWVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lubGlu
ZS1ldmVudC1IVE1MLWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP3E9JTNDaW1nJTIwc3JjPTElMjBv
bmVycm9yPSUyNiUyMzk3JTI2JTIzMTA4JTI2JTIzMTAxJTI2JTIzMTE0JTI2JTIzMTE2JTI2JTIz
NDAlMjYlMjM0OSUyNiUyMzQxJTNFJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2Ny
aXB0LWxpbmstSFRNTC1lbnRpdGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEph
dmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVl
c3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1M
LWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JF
bmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3Jj
PSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy1jbGljay1hbmQtbm90aWZ5LnBsP2VsbWlkPWFuY2hvckxpbmsmcT0lM0NhK2lk
JTNEYW5jaG9yTGluaytocmVmJTNEJTI2JTIzeDAwMDAwMDZhJTI2JTIzeDYxJTI2JTIzeDc2JTI2
JTIzeDYxJTI2JTIzeDczJTI2JTIzeDYzJTI2JTIzeDcyJTI2JTIzeDY5JTI2JTIzeDcwJTI2JTIz
eDc0JTI2JTIzeDNhJTI2JTIzeDYxJTI2JTIzeDZjJTI2JTIzeDY1JTI2JTIzeDcyJTI2JTIzeDc0
JTI2JTIzeDI4JTI2JTIzeDMxJTI2JTIzeDI5JTNFdGVzdCUzQ2ElM0UnPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3Vy
Y2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1y
ZWxhdGl2ZS1zY2hlbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVs
YXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRh
Zy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJj
ZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXJlbGF0aXZl
LXNjaGVtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0NzY3JpcHQr
c3JjJTNELy8xMjcuMC4wLjElM0E4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3hz
cy5qcyUzRSUzQy9zY3JpcHQlM0UnPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnku
cGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3Vy
Y2VzL2VjaG8taW50ZXJ0YWctY2xpY2stYW5kLW5vdGlmeS5wbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyOCBAQAorIyEvdXNyL2Jpbi9wZXJsIC13VAordXNlIHN0cmljdDsKK3VzZSBDR0k7CisK
K215ICRjZ2kgPSBuZXcgQ0dJOworCitwcmludCAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNo
YXJzZXQ9VVRGLThcblxuIjsKKworcHJpbnQgIjwhRE9DVFlQRSBodG1sPlxuIjsKK3ByaW50ICI8
aHRtbD5cbiI7CitwcmludCAiPGhlYWQ+XG4iOworcHJpbnQgIjxzY3JpcHQ+XG4iOworcHJpbnQg
IndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpXG4iOworcHJpbnQgIntcbiI7CitwcmludCAiICAg
IHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7XG4iOworcHJp
bnQgIiAgICBldmVudC5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7XG4iOworcHJpbnQg
IiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIi4kY2dpLT5wYXJhbSgnZWxtaWQnKS4iJyku
ZGlzcGF0Y2hFdmVudChldmVudCk7XG4iOworcHJpbnQgIn1cbiI7CitwcmludCAiPC9zY3JpcHQ+
XG4iOworcHJpbnQgIjwvaGVhZD5cbiI7CitwcmludCAiPGJvZHk+XG4iOworcHJpbnQgJGNnaS0+
cGFyYW0oJ3EnKTsKK3ByaW50ICI8c2NyaXB0PlxuIjsKK3ByaW50ICJpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKVxuIjsKK3ByaW50ICIgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpO1xuIjsKK3ByaW50ICI8L3NjcmlwdD5cbiI7CitwcmludCAiPC9ib2R5PlxuIjsK
K3ByaW50ICI8L2h0bWw+XG4iOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNsaWNr
LWFuZC1ub3RpZnkucGwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31972</attachid>
            <date>2009-06-26 21:51:10 -0700</date>
            <delta_ts>2009-06-26 22:03:20 -0700</delta_ts>
            <desc>Updated patch with tests.</desc>
            <filename>XSSAuditor_p2_.patch</filename>
            <type>text/plain</type>
            <size>30694</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC02OTUsNiArNjk1LDQyIEBACiAgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
ICAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjp+U1ZHSW1hZ2UpOiBUd2VhayB0aGlzIEFTU0VS
VCAtIFNWR0ltYWdlcyBtaWdodCBnZXQgZGVzdHJveWVkIHdpdGhvdXQgZXZlciBoYXZpbmcgYSBj
bGllbnQuCiAKKzIwMDktMDYtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3MDggICAKKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRm
LTctZW5jb2RlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1s
aW5rLUhUTUwtZW50aXRpZXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWctdXRmLTctZW5jb2RlZC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1y
ZWxhdGl2ZS1zY2hlbWUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpeFVwRW50aXR5VmFsdWUpOiBGb3JtZXJseSBjYWxsZWQgV2Vi
Q29yZTo6Zml4VXBDaGFyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0
SGFuZGxlcik6IE1vdmVkIFhTU0F1ZGl0b3IgY2hlY2sgdG8gSFRNTFRva2VuaXplcjo6cGFyc2VU
YWcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpwYXJzZUVudGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpwYXJzZVRhZyk6CisgICAgICAgICogaHRtbC9I
VE1MVG9rZW5pemVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUpOiBNb2RpZmllZCB0byBpbmZv
cm0gWFNTQXVkaXRvciBvZiBwYXJlbnQgZnJhbWUgc28KKyAgICAgICAgYXMgdG8gY29tcGFyZSBh
Z2FpbnN0IGlGcmFtZSBqYXZhc2NyaXB0IFVSTC4KKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3Iu
Y3BwOiBSZW1vdmVkIG1ldGhvZCBYU1NBdWRpdG9yOjppc0NvbnRyb2xDaGFyYWN0ZXIuIEluc3Rl
YWQsIGV4cG9zZWQgbWV0aG9kCisgICAgICAgIGlzQ29udHJvbENoYXJhY3RlciBpbiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpYU1NBdWRp
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFBhcmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZVVSTCk6IE1vZGlmaWVkIHRvIGNhbGwg
ZGVjb2RlSFRNTEVudGl0aWVzLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2Rl
SFRNTEVudGl0aWVzKTogQWRkZWQgbWV0aG9kIHRvIHN1cHBvcnQgZGVjb2RpbmcgSFRNTCBlbnRp
dGllcywKKyAgICAgICAgY29uZm9ybXMgdG8gZnVuY3Rpb25hbGl0eSBvZiBIVE1MVG9rZW5pemVy
OjpwYXJzZUVudGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbmRJblJlcXVl
c3QpOiBHZW5lcmFsaXplZCB0byBhcmJpdHJhcnkgZnJhbWUgc28gYXMgdG8gcHJldmVudCBleGVj
dXRpb24KKyAgICAgICAgb2YgaUZyYW1lIGphdmFzY3JpcHQgVVJMLgorICAgICAgICAqIHBhZ2Uv
WFNTQXVkaXRvci5oOiBBZGRlZCBmaWVsZCBtX3BhcmVudEZyYW1lLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNDb250cm9sQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmg6CisKIDIwMDktMDYtMjUgIFBpZXJyZSBkJ0hlcmJlbW9udCAgPHBkaGVy
YmVtb250QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0
YXRpYyBjb25zdCBVQ2hhciB3aW5kb3dzTGF0aW4xRXh0ZW5zaW8KICAgICAweDAyREMsIDB4MjEy
MiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1MywgMHgwMDlELCAweDAxN0UsIDB4MDE3OCAgLy8gOTgt
OUYKIH07CiAKLXN0YXRpYyBpbmxpbmUgVUNoYXIgZml4VXBDaGFyKFVDaGFyIGMpCitVQ2hhciBm
aXhVcEVudGl0eVZhbHVlKFVDaGFyIGMpCiB7CiAgICAgaWYgKChjICYgfjB4MUYpICE9IDB4MDA4
MCkKICAgICAgICAgcmV0dXJuIGM7CkBAIC00MzcsMTQgKzQzNywxMSBAQCBIVE1MVG9rZW5pemVy
OjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgICAgICAgICAgaWYgKCFtX2RvYy0+
b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVxdWVzdGluZyBz
Y3JpcHQgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0gICAg
ICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiBtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRl
cm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9yIGV4
YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KLSAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9j
TG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUsIG1fc2NyaXB0
VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5n
U2NyaXB0cy5hcHBlbmQoY3MpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAwOwotICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkg
Zm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KKyAg
ICAgICAgICAgICAgICAvLyBJZiBzbywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCisg
ICAgICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xv
YWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLCBtX3NjcmlwdFRh
Z0NoYXJzZXRBdHRyVmFsdWUpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0
cy5hcHBlbmQoY3MpOworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
bV9zY3JpcHROb2RlID0gMDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1f
c2NyaXB0Tm9kZSA9IDA7CkBAIC04NTksNyArODU2LDcgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUg
SFRNTFRva2VuaXplcjo6cGFycwogICAgICAgICAgICAgICAgICAgICAgICAgc3JjLmFkdmFuY2VQ
YXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoRW50aXR5VW5pY29kZVZh
bHVlIDw9IDB4RkZGRikgewogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tCdWZmZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wdXNoKGZpeFVwQ2hhcihFbnRpdHlVbmljb2Rl
VmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wdXNoKGZpeFVwRW50aXR5VmFs
dWUoRW50aXR5VW5pY29kZVZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIFVURi0xNiwgdXNpbmcgc3Vycm9n
YXRlIGNvZGUgcG9pbnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tCdWZmZXIoMik7
CkBAIC0xNDc2LDggKzE0NzMsMTEgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXpl
cjo6cGFycwogICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSA9IFN0
cmluZygpOwogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5hdHRycyAmJiAhbV9m
cmFnbWVudCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9kb2MtPmZyYW1lKCkgJiYgbV9k
b2MtPmZyYW1lKCktPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9rZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3Jj
QXR0cikpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9rZW4u
YXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUgPSBtX2RvYy0+Y29tcGxldGVVUkwocGFy
c2VVUkwoYS0+dmFsdWUoKSkpLnN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0
RnJvbVNyYyhhLT52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z
Y3JpcHRUYWdTcmNBdHRyVmFsdWUgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAkocmV2aXNpb24gNDUzMDYpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTFRva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNiArNDE3LDggQEAgdm9p
ZCBwYXJzZUhUTUxEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cgogCiBVQ2hhciBkZWNvZGVOYW1l
ZEVudGl0eShjb25zdCBjaGFyKik7CiAKK1VDaGFyIGZpeFVwRW50aXR5VmFsdWUoVUNoYXIgYyk7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxUb2tlbml6ZXJfaApJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNDUzMDYpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw2ICs0ODIsOSBAQCBG
cmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhCiAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+Y2hlY2tDb21wbGV0ZWQoKTsKICAgICB9CiAKKyAgICAvLyBTZXQgdGhlIHBhcmVu
dCBvZiB0aGUgc3ViIGZyYW1lIHRvIHRoZSBmcmFtZSBvZiB0aGlzIGZyYW1lbG9hZGVyLgorICAg
IGZyYW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5zZXRQYXJlbnRGcmFtZShtX2ZyYW1lKTsK
KyAgICAKICAgICByZXR1cm4gZnJhbWUuZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJ
KHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
WFNTQXVkaXRvci5oIgogCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCkBAIC0zNCwyMSArMzUs
MjMgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1
ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAKKyNpbmNs
dWRlICJIVE1MRW50aXR5TmFtZXMuYyIKKwordXNpbmcgbmFtZXNwYWNlIFdURjsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAKLS8vIFRoaXMgbWV0aG9kIGFsc28gYXBwZWFycyBpbiBmaWxlIFJl
c291cmNlUmVzcG9uc2VCYXNlLmNwcC4KLXN0YXRpYyBib29sIGlzQ29udHJvbENoYXJhY3RlcihV
Q2hhciBjKQotewotICAgIHJldHVybiBjIDwgJyAnIHx8IGMgPT0gMTI3OwotfQotICAKKwogWFNT
QXVkaXRvcjo6WFNTQXVkaXRvcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQor
ICAgICwgbV9wYXJlbnRGcmFtZSgwKQogewogfQogCkBAIC02MSw2ICs2NCwxMSBAQCBib29sIFhT
U0F1ZGl0b3I6OmlzRW5hYmxlZCgpIGNvbnN0CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9m
cmFtZS0+c2V0dGluZ3MoKTsKICAgICByZXR1cm4gKHNldHRpbmdzICYmIHNldHRpbmdzLT54c3NB
dWRpdG9yRW5hYmxlZCgpKTsKIH0KKwordm9pZCBYU1NBdWRpdG9yOjpzZXRQYXJlbnRGcmFtZShG
cmFtZSogZnJhbWUpCit7CisgICAgbV9wYXJlbnRGcmFtZSA9IGZyYW1lOworfQogICAKIGJvb2wg
WFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlKSBjb25zdAog
ewpAQCAtMTA5LDM1ICsxMTcsMTU5IEBAIGJvb2wgWFNTQXVkaXRvcjo6Y2FuTG9hZE9iamVjdChj
b25zdCBTdHIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29k
ZVVSTChjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9v
bCBhbGxvd051bGxDaGFyYWN0ZXJzKQorU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZVVSTChjb25z
dCBTdHJpbmcmIHN0ciwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgYm9vbCBhbGxvd0Nv
bnRyb2xDaGFyYWN0ZXJzKQogewogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgU3RyaW5nIHVybCA9
IHN0cjsKICAgICAKICAgICB1cmwucmVwbGFjZSgnKycsICcgJyk7Ci0gICAgcmVzdWx0ID0gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybCwgZW5jb2RpbmcpOwotICAgIHJldHVybiBhbGxvd051
bGxDaGFyYWN0ZXJzID8gcmVzdWx0IDogcmVzdWx0LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJv
bENoYXJhY3Rlcik7CisgICAgcmVzdWx0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybCk7
CisgICAgaWYgKCFhbGxvd0NvbnRyb2xDaGFyYWN0ZXJzKQorICAgICAgICByZXN1bHQucmVtb3Zl
Q2hhcmFjdGVycygmaXNDb250cm9sQ2hhcmFjdGVyKTsKKyAgICByZXN1bHQgPSBlbmNvZGluZy5k
ZWNvZGUocmVzdWx0LnV0ZjgoKS5kYXRhKCksIHJlc3VsdC5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IGRlY29kZUhUTUxFbnRpdGllcyhyZXN1bHQsIHRydWUsIGFsbG93Q29udHJvbENoYXJhY3RlcnMp
OworfQorICAgIAorU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZUhUTUxFbnRpdGllcyhjb25zdCBT
dHJpbmcmIHN0ciwgYm9vbCBjbG9zZUxhc3RFbnRpdHksIGJvb2wgYWxsb3dDb250cm9sQ2hhcmFj
dGVycykKK3sKKyAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKKyAgICBpbnQgbGVuZ3RoID0gc3Ry
Lmxlbmd0aCgpOworICAgIGludCBlbmNvZGVkUnVuUG9zaXRpb24gPSAwOworICAgIGludCBzZWFy
Y2hQb3NpdGlvbiA9IDA7CisgICAgaW50IGRlY29kZWRQb3NpdGlvbiA9IDA7CisgICAgaW50IGVu
Y29kZWRSdW5MZW5ndGggPSAwOworICAgIHVuc2lnbmVkIEVudGl0eVVuaWNvZGVWYWx1ZSA9IDA7
CisgICAgdW5zaWduZWQgbGwgPSAwOworICAgIGNvbnN0IFVDaGFyKiBxID0gMDsKKyAgICBib29s
IGZvdW5kSW52YWxpZENoYXIgPSBmYWxzZTsKKyAgICAKKyAgICB3aGlsZSAoKGVuY29kZWRSdW5Q
b3NpdGlvbiA9IHN0ci5maW5kKCcmJywgc2VhcmNoUG9zaXRpb24pKSA+PSAwIAorICAgICAgICAg
ICAmJiAoZW5jb2RlZFJ1bkxlbmd0aCA9IGxlbmd0aCAtIGVuY29kZWRSdW5Qb3NpdGlvbikgPj0g
MikgeworICAgICAgICBzZWFyY2hQb3NpdGlvbiA9IGVuY29kZWRSdW5Qb3NpdGlvbiArIDE7Cisg
ICAgICAgIAorICAgICAgICBpZiAoc3RyW2VuY29kZWRSdW5Qb3NpdGlvbiArIDFdID09ICcjJykg
eworICAgICAgICAgICAgRW50aXR5VW5pY29kZVZhbHVlID0gMDsKKyAgICAgICAgICAgIHEgPSAw
OworICAgICAgICAgICAgaWYgKGVuY29kZWRSdW5MZW5ndGggPj0gNAorICAgICAgICAgICAgICAg
ICYmIChzdHJbZW5jb2RlZFJ1blBvc2l0aW9uICsgMl0gPT0gJ3gnIHx8IHN0cltlbmNvZGVkUnVu
UG9zaXRpb24gKyAyXSA9PSAnWCcpCisgICAgICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0
KHN0cltlbmNvZGVkUnVuUG9zaXRpb24gKyAzXSkpIHsKKyAgICAgICAgICAgICAgICAvLyBQYXJz
ZSBIZXhhZGVjaW1hbC4KKyAgICAgICAgICAgICAgICBsbCA9IHN0ZDo6bWluKGVuY29kZWRSdW5M
ZW5ndGggLSAzLCA4KTsKKyAgICAgICAgICAgICAgICBxID0gc3RyLmNoYXJhY3RlcnMoKSArIGVu
Y29kZWRSdW5Qb3NpdGlvbiArIDM7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxsOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHFbMF0gPT0gJzsnKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICArK3E7IC8vIEluY3JlbWVudCBxIHNvIHRoYXQgd2Ug
ZG8gbm90IGluY2x1ZGUgdGhlICc7JyBpbiB0aGUgZGVjb2RlZCBzdHJpbmcuCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBpZiAocVswXSA9PSAnJicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQocVswXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghY2xvc2VMYXN0RW50aXR5IHx8IHEgPT0gKHN0ci5jaGFy
YWN0ZXJzKCkgKyBlbmNvZGVkUnVuUG9zaXRpb24gKyAzKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3VuZEludmFsaWRDaGFyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEVudGl0
eVVuaWNvZGVWYWx1ZSA9IChFbnRpdHlVbmljb2RlVmFsdWUgPDwgNCkgfCB0b0FTQ0lJSGV4VmFs
dWUocVswXSk7CisgICAgICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGVuY29kZWRSdW5MZW5ndGggPj0gMyAKKyAgICAgICAgICAg
ICAgICAgICAgICAgJiYgaXNBU0NJSURpZ2l0KHN0cltlbmNvZGVkUnVuUG9zaXRpb24gKyAyXSkp
IHsKKyAgICAgICAgICAgICAgICAvLyBQYXJzZSBkZWNpbWFsLgorICAgICAgICAgICAgICAgIGxs
ID0gc3RkOjptaW4oZW5jb2RlZFJ1bkxlbmd0aCAtIDIsIDgpOworICAgICAgICAgICAgICAgIHEg
PSBzdHIuY2hhcmFjdGVycygpICsgZW5jb2RlZFJ1blBvc2l0aW9uICsgMjsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGw7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocVswXSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcTsgLy8g
SW5jcmVtZW50IHEgc28gdGhhdCB3ZSBkbyBub3QgaW5jbHVkZSB0aGUgJzsnIGluIHRoZSBkZWNv
ZGVkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChxWzBdID09ICcmJykKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdChxWzBdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9zZUxhc3RFbnRp
dHkgfHwgcSA9PSAoc3RyLmNoYXJhY3RlcnMoKSArIGVuY29kZWRSdW5Qb3NpdGlvbiArIDIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW52YWxpZENoYXIgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgRW50aXR5VW5pY29kZVZhbHVlID0gRW50aXR5VW5pY29kZVZhbHVlICog
MTAgKyAocVswXSAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQ
YXJzZSBlbnRpdHkgbmFtZS4KKyAgICAgICAgICAgIGNoYXIgZW50aXR5TmFtZUJ1ZmZlclsxMF07
CisgICAgICAgICAgICBsbCA9IHN0ZDo6bWluKGVuY29kZWRSdW5MZW5ndGggLSAxLCAoaW50KSBz
aXplb2YoZW50aXR5TmFtZUJ1ZmZlcikgLSAxKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGVudGl0
eU5hbWVMZW5ndGhTb0ZhciA9IDA7IC8vIFRoZSBsZW5ndGggb2YgdGhlIGVudGl0eSBuYW1lLgor
ICAgICAgICAgICAgcSA9IHN0ci5jaGFyYWN0ZXJzKCkgKyBlbmNvZGVkUnVuUG9zaXRpb24gKyAx
OworICAgICAgICAgICAgZm9yICg7IGVudGl0eU5hbWVMZW5ndGhTb0ZhciA8IGxsOyArK2VudGl0
eU5hbWVMZW5ndGhTb0ZhcikgeworICAgICAgICAgICAgICAgIGlmIChxWzBdID09ICc7Jykgewor
ICAgICAgICAgICAgICAgICAgICArK3E7IC8vIEluY3JlbWVudCBxIHNvIHRoYXQgd2UgZG8gbm90
IGluY2x1ZGUgdGhlICc7JyBpbiB0aGUgZGVjb2RlZCBzdHJpbmcuCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocVswXSA9
PSAnJicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICgh
aXNBU0NJSUFscGhhbnVtZXJpYyhxWzBdKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNs
b3NlTGFzdEVudGl0eSB8fCBxID09IChzdHIuY2hhcmFjdGVycygpICsgZW5jb2RlZFJ1blBvc2l0
aW9uICsgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEludmFsaWRDaGFyID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVudGl0eU5hbWVCdWZmZXJbZW50aXR5TmFtZUxlbmd0aFNvRmFyXSA9IHFbMF07
CisgICAgICAgICAgICAgICAgKytxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qg
RW50aXR5KiBlID0gKGZvdW5kSW52YWxpZENoYXIpPyAwIDogZmluZEVudGl0eSgmZW50aXR5TmFt
ZUJ1ZmZlclswXSwgZW50aXR5TmFtZUxlbmd0aFNvRmFyKTsKKyAgICAgICAgICAgIGlmIChlKQor
ICAgICAgICAgICAgICAgIEVudGl0eVVuaWNvZGVWYWx1ZSA9IGUtPmNvZGU7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChmb3VuZEludmFsaWRDaGFyIHx8IEVudGl0eVVuaWNvZGVW
YWx1ZSA9PSAwIHx8IEVudGl0eVVuaWNvZGVWYWx1ZSA+IDB4MTBGRkZGKSB7CisgICAgICAgICAg
ICBmb3VuZEludmFsaWRDaGFyID0gZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdHIuY2hhcmFjdGVycygpICsg
ZGVjb2RlZFBvc2l0aW9uLCBlbmNvZGVkUnVuUG9zaXRpb24gLSBkZWNvZGVkUG9zaXRpb24pOwor
ICAgICAgICBpZiAoYWxsb3dDb250cm9sQ2hhcmFjdGVycyB8fCAhaXNDb250cm9sQ2hhcmFjdGVy
KEVudGl0eVVuaWNvZGVWYWx1ZSkpCisgICAgICAgICAgICBpZiAoRW50aXR5VW5pY29kZVZhbHVl
IDw9IDB4RkZGRikKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGZpeFVwRW50aXR5VmFs
dWUoRW50aXR5VW5pY29kZVZhbHVlKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKFUxNl9MRUFEKEVudGl0eVVuaWNvZGVWYWx1ZSkpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVTE2X1RSQUlMKEVudGl0eVVuaWNvZGVWYWx1ZSkpOwor
ICAgICAgICAgICAgfSAgICAgICAgCisgICAgICAgICAgICBkZWNvZGVkUG9zaXRpb24gPSAocSk/
IHEgLSBzdHIuY2hhcmFjdGVycygpIDogZW5jb2RlZFJ1blBvc2l0aW9uOworICAgICAgICBpZiAo
cSkKKyAgICAgICAgICAgIHNlYXJjaFBvc2l0aW9uID0gcSAtIHN0ci5jaGFyYWN0ZXJzKCk7IC8v
IEFkdmFuY2UgdGhlIHNlYXJjaCBwb3NpdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IGVudGl0
eS4KKyAgICB9CisgICAgCisgICAgcmVzdWx0LmFwcGVuZChzdHIuY2hhcmFjdGVycygpICsgZGVj
b2RlZFBvc2l0aW9uLCBsZW5ndGggLSBkZWNvZGVkUG9zaXRpb24pOworICAgIAorICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVx
dWVzdChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKIHsKLSAgICBBU1NFUlQobV9mcmFtZS0+
ZG9jdW1lbnQoKSk7Ci0gICAgU3RyaW5nIHBhZ2VVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmcoKTsKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGlmIChtX3BhcmVu
dEZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpID09IGJsYW5rVVJMKCkpCisgICAg
ICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3QobV9wYXJlbnRGcmFtZSwgc3RyaW5nKTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChtX2ZyYW1lLCBzdHJp
bmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisgICAgCitib29sIFhTU0F1ZGl0b3I6OmZpbmRJ
blJlcXVlc3QoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKK3sKKyAg
ICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOworICAgIFN0cmluZyBwYWdlVVJMID0gZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIAogICAgIGlmIChwcm90b2NvbElzKHBh
Z2VVUkwsICJkYXRhIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChzdHJpbmcu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAKICAgICBpZiAoc3RyaW5n
Lmxlbmd0aCgpIDwgcGFnZVVSTC5sZW5ndGgoKSkgewogICAgICAgICAvLyBUaGUgc3RyaW5nIGNh
biBhY3R1YWxseSBmaXQgaW5zaWRlIHRoZSBwYWdlVVJMLgotICAgICAgICBTdHJpbmcgZGVjb2Rl
ZFBhZ2VVUkwgPSBkZWNvZGVVUkwocGFnZVVSTCwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2Rl
cigpLT5lbmNvZGluZygpKTsKKyAgICAgICAgU3RyaW5nIGRlY29kZWRQYWdlVVJMID0gZGVjb2Rl
VVJMKHBhZ2VVUkwsIGZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOwog
ICAgICAgICBpZiAoZGVjb2RlZFBhZ2VVUkwuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAtMSkK
ICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSd2ZSBmb3VuZCB0aGUgc21va2luZyBndW4u
CiAgICAgfQogICAgIAotICAgIEZvcm1EYXRhKiBmb3JtRGF0YU9iaiA9IG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOworICAg
IEZvcm1EYXRhKiBmb3JtRGF0YU9iaiA9IGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+b3JpZ2luYWxSZXF1ZXN0KCkuaHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGFPYmogJiYg
IWZvcm1EYXRhT2JqLT5pc0VtcHR5KCkpIHsKICAgICAgICAgU3RyaW5nIGZvcm1EYXRhID0gZm9y
bURhdGFPYmotPmZsYXR0ZW5Ub1N0cmluZygpOwogICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCgp
IDwgZm9ybURhdGEubGVuZ3RoKCkpIHsKQEAgLTE0NSwxMiArMjc3LDEyIEBAIGJvb2wgWFNTQXVk
aXRvcjo6ZmluZEluUmVxdWVzdChjb25zdCBTdHIKICAgICAgICAgICAgIC8vIHRoZSB1cmwtZW5j
b2RlZCBQT1NUIGRhdGEgYmVjYXVzZSB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZGVjb2RlZAogICAg
ICAgICAgICAgLy8gY29kZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0
aGUgdXJsLWVuY29kZWQKICAgICAgICAgICAgIC8vIHN0cmluZy4KLSAgICAgICAgICAgIFN0cmlu
ZyBkZWNvZGVkRm9ybURhdGEgPSBkZWNvZGVVUkwoZm9ybURhdGEsIG1fZnJhbWUtPmRvY3VtZW50
KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgICAgICAgICBTdHJpbmcgZGVjb2RlZEZv
cm1EYXRhID0gZGVjb2RlVVJMKGZvcm1EYXRhLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2Rlcigp
LT5lbmNvZGluZygpKTsKICAgICAgICAgICAgIGlmIChkZWNvZGVkRm9ybURhdGEuZmluZChzdHJp
bmcsIDAsIGZhbHNlKSAhPSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdl
IGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIFBPU1QgZGF0YS4KICAgICAgICAgfQogICAgIH0KLQor
ICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCShyZXZpc2lvbiA0
NTMwNikKKysrIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDYgKzY5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgflhTU0F1ZGl0b3IoKTsK
IAogICAgICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgLy8g
U2V0cyB0aGUgcGFyZW50IGZyYW1lIG9mIHRoaXMgZnJhbWUuCisgICAgICAgIC8vCisgICAgICAg
IC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBGcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lLgor
ICAgICAgICB2b2lkIHNldFBhcmVudEZyYW1lKEZyYW1lKik7CiAKICAgICAgICAgLy8gRGV0ZXJt
aW5lcyB3aGV0aGVyIHRoZSBzY3JpcHQgc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkIGV4ZWN1
dGlvbgogICAgICAgICAvLyBiYXNlZCBvbiB0aGUgY29udGVudCBvZiBhbnkgdXNlci1zdWJtaXR0
ZWQgZGF0YS4KQEAgLTg5LDEyICs5NCwyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgY2FuTG9hZE9iamVjdChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93
TnVsbENoYXJhY3RlcnMgPSBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nID0gVVRGOEVu
Y29kaW5nKCksIGJvb2wgYWxsb3dDb250cm9sQ2hhcmFjdGVycyA9IGZhbHNlKTsKIAorICAgICAg
ICAvLyBEZWNvZGVzIHRoZSBIVE1MIGVudGl0aWVzIGluIHRoZSBzcGVjaWZpZWQgc3RyaW5nLiBN
YWxmb3JtZWQgZW50aXRlcyByZW1haW4gaW4gdGhlIGRlY29kZWQgc3RyaW5nLgorICAgICAgICAv
LworICAgICAgICAvLyBJZiBjbG9zZUxhc3RFbnRpdHkgPT0gdHJ1ZSBhbmQgdGhlIGxhc3QgSFRN
TCBlbnRpdHkgZG9lcyBub3QgY29udGFpbiBhIGNsb3NpbmcgJzsnLCB0aGVuIGl0IGlzIGF1dG9t
YXRpY2FsbHkgY2xvc2VkLgorICAgICAgICAvLyBGb3IgZXhhbXBsZSwgZGVjb2RlSFRNTEVudGl0
aWVzKCImIzY1JiMxMTImIzExMiYjMTA4JiMxMDEiLCB0cnVlLCAuLi4pIGlzIGVxdWFsIHRvIAor
ICAgICAgICAvLyBkZWNvZGVIVE1MRW50aXRpZXMoIiYjNjUmIzExMiYjMTEyJiMxMDgmIzEwMTsi
LCBmYWxzZSwgLi4uKS4gCisgICAgICAgIC8vIE5vdGljZSB0aGUgc3RyaW5ncyBpbiB0aGUgYWJv
dmUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyIGluIHRoZWlyIGV4Y2x1c2lvbiBvciBpbmNsdXNpb24g
b2YgdGhlICc7JyAKKyAgICAgICAgLy8gdGVybWluYXRpb24gc2VudGluZWwsIHJlc3BlY3RpdmVs
eS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2hlbiBjbG9zZUxhc3RFbnRpdHkgPT0gZmFsc2Us
IGFuZCBhbGxvd0NvbnRyb2xDaGFyYWN0ZXJzID09IHRydWUsIHRoZW4gdGhpcyBmdW5jdGlvbiBj
b25mb3JtcyB0byB0aGUgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAgLy8gb2YgSFRNTFRva2VuaXpl
cjo6cGFyc2VFbnRpdHkgKHJldi4gNDQ5OTUpLgorICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29k
ZUhUTUxFbnRpdGllcyhjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCBjbG9zZUxhc3RFbnRpdHkgPSBm
YWxzZSwgYm9vbCBhbGxvd0NvbnRyb2xDaGFyYWN0ZXJzID0gZmFsc2UpOworICAgICAgICAKICAg
ICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgICAgICAK
KyAgICAgICAgYm9vbCBmaW5kSW5SZXF1ZXN0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAKICAgICAgICAgLy8gVGhlIGZyYW1lIHRvIGF1ZGl0LgogICAgICAgICBGcmFtZSogbV9mcmFt
ZTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoZSBwYXJlbnQgZnJhbWUgb2YgdGhpcyBmcmFtZS4g
T25seSB2YWxpZCBpZiB0aGlzIGlzIHN1YiBmcmFtZS4KKyAgICAgICAgRnJhbWUqIG1fcGFyZW50
RnJhbWU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCShyZXZpc2lv
biA0NTMwNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgYm9vbCBpc0Nh
Y2hlSGVhZGVyU2VwYXJhdG9yKFVDaGFyCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0NvbnRy
b2xDaGFyYWN0ZXIoVUNoYXIgYykKK2Jvb2wgaXNDb250cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCiB7
CiAgICAgcmV0dXJuIGMgPCAnICcgfHwgYyA9PSAxMjc7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gNDUzMDYp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw4IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhIHsKICAgICB0aW1lX3QgbV9sYXN0TW9kaWZpZWREYXRlOwogfTsKIAorYm9v
bCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYyk7CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA0NTMwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtOTYs
NiArOTYsMzAgQEAKIAogICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3VzZXItZHJhZy1lbGVt
ZW50LWFuZC11c2VyLXNlbGVjdC1ub25lLmh0bWw6CiAKKzIwMDktMDYtMjUgIERhbmllbCBCYXRl
cyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjcwOAorCisgICAgICAgIFRlc3RzIHByZXZlbnRpb24gb2YgaW5qZWN0ZWQg
c2NyaXB0cyB3aXRoIEhUTUwgZW50aXRpZXMgZW5jb2RpbmcsIHNjaGVtZSByZWxhdGl2ZSBwYXRo
cywgCisgICAgICAgIGlGcmFtZSBKYXZhU2NyaXB0IFVSTHMsIGFuZCBVVEYtNyBlbmNvZGluZy4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0
Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvaHR0cC1lcXVpdi11dGYtNy1lbmNvZGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlw
dC11cmwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGll
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50
aXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWlu
dGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1kZWZhdWx0LWVuY29k
ZS5wbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctdXRmLTctZW5jb2RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1z
b3VyY2UtcmVsYXRpdmUtc2NoZW1lLmh0bWw6IEFkZGVkLgorCiAyMDA5LTA2LTI1ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaHR0
cC1lcXVpdi11dGYtNy1lbmNvZGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaHR0cC1lcXVpdi11dGYtNy1lbmNv
ZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2Ny
aXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaHR0
cC1lcXVpdi11dGYtNy1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaHR0cC1lcXVpdi11dGYtNy1lbmNvZGVkLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1kZWZhdWx0LWVuY29kZS5wbD9xPSUzQ21l
dGEraHR0cC1lcXVpdiUzRCUyMkNvbnRlbnQtVHlwZSUyMitjb250ZW50JTNEJTIydGV4dC9odG1s
JTNCK2NoYXJzZXQlM0RVVEYtNyUyMi8lM0UlMkJBRHdBY3dCakFISUFhUUJ3QUhRQVBnQmhBR3dB
WlFCeUFIUUFLQUF4QUNrQVBBQXZBSE1BWXdCeUFHa0FjQUIwQUQ0LSc+Cis8L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJs
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2Ny
aXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0Lgor
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZy
YW1lLWphdmFzY3JpcHQtdXJsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9x
PSUzQ2lmcmFtZSUyMHNyYz1qYXZhc2NyaXB0OmFsZXJ0KGRvY3VtZW50LmRvbWFpbiklM0UnPgor
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1l
dmVudC1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRp
ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1ldmVudC1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
UmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNj
cmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
aW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRp
dGllcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0NpbWclMjBzcmM9
MSUyMG9uZXJyb3I9JTI2JTIzOTclMjYlMjMxMDglMjYlMjMxMDElMjYlMjMxMTQlMjYlMjMxMTYl
MjYlMjM0MCUyNiUyMzQ5JTI2JTIzNDElM0UnPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ph
dmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRl
IGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4g
cmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5r
LUhUTUwtZW50aXRpZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVk
aXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFt
ZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGw/ZWxtaWQ9YW5jaG9yTGluayZxPSUz
Q2EraWQlM0RhbmNob3JMaW5rK2hyZWYlM0QlMjYlMjN4MDAwMDAwNmElMjYlMjN4NjElMjYlMjN4
NzYlMjYlMjN4NjElMjYlMjN4NzMlMjYlMjN4NjMlMjYlMjN4NzIlMjYlMjN4NjklMjYlMjN4NzAl
MjYlMjN4NzQlMjYlMjN4M2ElMjYlMjN4NjElMjYlMjN4NmMlMjYlMjN4NjUlMjYlMjN4NzIlMjYl
MjN4NzQlMjYlMjN4MjglMjYlMjN4MzElMjYlMjN4MjklM0V0ZXN0JTNDYSUzRSc+Cis8L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYt
Ny1lbmNvZGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4
ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdp
dGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYt
Ny1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhT
U0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxp
ZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNv
dXJjZXMvZWNoby1pbnRlcnRhZy11dGYtNy5wbD9xPSUyYkFEd0Fjd0JqQUhJQWFRQndBSFFBUGdC
aEFHd0FaUUJ5QUhRQUtBQXhBQ2tBUEFBdkFITUFZd0J5QUdrQWNBQjBBRDQtJz4KKzwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgt
c291cmNlLXJlbGF0aXZlLXNjaGVtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3Vy
Y2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNl
LXJlbGF0aXZlLXNjaGVtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3Jp
cHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisK
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1z
b3VyY2UtcmVsYXRpdmUtc2NoZW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxh
dGl2ZS1zY2hlbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP3E9JTNDc2Ny
aXB0K3NyYyUzRC8vMTI3LjAuMC4xJTNBODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy94c3MuanMlM0UlM0Mvc2NyaXB0JTNFJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1jbGljay1hbmQtbm90
aWZ5LnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1jbGljay1hbmQtbm90aWZ5LnBsCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jl
c291cmNlcy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjggQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3VzZSBzdHJpY3Q7Cit1c2UgQ0dJ
OworCitteSAkY2dpID0gbmV3IENHSTsKKworcHJpbnQgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1s
OyBjaGFyc2V0PVVURi04XG5cbiI7CisKK3ByaW50ICI8IURPQ1RZUEUgaHRtbD5cbiI7Citwcmlu
dCAiPGh0bWw+XG4iOworcHJpbnQgIjxoZWFkPlxuIjsKK3ByaW50ICI8c2NyaXB0PlxuIjsKK3By
aW50ICJ3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKVxuIjsKK3ByaW50ICJ7XG4iOworcHJpbnQg
IiAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xuIjsK
K3ByaW50ICIgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuIjsKK3By
aW50ICIgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIuJGNnaS0+cGFyYW0oJ2VsbWlkJyku
IicpLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuIjsKK3ByaW50ICJ9XG4iOworcHJpbnQgIjwvc2Ny
aXB0PlxuIjsKK3ByaW50ICI8L2hlYWQ+XG4iOworcHJpbnQgIjxib2R5PlxuIjsKK3ByaW50ICRj
Z2ktPnBhcmFtKCdxJyk7CitwcmludCAiPHNjcmlwdD5cbiI7CitwcmludCAiaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcilcbiI7CitwcmludCAiICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTtcbiI7CitwcmludCAiPC9zY3JpcHQ+XG4iOworcHJpbnQgIjwvYm9keT5c
biI7CitwcmludCAiPC9odG1sPlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1j
bGljay1hbmQtbm90aWZ5LnBsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
CgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLWRlZmF1bHQtZW5jb2RlLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRl
cnRhZy1kZWZhdWx0LWVuY29kZS5wbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1kZWZhdWx0
LWVuY29kZS5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorIyEvdXNyL2Jpbi9wZXJs
IC13VAordXNlIHN0cmljdDsKK3VzZSBDR0k7CisKK215ICRjZ2kgPSBuZXcgQ0dJOworCitwcmlu
dCAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcblxuIjsKKworcHJpbnQgIjwhRE9DVFlQRSBodG1s
PlxuIjsKK3ByaW50ICI8aHRtbD5cbiI7CitwcmludCAiPGJvZHk+XG4iOworcHJpbnQgJGNnaS0+
cGFyYW0oJ3EnKTsKK3ByaW50ICI8L2JvZHk+XG4iOworcHJpbnQgIjwvaHRtbD5cbiI7CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctZGVmYXVsdC1lbmNvZGUucGwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31973</attachid>
            <date>2009-06-26 22:03:20 -0700</date>
            <delta_ts>2009-06-27 09:52:09 -0700</delta_ts>
            <desc>Updated patch with tests.</desc>
            <filename>XSSAuditor_p2_.patch</filename>
            <type>text/plain</type>
            <size>30666</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC02OTUsNiArNjk1LDQyIEBACiAgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
ICAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjp+U1ZHSW1hZ2UpOiBUd2VhayB0aGlzIEFTU0VS
VCAtIFNWR0ltYWdlcyBtaWdodCBnZXQgZGVzdHJveWVkIHdpdGhvdXQgZXZlciBoYXZpbmcgYSBj
bGllbnQuCiAKKzIwMDktMDYtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3MDggICAKKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRm
LTctZW5jb2RlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1s
aW5rLUhUTUwtZW50aXRpZXMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWctdXRmLTctZW5jb2RlZC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1y
ZWxhdGl2ZS1zY2hlbWUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MVG9rZW5pemVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmZpeFVwRW50aXR5VmFsdWUpOiBGb3JtZXJseSBjYWxsZWQgV2Vi
Q29yZTo6Zml4VXBDaGFyLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0
SGFuZGxlcik6IE1vdmVkIFhTU0F1ZGl0b3IgY2hlY2sgdG8gSFRNTFRva2VuaXplcjo6cGFyc2VU
YWcuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpwYXJzZUVudGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpwYXJzZVRhZyk6CisgICAgICAgICogaHRtbC9I
VE1MVG9rZW5pemVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUpOiBNb2RpZmllZCB0byBpbmZv
cm0gWFNTQXVkaXRvciBvZiBwYXJlbnQgZnJhbWUgc28KKyAgICAgICAgYXMgdG8gY29tcGFyZSBh
Z2FpbnN0IGlGcmFtZSBqYXZhc2NyaXB0IFVSTC4KKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3Iu
Y3BwOiBSZW1vdmVkIG1ldGhvZCBYU1NBdWRpdG9yOjppc0NvbnRyb2xDaGFyYWN0ZXIuIEluc3Rl
YWQsIGV4cG9zZWQgbWV0aG9kCisgICAgICAgIGlzQ29udHJvbENoYXJhY3RlciBpbiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpYU1NBdWRp
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OnNldFBhcmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZVVSTCk6IE1vZGlmaWVkIHRvIGNhbGwg
ZGVjb2RlSFRNTEVudGl0aWVzLgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2Rl
SFRNTEVudGl0aWVzKTogQWRkZWQgbWV0aG9kIHRvIHN1cHBvcnQgZGVjb2RpbmcgSFRNTCBlbnRp
dGllcywKKyAgICAgICAgY29uZm9ybXMgdG8gZnVuY3Rpb25hbGl0eSBvZiBIVE1MVG9rZW5pemVy
OjpwYXJzZUVudGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmZpbmRJblJlcXVl
c3QpOiBHZW5lcmFsaXplZCB0byBhcmJpdHJhcnkgZnJhbWUgc28gYXMgdG8gcHJldmVudCBleGVj
dXRpb24KKyAgICAgICAgb2YgaUZyYW1lIGphdmFzY3JpcHQgVVJMLgorICAgICAgICAqIHBhZ2Uv
WFNTQXVkaXRvci5oOiBBZGRlZCBmaWVsZCBtX3BhcmVudEZyYW1lLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aXNDb250cm9sQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmg6CisKIDIwMDktMDYtMjUgIFBpZXJyZSBkJ0hlcmJlbW9udCAgPHBkaGVy
YmVtb250QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHN0
YXRpYyBjb25zdCBVQ2hhciB3aW5kb3dzTGF0aW4xRXh0ZW5zaW8KICAgICAweDAyREMsIDB4MjEy
MiwgMHgwMTYxLCAweDIwM0EsIDB4MDE1MywgMHgwMDlELCAweDAxN0UsIDB4MDE3OCAgLy8gOTgt
OUYKIH07CiAKLXN0YXRpYyBpbmxpbmUgVUNoYXIgZml4VXBDaGFyKFVDaGFyIGMpCitVQ2hhciBm
aXhVcEVudGl0eVZhbHVlKFVDaGFyIGMpCiB7CiAgICAgaWYgKChjICYgfjB4MUYpICE9IDB4MDA4
MCkKICAgICAgICAgcmV0dXJuIGM7CkBAIC00MzcsMTQgKzQzNywxMSBAQCBIVE1MVG9rZW5pemVy
OjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpCiAgICAgICAgICAgICAgICAgaWYgKCFtX2RvYy0+
b3duZXJFbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiUmVxdWVzdGluZyBz
Y3JpcHQgYXQgdGltZSAlZFxuIiwgbV9kb2MtPmVsYXBzZWRUaW1lKCkpOwogI2VuZGlmCi0gICAg
ICAgICAgICAgICAgaWYgKG1fWFNTQXVkaXRvciAmJiBtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRl
cm5hbFNjcmlwdEZyb21TcmMobV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkgZm9yIGV4
YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KLSAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRvbid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCAmJiAoY3MgPSBtX2RvYy0+ZG9j
TG9hZGVyKCktPnJlcXVlc3RTY3JpcHQobV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUsIG1fc2NyaXB0
VGFnQ2hhcnNldEF0dHJWYWx1ZSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5n
U2NyaXB0cy5hcHBlbmQoY3MpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAwOwotICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIC8vIFRoZSBwYXJzZXIgbWlnaHQgaGF2ZSBiZWVuIHN0b3BwZWQgYnkg
Zm9yIGV4YW1wbGUgYSB3aW5kb3cuY2xvc2UgY2FsbCBpbiBhbiBlYXJsaWVyIHNjcmlwdC4KKyAg
ICAgICAgICAgICAgICAvLyBJZiBzbywgd2UgZG9uJ3Qgd2FudCB0byBsb2FkIHNjcmlwdHMuCisg
ICAgICAgICAgICAgICAgaWYgKCFtX3BhcnNlclN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xv
YWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlLCBtX3NjcmlwdFRh
Z0NoYXJzZXRBdHRyVmFsdWUpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9wZW5kaW5nU2NyaXB0
cy5hcHBlbmQoY3MpOworICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
bV9zY3JpcHROb2RlID0gMDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1f
c2NyaXB0Tm9kZSA9IDA7CkBAIC04NTksNyArODU2LDcgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUg
SFRNTFRva2VuaXplcjo6cGFycwogICAgICAgICAgICAgICAgICAgICAgICAgc3JjLmFkdmFuY2VQ
YXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoRW50aXR5VW5pY29kZVZh
bHVlIDw9IDB4RkZGRikgewogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tCdWZmZXIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wdXNoKGZpeFVwQ2hhcihFbnRpdHlVbmljb2Rl
VmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wdXNoKGZpeFVwRW50aXR5VmFs
dWUoRW50aXR5VW5pY29kZVZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRvIFVURi0xNiwgdXNpbmcgc3Vycm9n
YXRlIGNvZGUgcG9pbnRzLgogICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tCdWZmZXIoMik7
CkBAIC0xNDc2LDggKzE0NzMsMTEgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXpl
cjo6cGFycwogICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnQ2hhcnNldEF0dHJWYWx1ZSA9IFN0
cmluZygpOwogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUb2tlbi5hdHRycyAmJiAhbV9m
cmFnbWVudCkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9kb2MtPmZyYW1lKCkgJiYgbV9k
b2MtPmZyYW1lKCktPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9rZW4uYXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3Jj
QXR0cikpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhID0gbV9jdXJyZW50VG9rZW4u
YXR0cnMtPmdldEF0dHJpYnV0ZUl0ZW0oc3JjQXR0cikpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9zY3JpcHRUYWdTcmNBdHRyVmFsdWUgPSBtX2RvYy0+Y29tcGxldGVVUkwocGFy
c2VVUkwoYS0+dmFsdWUoKSkpLnN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX1hTU0F1ZGl0b3IgJiYgIW1fWFNTQXVkaXRvci0+Y2FuTG9hZEV4dGVybmFsU2NyaXB0
RnJvbVNyYyhhLT52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9z
Y3JpcHRUYWdTcmNBdHRyVmFsdWUgPSBTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuaAkocmV2aXNpb24gNDUzMDYpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTFRva2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNiArNDE3LDggQEAgdm9p
ZCBwYXJzZUhUTUxEb2N1bWVudEZyYWdtZW50KGNvbnN0IFN0cgogCiBVQ2hhciBkZWNvZGVOYW1l
ZEVudGl0eShjb25zdCBjaGFyKik7CiAKK1VDaGFyIGZpeFVwRW50aXR5VmFsdWUoVUNoYXIgYyk7
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEhUTUxUb2tlbml6ZXJfaApJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNDUzMDYpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw2ICs0ODIsOSBAQCBG
cmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhCiAgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS0+Y2hlY2tDb21wbGV0ZWQoKTsKICAgICB9CiAKKyAgICAvLyBTZXQgdGhlIHBhcmVu
dCBvZiB0aGUgc3ViIGZyYW1lIHRvIHRoZSBmcmFtZSBvZiB0aGlzIGZyYW1lbG9hZGVyLgorICAg
IGZyYW1lLT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5zZXRQYXJlbnRGcmFtZShtX2ZyYW1lKTsK
KyAgICAKICAgICByZXR1cm4gZnJhbWUuZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJ
KHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
WFNTQXVkaXRvci5oIgogCisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpbmNsdWRlICJDb25zb2xlLmgiCkBAIC0zNCwyMSArMzUs
MjIgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgogI2luY2x1ZGUg
IlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKIAorI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jIgorCit1
c2luZyBuYW1lc3BhY2UgV1RGOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gIAotLy8gVGhpcyBt
ZXRob2QgYWxzbyBhcHBlYXJzIGluIGZpbGUgUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwLgotc3Rh
dGljIGJvb2wgaXNDb250cm9sQ2hhcmFjdGVyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPCAn
ICcgfHwgYyA9PSAxMjc7Ci19Ci0gIAorCiBYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBm
cmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX3BhcmVudEZyYW1lKDApCiB7CiB9
CiAKQEAgLTYxLDYgKzYzLDExIEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNFbmFibGVkKCkgY29uc3QK
ICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHJldHVy
biAoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnhzc0F1ZGl0b3JFbmFibGVkKCkpOwogfQorCit2b2lk
IFhTU0F1ZGl0b3I6OnNldFBhcmVudEZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBtX3BhcmVu
dEZyYW1lID0gZnJhbWU7Cit9CiAgIAogYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUpIGNvbnN0CiB7CkBAIC0xMDksMzUgKzExNiwxNTkgQEAgYm9v
bCBYU1NBdWRpdG9yOjpjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cgogICAgIHJldHVybiB0cnVlOwog
fQogCi1TdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3RyLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMpCitTdHJp
bmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgc3RyLCBjb25zdCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nLCBib29sIGFsbG93Q29udHJvbENoYXJhY3RlcnMpCiB7CiAgICAgU3Ry
aW5nIHJlc3VsdDsKICAgICBTdHJpbmcgdXJsID0gc3RyOwogICAgIAogICAgIHVybC5yZXBsYWNl
KCcrJywgJyAnKTsKLSAgICByZXN1bHQgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLCBl
bmNvZGluZyk7Ci0gICAgcmV0dXJuIGFsbG93TnVsbENoYXJhY3RlcnMgPyByZXN1bHQgOiByZXN1
bHQucmVtb3ZlQ2hhcmFjdGVycygmaXNDb250cm9sQ2hhcmFjdGVyKTsKKyAgICByZXN1bHQgPSBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsKTsKKyAgICBpZiAoIWFsbG93Q29udHJvbENoYXJh
Y3RlcnMpCisgICAgICAgIHJlc3VsdC5yZW1vdmVDaGFyYWN0ZXJzKCZpc0NvbnRyb2xDaGFyYWN0
ZXIpOworICAgIHJlc3VsdCA9IGVuY29kaW5nLmRlY29kZShyZXN1bHQudXRmOCgpLmRhdGEoKSwg
cmVzdWx0Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gZGVjb2RlSFRNTEVudGl0aWVzKHJlc3VsdCwg
dHJ1ZSwgYWxsb3dDb250cm9sQ2hhcmFjdGVycyk7Cit9CisgICAgCitTdHJpbmcgWFNTQXVkaXRv
cjo6ZGVjb2RlSFRNTEVudGl0aWVzKGNvbnN0IFN0cmluZyYgc3RyLCBib29sIGNsb3NlTGFzdEVu
dGl0eSwgYm9vbCBhbGxvd0NvbnRyb2xDaGFyYWN0ZXJzKQoreworICAgIFZlY3RvcjxVQ2hhcj4g
cmVzdWx0OworICAgIGludCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgaW50IGVuY29kZWRS
dW5Qb3NpdGlvbiA9IDA7CisgICAgaW50IHNlYXJjaFBvc2l0aW9uID0gMDsKKyAgICBpbnQgZGVj
b2RlZFBvc2l0aW9uID0gMDsKKyAgICBpbnQgZW5jb2RlZFJ1bkxlbmd0aCA9IDA7CisgICAgdW5z
aWduZWQgRW50aXR5VW5pY29kZVZhbHVlID0gMDsKKyAgICB1bnNpZ25lZCBsbCA9IDA7CisgICAg
Y29uc3QgVUNoYXIqIHEgPSAwOworICAgIGJvb2wgZm91bmRJbnZhbGlkQ2hhciA9IGZhbHNlOwor
ICAgIAorICAgIHdoaWxlICgoZW5jb2RlZFJ1blBvc2l0aW9uID0gc3RyLmZpbmQoJyYnLCBzZWFy
Y2hQb3NpdGlvbikpID49IDAgCisgICAgICAgICAgICYmIChlbmNvZGVkUnVuTGVuZ3RoID0gbGVu
Z3RoIC0gZW5jb2RlZFJ1blBvc2l0aW9uKSA+PSAyKSB7CisgICAgICAgIHNlYXJjaFBvc2l0aW9u
ID0gZW5jb2RlZFJ1blBvc2l0aW9uICsgMTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdHJbZW5j
b2RlZFJ1blBvc2l0aW9uICsgMV0gPT0gJyMnKSB7CisgICAgICAgICAgICBFbnRpdHlVbmljb2Rl
VmFsdWUgPSAwOworICAgICAgICAgICAgcSA9IDA7CisgICAgICAgICAgICBpZiAoZW5jb2RlZFJ1
bkxlbmd0aCA+PSA0CisgICAgICAgICAgICAgICAgJiYgKHN0cltlbmNvZGVkUnVuUG9zaXRpb24g
KyAyXSA9PSAneCcgfHwgc3RyW2VuY29kZWRSdW5Qb3NpdGlvbiArIDJdID09ICdYJykKKyAgICAg
ICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQoc3RyW2VuY29kZWRSdW5Qb3NpdGlvbiArIDNd
KSkgeworICAgICAgICAgICAgICAgIC8vIFBhcnNlIEhleGFkZWNpbWFsLgorICAgICAgICAgICAg
ICAgIGxsID0gc3RkOjptaW4oZW5jb2RlZFJ1bkxlbmd0aCAtIDMsIDgpOworICAgICAgICAgICAg
ICAgIHEgPSBzdHIuY2hhcmFjdGVycygpICsgZW5jb2RlZFJ1blBvc2l0aW9uICsgMzsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGw7ICsraSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAocVswXSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsr
cTsgLy8gSW5jcmVtZW50IHEgc28gdGhhdCB3ZSBkbyBub3QgaW5jbHVkZSB0aGUgJzsnIGluIHRo
ZSBkZWNvZGVkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChxWzBdID09ICcmJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
QVNDSUlIZXhEaWdpdChxWzBdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbG9z
ZUxhc3RFbnRpdHkgfHwgcSA9PSAoc3RyLmNoYXJhY3RlcnMoKSArIGVuY29kZWRSdW5Qb3NpdGlv
biArIDMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSW52YWxpZENoYXIgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgRW50aXR5VW5pY29kZVZhbHVlID0gKEVudGl0eVVuaWNv
ZGVWYWx1ZSA8PCA0KSB8IHRvQVNDSUlIZXhWYWx1ZShxWzBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgKytxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5jb2Rl
ZFJ1bkxlbmd0aCA+PSAzIAorICAgICAgICAgICAgICAgICAgICAgICAmJiBpc0FTQ0lJRGlnaXQo
c3RyW2VuY29kZWRSdW5Qb3NpdGlvbiArIDJdKSkgeworICAgICAgICAgICAgICAgIC8vIFBhcnNl
IGRlY2ltYWwuCisgICAgICAgICAgICAgICAgbGwgPSBzdGQ6Om1pbihlbmNvZGVkUnVuTGVuZ3Ro
IC0gMiwgOCk7CisgICAgICAgICAgICAgICAgcSA9IHN0ci5jaGFyYWN0ZXJzKCkgKyBlbmNvZGVk
UnVuUG9zaXRpb24gKyAyOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsbDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChxWzBdID09ICc7JykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgKytxOyAvLyBJbmNyZW1lbnQgcSBzbyB0aGF0IHdlIGRvIG5v
dCBpbmNsdWRlIHRoZSAnOycgaW4gdGhlIGRlY29kZWQgc3RyaW5nLgorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHFbMF0gPT0gJyYnKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHFbMF0pKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNsb3NlTGFzdEVudGl0eSB8fCBxID09IChzdHIuY2hhcmFjdGVycygp
ICsgZW5jb2RlZFJ1blBvc2l0aW9uICsgMikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm91bmRJbnZhbGlkQ2hhciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBFbnRpdHlVbmljb2Rl
VmFsdWUgPSBFbnRpdHlVbmljb2RlVmFsdWUgKiAxMCArIChxWzBdIC0gJzAnKTsKKyAgICAgICAg
ICAgICAgICAgICAgKytxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFBhcnNlIGVudGl0eSBuYW1lLgorICAgICAgICAg
ICAgY2hhciBlbnRpdHlOYW1lQnVmZmVyWzEwXTsKKyAgICAgICAgICAgIGxsID0gc3RkOjptaW4o
ZW5jb2RlZFJ1bkxlbmd0aCAtIDEsIChpbnQpIHNpemVvZihlbnRpdHlOYW1lQnVmZmVyKSAtIDEp
OworICAgICAgICAgICAgdW5zaWduZWQgZW50aXR5TmFtZUxlbmd0aFNvRmFyID0gMDsgLy8gVGhl
IGxlbmd0aCBvZiB0aGUgZW50aXR5IG5hbWUuCisgICAgICAgICAgICBxID0gc3RyLmNoYXJhY3Rl
cnMoKSArIGVuY29kZWRSdW5Qb3NpdGlvbiArIDE7CisgICAgICAgICAgICBmb3IgKDsgZW50aXR5
TmFtZUxlbmd0aFNvRmFyIDwgbGw7ICsrZW50aXR5TmFtZUxlbmd0aFNvRmFyKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHFbMF0gPT0gJzsnKSB7CisgICAgICAgICAgICAgICAgICAgICsrcTsgLy8g
SW5jcmVtZW50IHEgc28gdGhhdCB3ZSBkbyBub3QgaW5jbHVkZSB0aGUgJzsnIGluIHRoZSBkZWNv
ZGVkIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChxWzBdID09ICcmJykKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKHFbMF0pKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghY2xvc2VMYXN0RW50aXR5IHx8IHEgPT0gKHN0ci5j
aGFyYWN0ZXJzKCkgKyBlbmNvZGVkUnVuUG9zaXRpb24gKyAxKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kSW52YWxpZENoYXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW50aXR5TmFtZUJ1ZmZlcltl
bnRpdHlOYW1lTGVuZ3RoU29GYXJdID0gcVswXTsKKyAgICAgICAgICAgICAgICArK3E7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGUgPSAoZm91bmRJbnZhbGlkQ2hh
cik/IDAgOiBmaW5kRW50aXR5KCZlbnRpdHlOYW1lQnVmZmVyWzBdLCBlbnRpdHlOYW1lTGVuZ3Ro
U29GYXIpOworICAgICAgICAgICAgaWYgKGUpCisgICAgICAgICAgICAgICAgRW50aXR5VW5pY29k
ZVZhbHVlID0gZS0+Y29kZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGZvdW5k
SW52YWxpZENoYXIgfHwgRW50aXR5VW5pY29kZVZhbHVlID09IDAgfHwgRW50aXR5VW5pY29kZVZh
bHVlID4gMHgxMEZGRkYpIHsKKyAgICAgICAgICAgIGZvdW5kSW52YWxpZENoYXIgPSBmYWxzZTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXN1
bHQuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCkgKyBkZWNvZGVkUG9zaXRpb24sIGVuY29kZWRSdW5Q
b3NpdGlvbiAtIGRlY29kZWRQb3NpdGlvbik7CisgICAgICAgIGlmIChhbGxvd0NvbnRyb2xDaGFy
YWN0ZXJzIHx8ICFpc0NvbnRyb2xDaGFyYWN0ZXIoRW50aXR5VW5pY29kZVZhbHVlKSkKKyAgICAg
ICAgICAgIGlmIChFbnRpdHlVbmljb2RlVmFsdWUgPD0gMHhGRkZGKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoZml4VXBFbnRpdHlWYWx1ZShFbnRpdHlVbmljb2RlVmFsdWUpKTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVTE2X0xFQUQo
RW50aXR5VW5pY29kZVZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChVMTZf
VFJBSUwoRW50aXR5VW5pY29kZVZhbHVlKSk7CisgICAgICAgICAgICB9ICAgICAgICAKKyAgICAg
ICAgICAgIGRlY29kZWRQb3NpdGlvbiA9IChxKT8gcSAtIHN0ci5jaGFyYWN0ZXJzKCkgOiBlbmNv
ZGVkUnVuUG9zaXRpb247CisgICAgICAgIGlmIChxKQorICAgICAgICAgICAgc2VhcmNoUG9zaXRp
b24gPSBxIC0gc3RyLmNoYXJhY3RlcnMoKTsgLy8gQWR2YW5jZSB0aGUgc2VhcmNoIHBvc2l0aW9u
IHRvIHRoZSBlbmQgb2YgdGhlIGxhc3QgZW50aXR5LgorICAgIH0KKyAgICAKKyAgICByZXN1bHQu
YXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCkgKyBkZWNvZGVkUG9zaXRpb24sIGxlbmd0aCAtIGRlY29k
ZWRQb3NpdGlvbik7CisgICAgCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQocmVzdWx0KTsKIH0K
IAogYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdAogewotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBTdHJpbmcgcGFn
ZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOworICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7CisgICAgaWYgKG1fcGFyZW50RnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkgPT0gYmxhbmtVUkwoKSkKKyAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdCht
X3BhcmVudEZyYW1lLCBzdHJpbmcpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQg
PSBmaW5kSW5SZXF1ZXN0KG1fZnJhbWUsIHN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KyAgICAKK2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7
CisgICAgU3RyaW5nIHBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7
CiAgICAgCiAgICAgaWYgKHByb3RvY29sSXMocGFnZVVSTCwgImRhdGEiKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQorICAgIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPCBwYWdlVVJMLmxlbmd0aCgp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHJpbmcgY2FuIGFjdHVhbGx5IGZpdCBpbnNpZGUgdGhlIHBh
Z2VVUkwuCi0gICAgICAgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChwYWdlVVJM
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOworICAgICAgICBT
dHJpbmcgZGVjb2RlZFBhZ2VVUkwgPSBkZWNvZGVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50
KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CiAgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5m
aW5kKHN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8v
IFdlJ3ZlIGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KICAgICB9CiAgICAgCi0gICAgRm9ybURhdGEq
IGZvcm1EYXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdp
bmFsUmVxdWVzdCgpLmh0dHBCb2R5KCk7CisgICAgRm9ybURhdGEqIGZvcm1EYXRhT2JqID0gZnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9k
eSgpOwogICAgIGlmIChmb3JtRGF0YU9iaiAmJiAhZm9ybURhdGFPYmotPmlzRW1wdHkoKSkgewog
ICAgICAgICBTdHJpbmcgZm9ybURhdGEgPSBmb3JtRGF0YU9iai0+ZmxhdHRlblRvU3RyaW5nKCk7
CiAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPCBmb3JtRGF0YS5sZW5ndGgoKSkgewpAQCAt
MTQ1LDEyICsyNzYsMTIgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0
cgogICAgICAgICAgICAgLy8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBs
ZW5ndGggb2YgdGhlIHVybC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhh
biBvciBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAgICAgICAg
Ly8gc3RyaW5nLgotICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVS
TChmb3JtRGF0YSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsK
KyAgICAgICAgICAgIFN0cmluZyBkZWNvZGVkRm9ybURhdGEgPSBkZWNvZGVVUkwoZm9ybURhdGEs
IGZyYW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOwogICAgICAgICAgICAg
aWYgKGRlY29kZWRGb3JtRGF0YS5maW5kKHN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9T
VCBkYXRhLgogICAgICAgICB9CiAgICAgfQotCisgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9YU1NBdWRpdG9yLmgJKHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wYWdlL1hTU0F1
ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB+WFNTQXVkaXRvcigpOwogCiAgICAgICAgIGJvb2wgaXNFbmFibGVkKCkg
Y29uc3Q7CisgICAgICAgIAorICAgICAgICAvLyBTZXRzIHRoZSBwYXJlbnQgZnJhbWUgb2YgdGhp
cyBmcmFtZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5
IEZyYW1lTG9hZGVyOjpsb2FkU3ViZnJhbWUuCisgICAgICAgIHZvaWQgc2V0UGFyZW50RnJhbWUo
RnJhbWUqKTsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcmlwdCBzaG91
bGQgYmUgYWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uCiAgICAgICAgIC8vIGJhc2VkIG9uIHRo
ZSBjb250ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgpAQCAtODksMTIgKzk0LDI5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcg
ZGVjb2RlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
ID0gVVRGOEVuY29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9IGZhbHNlKTsKKyAg
ICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcgPSBVVEY4RW5jb2RpbmcoKSwgYm9vbCBhbGxvd0NvbnRyb2xD
aGFyYWN0ZXJzID0gZmFsc2UpOwogCisgICAgICAgIC8vIERlY29kZXMgdGhlIEhUTUwgZW50aXRp
ZXMgaW4gdGhlIHNwZWNpZmllZCBzdHJpbmcuIE1hbGZvcm1lZCBlbnRpdGVzIHJlbWFpbiBpbiB0
aGUgZGVjb2RlZCBzdHJpbmcuCisgICAgICAgIC8vCisgICAgICAgIC8vIElmIGNsb3NlTGFzdEVu
dGl0eSA9PSB0cnVlIGFuZCB0aGUgbGFzdCBIVE1MIGVudGl0eSBkb2VzIG5vdCBjb250YWluIGEg
Y2xvc2luZyAnOycsIHRoZW4gaXQgaXMgYXV0b21hdGljYWxseSBjbG9zZWQuCisgICAgICAgIC8v
IEZvciBleGFtcGxlLCBkZWNvZGVIVE1MRW50aXRpZXMoIiYjNjUmIzExMiYjMTEyJiMxMDgmIzEw
MSIsIHRydWUsIC4uLikgaXMgZXF1YWwgdG8gCisgICAgICAgIC8vIGRlY29kZUhUTUxFbnRpdGll
cygiJiM2NSYjMTEyJiMxMTImIzEwOCYjMTAxOyIsIGZhbHNlLCAuLi4pLiAKKyAgICAgICAgLy8g
Tm90aWNlIHRoZSBzdHJpbmdzIGluIHRoZSBhYm92ZSBmdW5jdGlvbiBjYWxscyBkaWZmZXIgaW4g
dGhlaXIgZXhjbHVzaW9uIG9yIGluY2x1c2lvbiBvZiB0aGUgJzsnIAorICAgICAgICAvLyB0ZXJt
aW5hdGlvbiBzZW50aW5lbCwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAvLworICAgICAgICAvLyBX
aGVuIGNsb3NlTGFzdEVudGl0eSA9PSBmYWxzZSwgYW5kIGFsbG93Q29udHJvbENoYXJhY3RlcnMg
PT0gdHJ1ZSwgdGhlbiB0aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHRvIHRoZSBmdW5jdGlvbmFsaXR5
IAorICAgICAgICAvLyBvZiBIVE1MVG9rZW5pemVyOjpwYXJzZUVudGl0eSAocmV2LiA0NDk5NSku
CisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlSFRNTEVudGl0aWVzKGNvbnN0IFN0cmluZyYg
c3RyLCBib29sIGNsb3NlTGFzdEVudGl0eSA9IGZhbHNlLCBib29sIGFsbG93Q29udHJvbENoYXJh
Y3RlcnMgPSBmYWxzZSk7CisgICAgICAgIAogICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29u
c3QgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIAorICAgICAgICBib29sIGZpbmRJblJlcXVlc3Qo
RnJhbWUqLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgICAgICAvLyBUaGUgZnJhbWUgdG8g
YXVkaXQuCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICAKKyAgICAgICAgLy8gVGhl
IHBhcmVudCBmcmFtZSBvZiB0aGlzIGZyYW1lLiBPbmx5IHZhbGlkIGlmIHRoaXMgaXMgc3ViIGZy
YW1lLgorICAgICAgICBGcmFtZSogbV9wYXJlbnRGcmFtZTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAy
LDcgKzUwMiw3IEBAIHN0YXRpYyBib29sIGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IoVUNoYXIKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIGlzQ29udHJvbENoYXJhY3RlcihVQ2hhciBjKQorYm9vbCBp
c0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKIHsKICAgICByZXR1cm4gYyA8ICcgJyB8fCBjID09
IDEyNzsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDgg
QEAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgewogICAgIHRpbWVfdCBt
X2xhc3RNb2RpZmllZERhdGU7CiB9OwogCitib29sIGlzQ29udHJvbENoYXJhY3RlcihVQ2hhciBj
KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFJlc291cmNlUmVz
cG9uc2VCYXNlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MzA2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwzMCBAQAogCiAgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5kLXVzZXItc2VsZWN0LW5vbmUuaHRt
bDoKIAorMjAwOS0wNi0yNSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQGludHVkYXRhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzA4CisKKyAgICAgICAg
VGVzdHMgcHJldmVudGlvbiBvZiBpbmplY3RlZCBzY3JpcHRzIHdpdGggSFRNTCBlbnRpdGllcyBl
bmNvZGluZywgc2NoZW1lIHJlbGF0aXZlIHBhdGhzLCAKKyAgICAgICAgaUZyYW1lIEphdmFTY3Jp
cHQgVVJMcywgYW5kIFVURi03IGVuY29kaW5nLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRmLTctZW5jb2RlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2
LXV0Zi03LWVuY29kZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlw
dC11cmwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2lubGluZS1ldmVudC1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1ldmVudC1IVE1MLWVu
dGl0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmst
SFRNTC1lbnRpdGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2stYW5kLW5vdGlmeS5wbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLWRlZmF1bHQtZW5jb2RlLnBsOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3NjcmlwdC10YWctdXRmLTctZW5jb2RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1z
Y2hlbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbDog
QWRkZWQuCisKIDIwMDktMDYtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1
aXYtdXRmLTctZW5jb2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3Jp
cHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisK
KwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAt
ZXF1aXYtdXRmLTctZW5jb2RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQo
dHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVy
dGFnLWRlZmF1bHQtZW5jb2RlLnBsP3E9JTNDbWV0YStodHRwLWVxdWl2JTNEJTIyQ29udGVudC1U
eXBlJTIyK2NvbnRlbnQlM0QlMjJ0ZXh0L2h0bWwlM0IrY2hhcnNldCUzRFVURi03JTIyLyUzRSUy
QkFEd0Fjd0JqQUhJQWFRQndBSFFBUGdCaEFHd0FaUUJ5QUhRQUtBQXhBQ2tBUEFBdkFITUFZd0J5
QUdrQWNBQjBBRDQtJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNj
cmlwdC11cmwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBz
Y3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9y
L3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP3E9JTNDaWZyYW1lJTIwc3JjPWphdmFzY3JpcHQ6
YWxlcnQoZG9jdW1lbnQuZG9tYWluKSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2
ZW50LUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2Ny
aXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0Lgor
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxp
bmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2lubGluZS1ldmVudC1IVE1MLWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JF
bmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3Jj
PSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy5wbD9xPSUzQ2ltZyUyMHNyYz0xJTIwb25lcnJvcj0lMjYlMjM5NyUyNiUyMzEw
OCUyNiUyMzEwMSUyNiUyMzExNCUyNiUyMzExNiUyNiUyMzQwJTI2JTIzNDklMjYlMjM0MSUzRSc+
Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNj
cmlwdC1saW5rLUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRN
TC1lbnRpdGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNl
IGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1l
bnRpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFz
Y3JpcHQtbGluay1IVE1MLWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2stYW5kLW5v
dGlmeS5wbD9lbG1pZD1hbmNob3JMaW5rJnE9JTNDYStpZCUzRGFuY2hvckxpbmsraHJlZiUzRCUy
NiUyM3gwMDAwMDA2YSUyNiUyM3g2MSUyNiUyM3g3NiUyNiUyM3g2MSUyNiUyM3g3MyUyNiUyM3g2
MyUyNiUyM3g3MiUyNiUyM3g2OSUyNiUyM3g3MCUyNiUyM3g3NCUyNiUyM3gzYSUyNiUyM3g2MSUy
NiUyM3g2YyUyNiUyM3g2NSUyNiUyM3g3MiUyNiUyM3g3NCUyNiUyM3gyOCUyNiUyM3gzMSUyNiUy
M3gyOSUzRXRlc3QlM0NhJTNFJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3Jp
cHQtdGFnLXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctdXRmLTctZW5j
b2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBT
b3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctdXRmLTct
ZW5jb2RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LXV0Zi03LWVuY29kZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLXV0Zi03LnBs
P3E9JTJiQUR3QWN3QmpBSElBYVFCd0FIUUFQZ0JoQUd3QVpRQnlBSFFBS0FBeEFDa0FQQUF2QUhN
QVl3QnlBR2tBY0FCMEFENC0nPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
UmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNj
cmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1z
Y2hlbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXJlbGF0aXZlLXNjaGVtZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NB
dWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZy
YW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3Vy
Y2VzL2VjaG8taW50ZXJ0YWcucGw/cT0lM0NzY3JpcHQrc3JjJTNELy8xMjcuMC4wLjElM0E4MDAw
L3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3hzcy5qcyUzRSUzQy9zY3JpcHQlM0UnPgor
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVy
dGFnLWNsaWNrLWFuZC1ub3RpZnkucGwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2st
YW5kLW5vdGlmeS5wbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorIyEvdXNyL2Jpbi9w
ZXJsIC13VAordXNlIHN0cmljdDsKK3VzZSBDR0k7CisKK215ICRjZ2kgPSBuZXcgQ0dJOworCitw
cmludCAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcblxuIjsKKworcHJp
bnQgIjwhRE9DVFlQRSBodG1sPlxuIjsKK3ByaW50ICI8aHRtbD5cbiI7CitwcmludCAiPGhlYWQ+
XG4iOworcHJpbnQgIjxzY3JpcHQ+XG4iOworcHJpbnQgIndpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpXG4iOworcHJpbnQgIntcbiI7CitwcmludCAiICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNy
ZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7XG4iOworcHJpbnQgIiAgICBldmVudC5pbml0RXZlbnQo
J2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7XG4iOworcHJpbnQgIiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnIi4kY2dpLT5wYXJhbSgnZWxtaWQnKS4iJykuZGlzcGF0Y2hFdmVudChldmVudCk7XG4i
OworcHJpbnQgIn1cbiI7CitwcmludCAiPC9zY3JpcHQ+XG4iOworcHJpbnQgIjwvaGVhZD5cbiI7
CitwcmludCAiPGJvZHk+XG4iOworcHJpbnQgJGNnaS0+cGFyYW0oJ3EnKTsKK3ByaW50ICI8c2Ny
aXB0PlxuIjsKK3ByaW50ICJpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKVxuIjsKK3By
aW50ICIgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpO1xuIjsKK3ByaW50ICI8
L3NjcmlwdD5cbiI7CitwcmludCAiPC9ib2R5PlxuIjsKK3ByaW50ICI8L2h0bWw+XG4iOwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWNsaWNrLWFuZC1ub3RpZnkucGwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctZGVmYXVsdC1l
bmNvZGUucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWRlZmF1bHQtZW5jb2RlLnBsCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jl
c291cmNlcy9lY2hvLWludGVydGFnLWRlZmF1bHQtZW5jb2RlLnBsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0IEBACisjIS91c3IvYmluL3BlcmwgLXdUCit1c2Ugc3RyaWN0OwordXNlIENHSTsK
KworbXkgJGNnaSA9IG5ldyBDR0k7CisKK3ByaW50ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbFxu
XG4iOworCitwcmludCAiPCFET0NUWVBFIGh0bWw+XG4iOworcHJpbnQgIjxodG1sPlxuIjsKK3By
aW50ICI8Ym9keT5cbiI7CitwcmludCAkY2dpLT5wYXJhbSgncScpOworcHJpbnQgIjwvYm9keT5c
biI7CitwcmludCAiPC9odG1sPlxuIjsKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy1k
ZWZhdWx0LWVuY29kZS5wbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpleGVjdXRhYmxlCiAgICsgKgoK
</data>
<flag name="review"
          id="16516"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31978</attachid>
            <date>2009-06-27 09:52:09 -0700</date>
            <delta_ts>2009-06-27 11:12:57 -0700</delta_ts>
            <desc>Patch without HTML entities support</desc>
            <filename>XSSAuditor_p3.patch</filename>
            <type>text/plain</type>
            <size>18488</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC02OTUsNiArNjk1LDM4IEBACiAgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
ICAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjp+U1ZHSW1hZ2UpOiBUd2VhayB0aGlzIEFTU0VS
VCAtIFNWR0ltYWdlcyBtaWdodCBnZXQgZGVzdHJveWVkIHdpdGhvdXQgZXZlciBoYXZpbmcgYSBj
bGllbnQuCiAKKzIwMDktMDYtMjUgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzA4CisgICAgICAgIAorICAgICAg
ICBGaXggYWRkcmVzc2VzIGZhbHNlIG5lZ2F0aXZlcyB3aXRoIHJlc3BlY3QgdG8gc2NoZW1lIHJl
bGF0aXZlIHBhdGhzLCBpRnJhbWUgSmF2YVNjcmlwdCBVUkxzLAorICAgICAgICBhbmQgVVRGLTcg
ZW5jb2RlZCBwYXlsb2Fkcy4gICAKKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRmLTctZW5jb2RlZC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaWZyYW1lLWphdmFzY3JpcHQtdXJsLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQt
dGFnLXV0Zi03LWVuY29kZWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLmh0bWwK
KworICAgICAgICAqIGh0bWwvSFRNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVG9rZW5pemVyOjpzY3JpcHRIYW5kbGVyKTogTW92ZWQgWFNTQXVkaXRvciBjaGVjayB0byBI
VE1MVG9rZW5pemVyOjpwYXJzZVRhZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6
OnBhcnNlVGFnKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6IE1vZGlmaWVkIHRvIGluZm9ybSBY
U1NBdWRpdG9yIG9mIHBhcmVudCBmcmFtZSBzbworICAgICAgICBhcyB0byBjb21wYXJlIGFnYWlu
c3QgaUZyYW1lIGphdmFzY3JpcHQgVVJMLgorICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5jcHA6
IFJlbW92ZWQgbWV0aG9kIFhTU0F1ZGl0b3I6OmlzQ29udHJvbENoYXJhY3Rlci4gSW5zdGVhZCwg
ZXhwb3NlZCBtZXRob2QKKyAgICAgICAgaXNDb250cm9sQ2hhcmFjdGVyIGluIFJlc291cmNlUmVz
cG9uc2VCYXNlLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OlhTU0F1ZGl0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6c2V0UGFyZW50RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZGVjb2RlVVJMKTogTW9kaWZpZWQgdG8gZGVjb2RlIHN0
cmluZyB1c2luZyBzcGVjaWZpZWQgZW5jb2Rlci4KKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbmRJblJlcXVlc3QpOiBHZW5lcmFsaXplZCB0byBhcmJpdHJhcnkgZnJhbWUgc28gYXMg
dG8gcHJldmVudCBleGVjdXRpb24KKyAgICAgICAgb2YgaUZyYW1lIGphdmFzY3JpcHQgVVJMLgor
ICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5oOiBBZGRlZCBmaWVsZCBtX3BhcmVudEZyYW1lLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDb250cm9sQ2hhcmFjdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisKIDIwMDktMDYtMjUgIFBpZXJyZSBkJ0hl
cmJlbW9udCAgPHBkaGVyYmVtb250QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiA0NTMwNikK
KysrIFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3
LDE0ICs0MzcsMTEgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQog
ICAgICAgICAgICAgICAgIGlmICghbV9kb2MtPm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIlJlcXVlc3Rpbmcgc2NyaXB0IGF0IHRpbWUgJWRcbiIsIG1fZG9jLT5l
bGFwc2VkVGltZSgpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGlmIChtX1hTU0F1ZGl0b3Ig
JiYgbV9YU1NBdWRpdG9yLT5jYW5Mb2FkRXh0ZXJuYWxTY3JpcHRGcm9tU3JjKG1fc2NyaXB0VGFn
U3JjQXR0clZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGFyc2VyIG1pZ2h0
IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEgd2luZG93LmNsb3NlIGNhbGwgaW4g
YW4gZWFybGllciBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgIC8vIElmIHNvLCB3ZSBkb24n
dCB3YW50IHRvIGxvYWQgc2NyaXB0cy4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhcnNl
clN0b3BwZWQgJiYgKGNzID0gbV9kb2MtPmRvY0xvYWRlcigpLT5yZXF1ZXN0U2NyaXB0KG1fc2Ny
aXB0VGFnU3JjQXR0clZhbHVlLCBtX3NjcmlwdFRhZ0NoYXJzZXRBdHRyVmFsdWUpKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgbV9zY3JpcHROb2RlID0g
MDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAvLyBUaGUgcGFyc2Vy
IG1pZ2h0IGhhdmUgYmVlbiBzdG9wcGVkIGJ5IGZvciBleGFtcGxlIGEgd2luZG93LmNsb3NlIGNh
bGwgaW4gYW4gZWFybGllciBzY3JpcHQuCisgICAgICAgICAgICAgICAgLy8gSWYgc28sIHdlIGRv
bid0IHdhbnQgdG8gbG9hZCBzY3JpcHRzLgorICAgICAgICAgICAgICAgIGlmICghbV9wYXJzZXJT
dG9wcGVkICYmIChjcyA9IG1fZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVzdFNjcmlwdChtX3Njcmlw
dFRhZ1NyY0F0dHJWYWx1ZSwgbV9zY3JpcHRUYWdDaGFyc2V0QXR0clZhbHVlKSkpCisgICAgICAg
ICAgICAgICAgICAgIG1fcGVuZGluZ1NjcmlwdHMuYXBwZW5kKGNzKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1fc2NyaXB0Tm9kZSA9IDA7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX3NjcmlwdE5vZGUgPSAwOwpAQCAtMTQ3Niw4ICsx
NDczLDExIEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnBhcnMKICAgICAg
ICAgICAgICAgICBtX3NjcmlwdFRhZ0NoYXJzZXRBdHRyVmFsdWUgPSBTdHJpbmcoKTsKICAgICAg
ICAgICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYXR0cnMgJiYgIW1fZnJhZ21lbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1fZG9jLT5mcmFtZSgpICYmIG1fZG9jLT5mcmFtZSgpLT5z
Y3JpcHQoKS0+aXNFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9
IG1fY3VycmVudFRva2VuLmF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVtKHNyY0F0dHIpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgoYSA9IG1fY3VycmVudFRva2VuLmF0dHJzLT5nZXRBdHRy
aWJ1dGVJdGVtKHNyY0F0dHIpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Ny
aXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2MtPmNvbXBsZXRlVVJMKHBhcnNlVVJMKGEtPnZhbHVl
KCkpKS5zdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9YU1NBdWRp
dG9yICYmICFtX1hTU0F1ZGl0b3ItPmNhbkxvYWRFeHRlcm5hbFNjcmlwdEZyb21TcmMoYS0+dmFs
dWUoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0
clZhbHVlID0gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgyLDYgKzQ4Miw5IEBAIEZyYW1lKiBGcmFt
ZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmEKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5j
aGVja0NvbXBsZXRlZCgpOwogICAgIH0KIAorICAgIC8vIFNldCB0aGUgcGFyZW50IG9mIHRoZSBz
dWIgZnJhbWUgdG8gdGhlIGZyYW1lIG9mIHRoaXMgZnJhbWVsb2FkZXIuCisgICAgZnJhbWUtPnNj
cmlwdCgpLT54c3NBdWRpdG9yKCktPnNldFBhcmVudEZyYW1lKG1fZnJhbWUpOworICAgIAogICAg
IHJldHVybiBmcmFtZS5nZXQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24g
NDUzMDYpCisrKyBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDIwICszNSwxOCBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCit1c2luZyBuYW1lc3BhY2UgV1RGOwor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gIAotLy8gVGhpcyBtZXRob2QgYWxzbyBhcHBlYXJzIGlu
IGZpbGUgUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwLgotc3RhdGljIGJvb2wgaXNDb250cm9sQ2hh
cmFjdGVyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPCAnICcgfHwgYyA9PSAxMjc7Ci19Ci0g
IAorCiBYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUo
ZnJhbWUpCisgICAgLCBtX3BhcmVudEZyYW1lKDApCiB7CiB9CiAKQEAgLTYxLDYgKzU5LDExIEBA
IGJvb2wgWFNTQXVkaXRvcjo6aXNFbmFibGVkKCkgY29uc3QKICAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwogICAgIHJldHVybiAoc2V0dGluZ3MgJiYgc2V0dGlu
Z3MtPnhzc0F1ZGl0b3JFbmFibGVkKCkpOwogfQorCit2b2lkIFhTU0F1ZGl0b3I6OnNldFBhcmVu
dEZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBtX3BhcmVudEZyYW1lID0gZnJhbWU7Cit9CiAg
IAogYm9vbCBYU1NBdWRpdG9yOjpjYW5FdmFsdWF0ZShjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUp
IGNvbnN0CiB7CkBAIC0xMDksMzUgKzExMiw1MCBAQCBib29sIFhTU0F1ZGl0b3I6OmNhbkxvYWRP
YmplY3QoY29uc3QgU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBYU1NBdWRpdG9y
OjpkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcsIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycykKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVV
UkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wg
YWxsb3dDb250cm9sQ2hhcmFjdGVycykKIHsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIFN0cmlu
ZyB1cmwgPSBzdHI7CiAgICAgCiAgICAgdXJsLnJlcGxhY2UoJysnLCAnICcpOwotICAgIHJlc3Vs
dCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwsIGVuY29kaW5nKTsKLSAgICByZXR1cm4g
YWxsb3dOdWxsQ2hhcmFjdGVycyA/IHJlc3VsdCA6IHJlc3VsdC5yZW1vdmVDaGFyYWN0ZXJzKCZp
c0NvbnRyb2xDaGFyYWN0ZXIpOworICAgIHJlc3VsdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyh1cmwpOworICAgIGlmICghYWxsb3dDb250cm9sQ2hhcmFjdGVycykKKyAgICAgICAgcmVzdWx0
LnJlbW92ZUNoYXJhY3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7CisgICAgcmVzdWx0ID0gZW5j
b2RpbmcuZGVjb2RlKHJlc3VsdC51dGY4KCkuZGF0YSgpLCByZXN1bHQubGVuZ3RoKCkpOworICAg
IGlmICghYWxsb3dDb250cm9sQ2hhcmFjdGVycykKKyAgICAgICAgcmVzdWx0LnJlbW92ZUNoYXJh
Y3RlcnMoJmlzQ29udHJvbENoYXJhY3Rlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9v
bCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdAog
ewotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBTdHJpbmcgcGFnZVVSTCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOworICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7CisgICAgaWYgKG1fcGFyZW50RnJhbWUgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkgPT0gYmxhbmtVUkwoKSkKKyAgICAgICAgcmVzdWx0ID0gZmluZEluUmVxdWVzdChtX3BhcmVu
dEZyYW1lLCBzdHJpbmcpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXN1bHQgPSBmaW5k
SW5SZXF1ZXN0KG1fZnJhbWUsIHN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAK
K2Jvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKSBjb25zdAoreworICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAg
U3RyaW5nIHBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAg
CiAgICAgaWYgKHByb3RvY29sSXMocGFnZVVSTCwgImRhdGEiKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LQorICAgIAogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPCBwYWdlVVJMLmxlbmd0aCgpKSB7CiAg
ICAgICAgIC8vIFRoZSBzdHJpbmcgY2FuIGFjdHVhbGx5IGZpdCBpbnNpZGUgdGhlIHBhZ2VVUkwu
Ci0gICAgICAgIFN0cmluZyBkZWNvZGVkUGFnZVVSTCA9IGRlY29kZVVSTChwYWdlVVJMLCBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOworICAgICAgICBTdHJpbmcg
ZGVjb2RlZFBhZ2VVUkwgPSBkZWNvZGVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRl
Y29kZXIoKS0+ZW5jb2RpbmcoKSk7CiAgICAgICAgIGlmIChkZWNvZGVkUGFnZVVSTC5maW5kKHN0
cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlJ3Zl
IGZvdW5kIHRoZSBzbW9raW5nIGd1bi4KICAgICB9CiAgICAgCi0gICAgRm9ybURhdGEqIGZvcm1E
YXRhT2JqID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVx
dWVzdCgpLmh0dHBCb2R5KCk7CisgICAgRm9ybURhdGEqIGZvcm1EYXRhT2JqID0gZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS5odHRwQm9keSgpOwog
ICAgIGlmIChmb3JtRGF0YU9iaiAmJiAhZm9ybURhdGFPYmotPmlzRW1wdHkoKSkgewogICAgICAg
ICBTdHJpbmcgZm9ybURhdGEgPSBmb3JtRGF0YU9iai0+ZmxhdHRlblRvU3RyaW5nKCk7CiAgICAg
ICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPCBmb3JtRGF0YS5sZW5ndGgoKSkgewpAQCAtMTQ1LDEy
ICsxNjMsMTIgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cgogICAg
ICAgICAgICAgLy8gdGhlIHVybC1lbmNvZGVkIFBPU1QgZGF0YSBiZWNhdXNlIHRoZSBsZW5ndGgg
b2YgdGhlIHVybC1kZWNvZGVkCiAgICAgICAgICAgICAvLyBjb2RlIGlzIGxlc3MgdGhhbiBvciBl
cXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSB1cmwtZW5jb2RlZAogICAgICAgICAgICAgLy8gc3Ry
aW5nLgotICAgICAgICAgICAgU3RyaW5nIGRlY29kZWRGb3JtRGF0YSA9IGRlY29kZVVSTChmb3Jt
RGF0YSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICAg
ICAgICAgIFN0cmluZyBkZWNvZGVkRm9ybURhdGEgPSBkZWNvZGVVUkwoZm9ybURhdGEsIGZyYW1l
LT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOwogICAgICAgICAgICAgaWYgKGRl
Y29kZWRGb3JtRGF0YS5maW5kKHN0cmluZywgMCwgZmFsc2UpICE9IC0xKQogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOyAgLy8gV2UgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgUE9TVCBkYXRh
LgogICAgICAgICB9CiAgICAgfQotCisgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmgJKHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB+WFNTQXVkaXRvcigpOwogCiAgICAgICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7
CisgICAgICAgIAorICAgICAgICAvLyBTZXRzIHRoZSBwYXJlbnQgZnJhbWUgb2YgdGhpcyBmcmFt
ZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IEZyYW1l
TG9hZGVyOjpsb2FkU3ViZnJhbWUuCisgICAgICAgIHZvaWQgc2V0UGFyZW50RnJhbWUoRnJhbWUq
KTsKIAogICAgICAgICAvLyBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNjcmlwdCBzaG91bGQgYmUg
YWxsb3dlZCBvciBkZW5pZWQgZXhlY3V0aW9uCiAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBjb250
ZW50IG9mIGFueSB1c2VyLXN1Ym1pdHRlZCBkYXRhLgpAQCAtODksMTIgKzk0LDE3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBjYW5Mb2FkT2JqZWN0KGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2Rl
VVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nID0gVVRG
OEVuY29kaW5nKCksIGJvb2wgYWxsb3dOdWxsQ2hhcmFjdGVycyA9IGZhbHNlKTsKLQorICAgICAg
ICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygpLCBib29sIGFsbG93Q29udHJvbENoYXJh
Y3RlcnMgPSBmYWxzZSk7CisgICAgICAgIAogICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29u
c3QgU3RyaW5nJikgY29uc3Q7CisgICAgICAgIAorICAgICAgICBib29sIGZpbmRJblJlcXVlc3Qo
RnJhbWUqLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKIAogICAgICAgICAvLyBUaGUgZnJhbWUgdG8g
YXVkaXQuCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICAKKyAgICAgICAgLy8gVGhl
IHBhcmVudCBmcmFtZSBvZiB0aGlzIGZyYW1lLiBPbmx5IHZhbGlkIGlmIHRoaXMgaXMgc3ViIGZy
YW1lLgorICAgICAgICBGcmFtZSogbV9wYXJlbnRGcmFtZTsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDQ1MzA2KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAy
LDcgKzUwMiw3IEBAIHN0YXRpYyBib29sIGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IoVUNoYXIKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIGlzQ29udHJvbENoYXJhY3RlcihVQ2hhciBjKQorYm9vbCBp
c0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykKIHsKICAgICByZXR1cm4gYyA8ICcgJyB8fCBjID09
IDEyNzsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCShyZXZpc2lvbiA0NTMwNikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDgg
QEAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgewogICAgIHRpbWVfdCBt
X2xhc3RNb2RpZmllZERhdGU7CiB9OwogCitib29sIGlzQ29udHJvbENoYXJhY3RlcihVQ2hhciBj
KTsKKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFJlc291cmNlUmVz
cG9uc2VCYXNlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MzA2KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5NiwyNSBAQAogCiAgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vdXNlci1kcmFnLWVsZW1lbnQtYW5kLXVzZXItc2VsZWN0LW5vbmUuaHRt
bDoKIAorMjAwOS0wNi0yNSAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQGludHVkYXRhLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzA4CisKKyAgICAgICAg
VGVzdHMgcHJldmVudGlvbiBvZiBpbmplY3RlZCBzY3JpcHRzIHdpdGggc2NoZW1lIHJlbGF0aXZl
IHBhdGhzLCBpRnJhbWUgSmF2YVNjcmlwdCBVUkxzLCAKKyAgICAgICAgYW5kIFVURi03IGVuY29k
aW5nLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1
aXYtdXRmLTctZW5jb2RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZh
c2NyaXB0LXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVy
dGFnLWRlZmF1bHQtZW5jb2RlLnBsOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWct
dXRmLTctZW5jb2RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbDogQWRkZWQuCisKIDIw
MDktMDYtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRw
LWVxdWl2LXV0Zi03LWVuY29kZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRmLTctZW5j
b2RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBT
b3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2h0dHAtZXF1aXYtdXRmLTct
ZW5jb2RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9odHRwLWVxdWl2LXV0Zi03LWVuY29kZWQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9odHRwLWVxdWl2
LXV0Zi03LWVuY29kZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLWRlZmF1bHQt
ZW5jb2RlLnBsP3E9JTNDbWV0YStodHRwLWVxdWl2JTNEJTIyQ29udGVudC1UeXBlJTIyK2NvbnRl
bnQlM0QlMjJ0ZXh0L2h0bWwlM0IrY2hhcnNldCUzRFVURi03JTIyLyUzRSUyQkFEd0Fjd0JqQUhJ
QWFRQndBSFFBUGdCaEFHd0FaUUJ5QUhRQUtBQXhBQ2tBUEFBdkFITUFZd0J5QUdrQWNBQjBBRDQt
Jz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJh
bWUtamF2YXNjcmlwdC11cmwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8g
ZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQg
d2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS94c3NBdWRpdG9yL2lmcmFtZS1qYXZhc2NyaXB0LXVybC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlw
dC11cmwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9pZnJhbWUtamF2YXNjcmlwdC11cmwuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRv
ckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBz
cmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9l
Y2hvLWludGVydGFnLnBsP3E9JTNDaWZyYW1lJTIwc3JjPWphdmFzY3JpcHQ6YWxlcnQoZG9jdW1l
bnQuZG9tYWluKSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRh
Zy11dGYtNy1lbmNvZGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29kZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNl
IGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXV0Zi03LWVuY29k
ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYtNy1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy11dGYt
Ny1lbmNvZGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy11dGYtNy5wbD9xPSUy
YkFEd0Fjd0JqQUhJQWFRQndBSFFBUGdCaEFHd0FaUUJ5QUhRQUtBQXhBQ2tBUEFBdkFITUFZd0J5
QUdrQWNBQjBBRDQtJz4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXJlbGF0aXZlLXNjaGVtZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRv
ci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXJlbGF0aXZlLXNjaGVtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVz
ZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQg
Zm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtcmVsYXRpdmUtc2NoZW1lLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2Ny
aXB0LXRhZy13aXRoLXNvdXJjZS1yZWxhdGl2ZS1zY2hlbWUuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRv
ckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBz
cmM9J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9l
Y2hvLWludGVydGFnLnBsP3E9JTNDc2NyaXB0K3NyYyUzRC8vMTI3LjAuMC4xJTNBODAwMC9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy94c3MuanMlM0UlM0Mvc2NyaXB0JTNFJz4KKzwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNo
by1pbnRlcnRhZy1kZWZhdWx0LWVuY29kZS5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctZGVm
YXVsdC1lbmNvZGUucGwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctZGVmYXVsdC1lbmNvZGUu
cGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKyMhL3Vzci9iaW4vcGVybCAtd1QKK3Vz
ZSBzdHJpY3Q7Cit1c2UgQ0dJOworCitteSAkY2dpID0gbmV3IENHSTsKKworcHJpbnQgIkNvbnRl
bnQtVHlwZTogdGV4dC9odG1sXG5cbiI7CisKK3ByaW50ICI8IURPQ1RZUEUgaHRtbD5cbiI7Citw
cmludCAiPGh0bWw+XG4iOworcHJpbnQgIjxib2R5PlxuIjsKK3ByaW50ICRjZ2ktPnBhcmFtKCdx
Jyk7CitwcmludCAiPC9ib2R5PlxuIjsKK3ByaW50ICI8L2h0bWw+XG4iOwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291
cmNlcy9lY2hvLWludGVydGFnLWRlZmF1bHQtZW5jb2RlLnBsCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
OmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>
<flag name="review"
          id="16519"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>