<?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>26921</bug_id>
          
          <creation_ts>2009-07-02 00:58:36 -0700</creation_ts>
          <short_desc>[XSSAuditor] HTML entities can bypass xssAuditor</short_desc>
          <delta_ts>2009-07-10 23:47:22 -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="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129475</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-02 00:58:36 -0700</bug_when>
    <thetext>Splitting off from Bug 26708.  We still need to teach the XSSAuditor about HTML entities.  I have a patch building.  I&apos;ll post it in the morning.  (Boo for slow computers.)

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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129508</commentid>
    <comment_count>1</comment_count>
      <attachid>32183</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-02 08:58:51 -0700</bug_when>
    <thetext>Created attachment 32183
Not quite right patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130538</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-08 15:14:41 -0700</bug_when>
    <thetext>Dan, do you want to look at making this patch work properly?  I&apos;m having trouble getting XCode to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130543</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-07-08 15:24:43 -0700</bug_when>
    <thetext>Sure, I&apos;ll take a look.

(In reply to comment #2)
&gt; Dan, do you want to look at making this patch work properly?  I&apos;m having
&gt; trouble getting XCode to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131049</commentid>
    <comment_count>4</comment_count>
      <attachid>32602</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-07-10 19:14:17 -0700</bug_when>
    <thetext>Created attachment 32602
Working patch with tests

Modified initial patch XSSAuditor::decodeHTMLEntities to more closely match the functionality in HTMLTokenizer for handling illegal entities by not decoding them (for example: HTMLTokenizer does not substitute &apos;\0&apos; for &amp;#00, &amp;#x00, but the PreloadScanner, used by XSSAuditor::decodeHTMLEntities, does). To get similar behavior, I make a copy of SegmentedString |source| called sourceShadow before calling the PreloadScanner. If the PreloadScanner returns and invalid entity e == 0xFFFD, then I swap |source| and |sourceShadow|. Maybe there is a more efficient way to achieve the same result?

The list of parameters to findInRequest, decodeURL are becoming unwieldy. The code should be cleaned up, but this may be better to do in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131098</commentid>
    <comment_count>5</comment_count>
      <attachid>32602</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-10 23:42:07 -0700</bug_when>
    <thetext>Comment on attachment 32602
Working patch with tests

This is fine for now.  Now that we&apos;ve worked through all the known issues, it&apos;s time to do a clean up patch for the auditor.  There are some nits that I&apos;d change with this patch, but we can deal with them in the cleanup patch.

Thanks for the thorough test cases.  That work is about to pay off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131100</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-10 23:47:22 -0700</bug_when>
    <thetext>Transmitting file data ....................
Committed revision 45752.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32183</attachid>
            <date>2009-07-02 08:58:51 -0700</date>
            <delta_ts>2009-07-02 08:58:51 -0700</delta_ts>
            <desc>Not quite right patch</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>4539</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9s
aW5rLW9uY2xpY2stZW50aXRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9saW5rLW9uY2xpY2stZW50aXRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kYzc4ODMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2xpbmstb25jbGljay1lbnRpdGllcy5o
dG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVk
aXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFt
ZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNl
cy9lY2hvLWludGVydGFnLnBsP3E9PGElMjBvbmNsaWNrPSdhbGVydCgvWFNTLykvLyZhbXA7Y29w
eTsnPkNsaWNrPC9hPiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWVu
dGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy1lbnRpdGllcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQwYmNiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy1lbnRpdGllcy5odG1sCkBAIC0wLDAgKzEsMTUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBs
P3E9PHNjcmlwdD5hbGVydCgvWFNTLykvLyZhbXA7Y29weTs8L3NjcmlwdD4iPgorPC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1lbnRpdGllcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0
aC1zb3VyY2UtZW50aXRpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iNTU3OWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtZW50aXRpZXMuaHRtbApAQCAt
MCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFi
bGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1p
bnRlcnRhZy5wbD9xPTxzY3JpcHQgc3JjPSdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMveHNzLmpzPyZhbXA7Y29weTsnPjwvc2NyaXB0PiI+Cis8L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9YU1NBdWRp
dG9yLmNwcCBiL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAppbmRleCA2YTA4NTViLi5iMDgx
ZDc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiWFNTQXVk
aXRvci5oIgogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCkBA
IC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUHJlbG9hZFNjYW5uZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlQmFzZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTA2LDYgKzEwOCwzNyBAQCBib29sIFhTU0F1
ZGl0b3I6OmNhbkxvYWRPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVIVE1MRW50aXRpZXMoY29uc3Qg
U3RyaW5nJiBzdHIpCit7CisgICAgU2VnbWVudGVkU3RyaW5nIHNvdXJjZShzdHIpOworICAgIFZl
Y3RvcjxVQ2hhcj4gcmVzdWx0OworCisgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKKyAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKKwor
ICAgICAgICBpZiAoY2MgIT0gJyYnKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNjKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBub3RFbm91
Z2hDaGFyYWN0ZXJzID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIGVudGl0eSA9IFByZWxvYWRT
Y2FubmVyOjpjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CisgICAg
ICAgIC8vIFdlIGlnbm9yZSBub3RFbm91Z2hDaGFyYWN0ZXJzIGJlY2F1c2Ugd2UgbWlnaHQgYXMg
d2VsbCB1c2UgdGhpcyBsb29wCisgICAgICAgIC8vIHRvIGNvcHkgdGhlIHJlbWFpbmluZyBjaGFy
YWN0ZXJzIGludG8gfHJlc3VsdHwuCisKKyAgICAgICAgaWYgKGVudGl0eSA+IDB4RkZGRikgewor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChVMTZfTEVBRChlbnRpdHkpKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoVTE2X1RSQUlMKGVudGl0eSkpOworICAgICAgICB9IGVsc2UgaWYgKGVu
dGl0eSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZW50aXR5KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJicpOworICAgIH0KKworICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KHJlc3VsdCk7Cit9CisKIFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29u
c3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvb2wgYWxsb3dO
dWxsQ2hhcmFjdGVycykKIHsKICAgICBTdHJpbmcgcmVzdWx0OwpAQCAtMTE4LDcgKzE1MSw4IEBA
IFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcsIGJvCiAgICAgICAgIHJlc3VsdCA9IGRlY29kZWRSZXN1bHQ7
CiAgICAgaWYgKCFhbGxvd051bGxDaGFyYWN0ZXJzKQogICAgICAgICByZXN1bHQgPSBTdHJpbmdJ
bXBsOjpjcmVhdGVTdHJpcHBpbmdOdWxsQ2hhcmFjdGVycyhyZXN1bHQuY2hhcmFjdGVycygpLCBy
ZXN1bHQubGVuZ3RoKCkpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gZGVjb2Rl
SFRNTEVudGl0aWVzKHJlc3VsdCk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVxdWVz
dChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Y
U1NBdWRpdG9yLmggYi9XZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5oCmluZGV4IDM5Njc3NGEuLmNk
MGMzMGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgKKysrIGIvV2ViQ29y
ZS9wYWdlL1hTU0F1ZGl0b3IuaApAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVSTChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZyA9IFVURjhFbmNvZGluZygp
LCBib29sIGFsbG93TnVsbENoYXJhY3RlcnMgPSBmYWxzZSk7CisgICAgICAgIHN0YXRpYyBTdHJp
bmcgZGVjb2RlSFRNTEVudGl0aWVzKGNvbnN0IFN0cmluZyYgc3RyKTsKIAogICAgICAgICBib29s
IGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJikgY29uc3Q7
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32602</attachid>
            <date>2009-07-10 19:14:17 -0700</date>
            <delta_ts>2009-07-10 23:42:07 -0700</delta_ts>
            <desc>Working patch with tests</desc>
            <filename>Bug26921_2.patch</filename>
            <type>text/plain</type>
            <size>22857</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTc0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDctMTAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MjEKKyAg
ICAgICAgCisgICAgICAgIEltcGxlbWVudHMgc3VwcG9ydCBmb3IgSFRNTCBlbnRpdGllcywgc28g
WFNTQXVkaXRvciBjYW4gcHJvdGVjdCBhZ2FpbnN0IGF0dGFja3MKKyAgICAgICAgZW5jb2RlZCB3
aXRoIEhUTUwgZW50aXRpZXMuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50
aXRpZXMtY29udHJvbC1jaGFyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1uYW1lZC5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1s
aW5rLUhUTUwtZW50aXRpZXMtbnVsbC1jaGFyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbGluay1vbmNs
aWNrLWVudGl0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLWVudGl0aWVzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLWVudGl0aWVzLmh0
bWwKKworICAgICAgICAqIHBhZ2UvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
U1NBdWRpdG9yOjpjYW5FdmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpj
YW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6
ZGVjb2RlVVJMKTogTW9kaWZpZWQgdG8gY2FsbCBXZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVI
VE1MRW50aXRpZXMKKyAgICAgICAgdG8gZGVjb2RlIEhUTUwgZW50aXRpZXMuCisgICAgICAgIChX
ZWJDb3JlOjpYU1NBdWRpdG9yOjpkZWNvZGVIVE1MRW50aXRpZXMpOiBBZGRlZCBtZXRob2QgdG8g
ZGVjb2RlIEhUTUwgZW50aXRpZXMuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaW5k
SW5SZXF1ZXN0KToKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuaDoKKwogMjAwOS0wNy0xMCAg
RGFuaWVsIEJhdGVzICA8ZGJhdGVzQGludHVkYXRhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gNDU3NDIpCisrKyBX
ZWJDb3JlL3BhZ2UvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2lu
Y2x1ZGUgIkNTdHJpbmcuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJQcmVs
b2FkU2Nhbm5lci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VCYXNlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC02OSw3ICs3
MSw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6Y2FuRXZhbHVhdGUoY29uc3QgU3RyaW4KICAgICBpZiAo
IWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChmaW5kSW5SZXF1
ZXN0KHNvdXJjZUNvZGUsIGZhbHNlKSkgeworICAgIGlmIChmaW5kSW5SZXF1ZXN0KHNvdXJjZUNv
ZGUsIGZhbHNlLCB0cnVlLCBmYWxzZSkpIHsKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQg
c2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSk7
CiAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODIsNyArODQsNyBAQCBib29sIFhTU0F1
ZGl0b3I6OmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSCiAgICAgaWYgKCFpc0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZmluZEluUmVxdWVzdChjb2RlLCBmYWxzZSwg
ZmFsc2UpKSB7CisgICAgaWYgKGZpbmRJblJlcXVlc3QoY29kZSwgZmFsc2UsIGZhbHNlLCB0cnVl
LCB0cnVlKSkgewogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1l
c3NhZ2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBj
b2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIpKTsKICAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVy
cm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNDQsNyArMTQ2LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpjYW5TZXRC
YXNlRWxlbWVudFVSTChjbwogfQogCiBTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlVVJMKGNvbnN0
IFN0cmluZyYgc3RyLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBib29sIGFsbG93TnVs
bENoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxsb3dOb25O
dWxsQ29udHJvbENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
YWxsb3dOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsIGJvb2wgZGVjb2RlSFRNTGVudGl0aWVzLCBi
b29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpCiB7CiAgICAgU3RyaW5n
IHJlc3VsdDsKICAgICBTdHJpbmcgdXJsID0gc3RyOwpAQCAtMTU0LDYgKzE1Niw4IEBAIFN0cmlu
ZyBYU1NBdWRpdG9yOjpkZWNvZGVVUkwoY29uc3QgU3RyaW4KICAgICBTdHJpbmcgZGVjb2RlZFJl
c3VsdCA9IGVuY29kaW5nLmRlY29kZShyZXN1bHQudXRmOCgpLmRhdGEoKSwgcmVzdWx0Lmxlbmd0
aCgpKTsKICAgICBpZiAoIWRlY29kZWRSZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHQg
PSBkZWNvZGVkUmVzdWx0OworICAgIGlmIChkZWNvZGVIVE1MZW50aXRpZXMpCisgICAgICAgIHJl
c3VsdCA9IGRlY29kZUhUTUxFbnRpdGllcyhyZXN1bHQsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50
aXRpZXNVbnRvdWNoZWQpOwogICAgIGlmICghYWxsb3dOdWxsQ2hhcmFjdGVycykKICAgICAgICAg
cmVzdWx0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3RyaXBwaW5nTnVsbENoYXJhY3RlcnMocmVzdWx0
LmNoYXJhY3RlcnMoKSwgcmVzdWx0Lmxlbmd0aCgpKTsKICAgICBpZiAoIWFsbG93Tm9uTnVsbENv
bnRyb2xDaGFyYWN0ZXJzKSB7CkBAIC0xNjQsMTggKzE2OCw1OSBAQCBTdHJpbmcgWFNTQXVkaXRv
cjo6ZGVjb2RlVVJMKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBY
U1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIG1hdGNo
TnVsbENoYXJhY3RlcnMsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMpIGNvbnN0
CitTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlSFRNTEVudGl0aWVzKGNvbnN0IFN0cmluZyYgc3Ry
LCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpCit7CisgICAgU2Vn
bWVudGVkU3RyaW5nIHNvdXJjZShzdHIpOworICAgIFNlZ21lbnRlZFN0cmluZyBzb3VyY2VTaGFk
b3c7CisgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7CisgICAgCisgICAgd2hpbGUgKCFzb3VyY2Uu
aXNFbXB0eSgpKSB7CisgICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKKyAgICAgICAgc291cmNl
LmFkdmFuY2UoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYyAhPSAnJicpIHsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoY2MpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmIChsZWF2ZVVuZGVjb2RhYmxlSFRNTEVudGl0aWVzVW50b3Vj
aGVkKQorICAgICAgICAgICAgc291cmNlU2hhZG93ID0gc291cmNlOworICAgICAgICBib29sIG5v
dEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgZW50aXR5ID0gUHJl
bG9hZFNjYW5uZXI6OmNvbnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsK
KyAgICAgICAgLy8gV2UgaWdub3JlIG5vdEVub3VnaENoYXJhY3RlcnMgYmVjYXVzZSB3ZSBtaWdo
dCBhcyB3ZWxsIHVzZSB0aGlzIGxvb3AKKyAgICAgICAgLy8gdG8gY29weSB0aGUgcmVtYWluaW5n
IGNoYXJhY3RlcnMgaW50byB8cmVzdWx0fC4KKworICAgICAgICBpZiAoZW50aXR5ID4gMHhGRkZG
KSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFUxNl9MRUFEKGVudGl0eSkpOworICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChVMTZfVFJBSUwoZW50aXR5KSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQgfHwgZW50aXR5ICE9IDB4
RkZGRCl7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGVudGl0eSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcmJyk7CisgICAgICAgICAgICBpZiAobGVh
dmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCkKKyAgICAgICAgICAgICAgICBzb3Vy
Y2UgPSBzb3VyY2VTaGFkb3c7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQocmVzdWx0KTsKK30KKworYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIG1hdGNoTnVsbENoYXJhY3RlcnMsIGJvb2wgbWF0
Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRp
dGllc1VudG91Y2hlZCkgY29uc3QKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIEZy
YW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgaWYgKHBh
cmVudEZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpID09IGJsYW5rVVJMKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGZpbmRJblJlcXVlc3QocGFyZW50RnJhbWUsIHN0cmluZywgbWF0Y2hO
dWxsQ2hhcmFjdGVycywgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMpOworICAgICAgICBy
ZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KHBhcmVudEZyYW1lLCBzdHJpbmcsIG1hdGNoTnVsbENoYXJh
Y3RlcnMsIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNvZGVIVE1MZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50
aXRpZXNVbnRvdWNoZWQpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBmaW5k
SW5SZXF1ZXN0KG1fZnJhbWUsIHN0cmluZywgbWF0Y2hOdWxsQ2hhcmFjdGVycywgbWF0Y2hOb25O
dWxsQ29udHJvbENoYXJhY3RlcnMpOworICAgICAgICByZXN1bHQgPSBmaW5kSW5SZXF1ZXN0KG1f
ZnJhbWUsIHN0cmluZywgbWF0Y2hOdWxsQ2hhcmFjdGVycywgbWF0Y2hOb25OdWxsQ29udHJvbENo
YXJhY3RlcnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZUhUTUxlbnRp
dGllcywgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotYm9vbCBYU1NBdWRpdG9yOjpmaW5kSW5SZXF1ZXN0KEZyYW1lKiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgbWF0Y2hOdWxsQ2hhcmFjdGVycywgYm9vbCBt
YXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycykgY29uc3QKK2Jvb2wgWFNTQXVkaXRvcjo6Zmlu
ZEluUmVxdWVzdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIG1hdGNo
TnVsbENoYXJhY3RlcnMsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3RlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVIVE1MZW50aXRpZXMsIGJvb2wg
bGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIFN0cmluZyBwYWdlVVJMID0gZnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpOwpAQCAtMTk0LDcgKzIzOSw3IEBAIGJvb2wgWFNTQXVkaXRv
cjo6ZmluZEluUmVxdWVzdChGcmFtZSogZnIKICAgICBpZiAoc3RyaW5nLmxlbmd0aCgpIDwgcGFn
ZVVSTC5sZW5ndGgoKSkgewogICAgICAgICAvLyBUaGUgc3RyaW5nIGNhbiBhY3R1YWxseSBmaXQg
aW5zaWRlIHRoZSBwYWdlVVJMLgogICAgICAgICBTdHJpbmcgZGVjb2RlZFBhZ2VVUkwgPSBkZWNv
ZGVVUkwocGFnZVVSTCwgZnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKS0+ZW5jb2RpbmcoKSwg
bWF0Y2hOdWxsQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzLCBk
ZWNvZGVIVE1MZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQp
OwogICAgICAgICBpZiAoZGVjb2RlZFBhZ2VVUkwuZmluZChzdHJpbmcsIDAsIGZhbHNlKSAhPSAt
MSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSd2ZSBmb3VuZCB0aGUgc21va2luZyBn
dW4uCiAgICAgfQpAQCAtMjA4LDcgKzI1Myw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmluZEluUmVx
dWVzdChGcmFtZSogZnIKICAgICAgICAgICAgIC8vIGNvZGUgaXMgbGVzcyB0aGFuIG9yIGVxdWFs
IHRvIHRoZSBsZW5ndGggb2YgdGhlIHVybC1lbmNvZGVkCiAgICAgICAgICAgICAvLyBzdHJpbmcu
CiAgICAgICAgICAgICBTdHJpbmcgZGVjb2RlZEZvcm1EYXRhID0gZGVjb2RlVVJMKGZvcm1EYXRh
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCBtYXRjaE51bGxDaGFy
YWN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaE5vbk51bGxDb250cm9sQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzLCBkZWNv
ZGVIVE1MZW50aXRpZXMsIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQpOwog
ICAgICAgICAgICAgaWYgKGRlY29kZWRGb3JtRGF0YS5maW5kKHN0cmluZywgMCwgZmFsc2UpICE9
IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gV2UgZm91bmQgdGhlIHN0cmlu
ZyBpbiB0aGUgUE9TVCBkYXRhLgogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvWFNTQXVk
aXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9YU1NBdWRpdG9yLmgJKHJldmlzaW9u
IDQ1NzQyKQorKysgV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDExICsxMDAsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcgPSBVVEY4RW5jb2RpbmcoKSwgYm9vbCBhbGxvd051bGxDaGFy
YWN0ZXJzID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxs
b3dOb25OdWxsQ29udHJvbENoYXJhY3RlcnMgPSB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBhbGxvd05vbk51bGxDb250cm9sQ2hhcmFjdGVycyA9IHRydWUsIGJv
b2wgZGVjb2RlSFRNTGVudGl0aWVzID0gdHJ1ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCA9IGZhbHNl
KTsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBTdHJpbmcgZGVjb2RlSFRNTEVudGl0aWVzKGNv
bnN0IFN0cmluZyYsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxFbnRpdGllc1VudG91Y2hlZCA9
IGZhbHNlKTsKIAotICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiwgYm9v
bCBtYXRjaE51bGxDaGFyYWN0ZXJzID0gdHJ1ZSwgYm9vbCBtYXRjaE5vbk51bGxDb250cm9sQ2hh
cmFjdGVycyA9IHRydWUpIGNvbnN0OworICAgICAgICBib29sIGZpbmRJblJlcXVlc3QoY29uc3Qg
U3RyaW5nJiwgYm9vbCBtYXRjaE51bGxDaGFyYWN0ZXJzID0gdHJ1ZSwgYm9vbCBtYXRjaE5vbk51
bGxDb250cm9sQ2hhcmFjdGVycyA9IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGRlY29kZUhUTUxlbnRpdGllcyA9IHRydWUsIGJvb2wgbGVhdmVVbmRlY29kYWJsZUhUTUxF
bnRpdGllc1VudG91Y2hlZCA9IGZhbHNlKSBjb25zdDsKIAotICAgICAgICBib29sIGZpbmRJblJl
cXVlc3QoRnJhbWUqLCBjb25zdCBTdHJpbmcmLCBib29sIG1hdGNoTnVsbENoYXJhY3RlcnMgPSB0
cnVlLCBib29sIG1hdGNoTm9uTnVsbENvbnRyb2xDaGFyYWN0ZXJzID0gdHJ1ZSkgY29uc3Q7Cisg
ICAgICAgIGJvb2wgZmluZEluUmVxdWVzdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGJvb2wgbWF0
Y2hOdWxsQ2hhcmFjdGVycyA9IHRydWUsIGJvb2wgbWF0Y2hOb25OdWxsQ29udHJvbENoYXJhY3Rl
cnMgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNvZGVIVE1MZW50
aXRpZXMgPSB0cnVlLCBib29sIGxlYXZlVW5kZWNvZGFibGVIVE1MRW50aXRpZXNVbnRvdWNoZWQg
PSBmYWxzZSkgY29uc3Q7CiAKICAgICAgICAgLy8gVGhlIGZyYW1lIHRvIGF1ZGl0LgogICAgICAg
ICBGcmFtZSogbV9mcmFtZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1NzQyKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMDktMDctMTAg
IERhbmllbCBCYXRlcyAgPGRiYXRlc0BpbnR1ZGF0YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MjEKKyAgICAgICAgCisgICAgICAgIFRlc3RzIHByb3Rl
Y3Rpb24gYWdhaW5zdCBIVE1MIGVudGl0aWVzIGVuY29kZWQgYXR0YWNrcy4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGll
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50
aXRpZXMtY29udHJvbC1jaGFyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWNv
bnRyb2wtY2hhci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1s
aW5rLUhUTUwtZW50aXRpZXMtbmFtZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRp
ZXMtbmFtZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NB
dWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLW51bGwtY2hhci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZh
c2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1udWxsLWNoYXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVu
dGl0aWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9saW5rLW9uY2xpY2stZW50aXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvbGluay1vbmNsaWNrLWVudGl0aWVzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3Jp
cHQtdGFnLWVudGl0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctZW50aXRpZXMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1z
b3VyY2UtZW50aXRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1lbnRpdGllcy5odG1s
OiBBZGRlZC4KKwogMjAwOS0wNy0xMCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NTYyCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5s
aW5lLWV2ZW50LUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1l
bnRpdGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvaW5saW5lLWV2ZW50LUhUTUwtZW50aXRpZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUg
b2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9pbmxpbmUtZXZlbnQtSFRNTC1lbnRpdGllcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2lubGluZS1ldmVudC1IVE1M
LWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPSUzQ2ltZyUy
MHNyYz0xJTIwb25lcnJvcj0lMjYlMjM5NyUyNiUyMzEwOCUyNiUyMzEwMSUyNiUyMzExNCUyNiUy
MzExNiUyNiUyMzQwJTI2JTIzNDklMjYlMjM0MSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9q
YXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1jb250cm9sLWNoYXItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9q
YXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1jb250cm9sLWNoYXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWNvbnRyb2wtY2hhci1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJl
ZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3Jp
cHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWNvbnRy
b2wtY2hhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1jb250cm9sLWNoYXIu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1jb250cm9sLWNoYXIuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0
b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUg
c3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMv
ZWNoby1pbnRlcnRhZy1jbGljay1hbmQtbm90aWZ5LnBsP2VsbWlkPWFuY2hvckxpbmsmcT0lM0Nh
K2lkJTNEYW5jaG9yTGluaytocmVmJTNEJTI2JTIzeDAwMDAwMDZhJTI2JTIzeDYxJTI2JTIzeDc2
JTI2JTIzeDYxJTI2JTIzeDczJTI2JTIzeDYzJTI2JTIzeDcyJTI2JTIzeDY5JTI2JTIzeDcwJTI2
JTIzeDc0JTI2JTIzeDNhJTI2JTIzeDYxJTI2JTIzeDZjJTI2JTIzeDY1JTI2JTIzeDcyJTI2JTIz
eDc0JTI2JTIzeDI4JTI2JTIzeDMxJTI2JTIzeDA1JTI2JTIzeDI5JTNFdGVzdCUzQy9hJTNFJz4K
KzwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2ph
dmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRl
IGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4g
cmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRpZXMtbmFtZWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9q
YXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1uYW1lZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNj
cmlwdC1saW5rLUhUTUwtZW50aXRpZXMtbmFtZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LgorCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy1uYW1lZC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2Ny
aXB0LWxpbmstSFRNTC1lbnRpdGllcy1uYW1lZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2phdmFzY3JpcHQtbGluay1IVE1M
LWVudGl0aWVzLW5hbWVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2stYW5kLW5vdGlmeS5wbD9l
bG1pZD1hbmNob3JMaW5rJnE9JTNDYStpZCUzRGFuY2hvckxpbmsraHJlZiUzRCUyNiUyMzEwNiUy
NiUyMzk3JTI2JTIzMTE4JTI2JTIzOTclMjYlMjMxMTUlMjYlMjM5OSUyNiUyMzExNCUyNiUyMzEw
NSUyNiUyMzExMiUyNiUyMzExNiUyNiUyMzU4JTI2JTIzOTclMjYlMjMxMDglMjYlMjMxMDElMjYl
MjMxMTQlMjYlMjMxMTYlMjYlMjM0MCUyNiUyMzM5JTI2Y29weSUyNiUyMzM5JTI2JTIzNDElM0V0
ZXN0JTNDL2ElM0UnPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwt
ZW50aXRpZXMtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50
aXRpZXMtbnVsbC1jaGFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRp
dGllcy1udWxsLWNoYXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0
IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2Ny
aXB0LWxpbmstSFRNTC1lbnRpdGllcy1udWxsLWNoYXIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhU
TUwtZW50aXRpZXMtbnVsbC1jaGFyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvamF2YXNjcmlwdC1saW5rLUhUTUwtZW50aXRp
ZXMtbnVsbC1jaGFyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2stYW5kLW5vdGlmeS5wbD9lbG1p
ZD1hbmNob3JMaW5rJnE9JTNDYStpZCUzRGFuY2hvckxpbmsraHJlZiUzRCUyNiUyM3gwMDAwMDA2
YSUyNiUyM3g2MSUyNiUyM3g3NiUyNiUyM3g2MSUyNiUyM3g3MyUyNiUyM3g2MyUyNiUyM3g3MiUy
NiUyM3g2OSUyNiUyM3g3MCUyNiUyM3g3NCUyNiUyM3gzYSUyNiUyM3g2MSUyNiUyM3g2YyUyNiUy
M3gwMCUyNiUyM3g2NSUyNiUyM3g3MiUyNiUyM3g3NCUyNiUyM3gyOCUyNiUyM3gzMSUyNiUyM3gy
OSUzRXRlc3QlM0MvYSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmst
SFRNTC1lbnRpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9qYXZhc2NyaXB0LWxpbmstSFRNTC1lbnRpdGllcy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2phdmFzY3JpcHQtbGluay1IVE1MLWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWctY2xpY2st
YW5kLW5vdGlmeS5wbD9lbG1pZD1hbmNob3JMaW5rJnE9JTNDYStpZCUzRGFuY2hvckxpbmsraHJl
ZiUzRCUyNiUyM3gwMDAwMDA2YSUyNiUyM3g2MSUyNiUyM3g3NiUyNiUyM3g2MSUyNiUyM3g3MyUy
NiUyM3g2MyUyNiUyM3g3MiUyNiUyM3g2OSUyNiUyM3g3MCUyNiUyM3g3NCUyNiUyM3gzYSUyNiUy
M3g2MSUyNiUyM3g2YyUyNiUyM3g2NSUyNiUyM3g3MiUyNiUyM3g3NCUyNiUyM3gyOCUyNiUyM3gz
MSUyNiUyM3gyOSUzRXRlc3QlM0MvYSUzRSc+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9saW5rLW9u
Y2xpY2stZW50aXRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9saW5rLW9uY2xpY2stZW50aXRpZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2xpbmstb25jbGljay1lbnRpdGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhl
Y3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0
aGluIHJlcXVlc3QuCisKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94
c3NBdWRpdG9yL2xpbmstb25jbGljay1lbnRpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9saW5rLW9uY2xpY2stZW50aXRp
ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9saW5rLW9uY2xpY2stZW50aXRpZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxl
ZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGw/cT08YSUyMGhyZWY9J2Fib3V0OmJsYW5rJyUyMG9uY2xpY2s9J2FsZXJ0KC9YU1Mv
KS8vJTI2YW1wJTNCY29weSUzQic+Q2xpY2s8L2E+Ij4KKzwvaWZyYW1lPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctZW50aXRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWVudGl0aWVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy1lbnRpdGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLWVudGl0aWVzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1
ZGl0b3Ivc2NyaXB0LXRhZy1lbnRpdGllcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5w
bD9xPTxzY3JpcHQ+YWxlcnQoL1hTUy8pLy8lMjZhbXAlM0Jjb3B5JTNCPC9zY3JpcHQ+Ij4KKzwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtZW50aXRpZXMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9z
Y3JpcHQtdGFnLXdpdGgtc291cmNlLWVudGl0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVj
dXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRo
aW4gcmVxdWVzdC4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1lbnRpdGllcy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LXdpdGgtc291cmNlLWVudGl0aWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS1lbnRp
dGllcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPTxzY3JpcHQgc3JjPSdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMveHNzLmpzPyUy
NmFtcCUzQmNvcHklM0InPjwvc2NyaXB0PiI+Cis8L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="17016"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>