<?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>71758</bug_id>
          
          <creation_ts>2011-11-07 18:42:46 -0800</creation_ts>
          <short_desc>URLs are encoded in UTF-8, then decoded as if they are Latin1</short_desc>
          <delta_ts>2011-12-01 14:51:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73588</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497665</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-07 18:42:46 -0800</bug_when>
    <thetext>Before parsing, we encode the URL in UTF-8. When we encode invalid URL, we do it with Latin1. This makes it possible to transform an URL in an other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497671</commentid>
    <comment_count>1</comment_count>
      <attachid>113975</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-07 18:51:57 -0800</bug_when>
    <thetext>Created attachment 113975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497693</commentid>
    <comment_count>2</comment_count>
      <attachid>113975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-07 20:09:15 -0800</bug_when>
    <thetext>Comment on attachment 113975
Patch

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

&gt; Source/WebCore/platform/KURL.cpp:1123
&gt; +        m_string = originalString ? *originalString : String::fromUTF8(url);

String::fromUTF8 will return a null string if the input data contains invalid UTF-8 sequences. Is there some guarantee that “url” will not have such sequences? If so, what guarantees that? If not, then can we make tests showing our behavior in that case?

&gt; LayoutTests/ChangeLog:9
&gt; +        * fast/url/invalid_url-expected.txt: Added.
&gt; +        * fast/url/invalid_url.html: Added.

We use &quot;-&quot; characters between words in our test file names, not &quot;_&quot; characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497694</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-07 20:11:27 -0800</bug_when>
    <thetext>You are claiming that URLs are all encoded in UTF-8. What is the basis of this claim? Where is the code that encodes URLs as UTF-8?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497697</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-07 20:17:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; You are claiming that URLs are all encoded in UTF-8. What is the basis of this claim? Where is the code that encodes URLs as UTF-8?

As far as I can see, they are either all ASCII, or UTF-8. 
The encoding is done through KURL::init() in encodeRelativeString().

&gt; String::fromUTF8 will return a null string if the input data contains invalid UTF-8 sequences. Is there some guarantee that “url” will not have such sequences? If so, what guarantees that? If not, then can we make tests showing our behavior in that case?

I think that should not happen because the encoding is done with URLEncodedEntitiesForUnencodables (e.g.: CString pathDecoded = pathEncoding.encode(s.data(), pathEnd, URLEncodedEntitiesForUnencodables);).

I can add a test for this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497698</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-07 20:20:30 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; You are claiming that URLs are all encoded in UTF-8. What is the basis of this claim? Where is the code that encodes URLs as UTF-8?
&gt; 
&gt; As far as I can see, they are either all ASCII, or UTF-8. 
&gt; The encoding is done through KURL::init() in encodeRelativeString().

encodeRelativeString takes a TextEncoding argument, which can be an encoding other than UTF-8 if the webpage is using an encoding other than UTF-8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497699</commentid>
    <comment_count>6</comment_count>
      <attachid>113975</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-07 20:20:44 -0800</bug_when>
    <thetext>Comment on attachment 113975
Patch

Attachment 113975 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10331902

New failing tests:
fast/url/invalid_url.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497703</commentid>
    <comment_count>7</comment_count>
      <attachid>113975</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-07 20:33:16 -0800</bug_when>
    <thetext>Comment on attachment 113975
Patch

(In reply to comment #5)
&gt; &gt; As far as I can see, they are either all ASCII, or UTF-8. 
&gt; &gt; The encoding is done through KURL::init() in encodeRelativeString().
&gt; 
&gt; encodeRelativeString takes a TextEncoding argument, which can be an encoding other than UTF-8 if the webpage is using an encoding other than UTF-8.

Hum, yep, I did not realize that was also added to the output. So we can possibly have mixed encoding in the output.

That is getting tricky. I am tempted to change KURL::parse() to use a String instead of a char*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497708</commentid>
    <comment_count>8</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-11-07 20:54:28 -0800</bug_when>
    <thetext>IIRC from a bug a long time ago, different parts of an URL (fragment part, query part) can have different encodings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497751</commentid>
    <comment_count>9</comment_count>
      <attachid>113993</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-07 22:36:40 -0800</bug_when>
    <thetext>Created attachment 113993
Patch suggestion

Since the encoding problem appear only for the invalid URLs. What do you think about always assigning m_string to the original string if the url is invalid?
We don&apos;t try to partially resolve it, if it is invalid, the URLString is the original string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498173</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-08 09:56:13 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Since the encoding problem appear only for the invalid URLs. What do you think about always assigning m_string to the original string if the url is invalid?

Sounds like a good direction!

I am not sure it will work perfectly without studying the issue more.

As you point out, there are two different kinds of KURL:

1) One that holds a valid URL.
2) One that passes through a string that is not a valid URL.

We should try to be as clear as possible about how all the KURL functions behave when it is case (2). There have been some bugs due to code making mistakes due to (2), not checking the parts of the URL properly and then passing to some lower level framework that treats (2) as a URL. Longer term we might want to eliminate (2) and solve the problem of passing strings that are not valid URLs through the engine in some other way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498174</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-08 09:56:58 -0800</bug_when>
    <thetext>Maybe in the future we could factor the KURL class into two: One named WebCore::URL and another named WebCore::StringOrURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498196</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-08 10:12:14 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Sounds like a good direction!
&gt; 
&gt; I am not sure it will work perfectly without studying the issue more.
&gt; 
&gt; As you point out, there are two different kinds of KURL:
&gt; 
&gt; 1) One that holds a valid URL.
&gt; 2) One that passes through a string that is not a valid URL.
&gt; 
&gt; We should try to be as clear as possible about how all the KURL functions behave when it is case (2). There have been some bugs due to code making mistakes due to (2), not checking the parts of the URL properly and then passing to some lower level framework that treats (2) as a URL. Longer term we might want to eliminate (2) and solve the problem of passing strings that are not valid URLs through the engine in some other way.

I agree with you, that is how I got interested in this problem in the first place.

In KURL, we have the string and m_isValid. When we pass that to the platform layer, the isValid information is often lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498361</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 12:43:11 -0800</bug_when>
    <thetext>We&apos;ve often talked about having a ParsedURL and a URLString, but that&apos;s related but somewhat different than what you&apos;re talking about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500509</commentid>
    <comment_count>14</comment_count>
      <attachid>114624</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-10 21:38:07 -0800</bug_when>
    <thetext>Created attachment 114624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500511</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 21:40:32 -0800</bug_when>
    <thetext>Attachment 114624 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/platform/KURL.cpp:1421:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500512</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-10 21:43:52 -0800</bug_when>
    <thetext>The style issue is intended.

The Chromium bot will likely complain since it will need a new baseline for the modified tests. Is there any plan to get rid of GOOGLEURL or use by default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501241</commentid>
    <comment_count>17</comment_count>
      <attachid>114624</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 17:09:48 -0800</bug_when>
    <thetext>Comment on attachment 114624
Patch

Attachment 114624 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10460497

New failing tests:
fast/url/invalid-urls-utf8.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501632</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-13 22:43:40 -0800</bug_when>
    <thetext>&gt; Is there any plan to get rid of GOOGLEURL or use by default?

I did some work a while back to change WebKit to use GURL by default, but I didn&apos;t finish the project.  I believe that would be valuable for the project and am happy to help if someone (such as yourself) was interested in taking the lead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502414</commentid>
    <comment_count>19</comment_count>
      <attachid>114624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-14 15:57:30 -0800</bug_when>
    <thetext>Comment on attachment 114624
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        URLs are encoded in UTF-8, then decoded as if they are Latin1
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=71758
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test: fast/url/invalid-urls-utf8.html

This change log says nothing about what you changed to accomplish this and why.

&gt; Source/WebCore/platform/KURL.cpp:379
&gt; -    String* originalString = &amp;rel;
&gt; +    String originalString = rel;

Why is this better? The new code has to bump reference counts, and the old code didn’t, so the new code is slower.

&gt; Source/WebCore/platform/KURL.h:251
&gt; -    void parse(const char* url, const String* originalString);
&gt; +    void parse(const char* url, const String&amp; originalString, const String&amp; unmodifiedSourceURL);

Where is the explanation of this new argument? I think this change is mysterious!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502429</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-14 16:06:17 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 114624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114624&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        URLs are encoded in UTF-8, then decoded as if they are Latin1
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=71758
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Test: fast/url/invalid-urls-utf8.html
&gt; 
&gt; This change log says nothing about what you changed to accomplish this and why.

Yep, sorry I forgot to fill in the changelog. I will update with a Changelog.

&gt; &gt; Source/WebCore/platform/KURL.cpp:379
&gt; &gt; -    String* originalString = &amp;rel;
&gt; &gt; +    String originalString = rel;
&gt; 
&gt; Why is this better? The new code has to bump reference counts, and the old code didn’t, so the new code is slower.
&gt; 
&gt; &gt; Source/WebCore/platform/KURL.h:251
&gt; &gt; -    void parse(const char* url, const String* originalString);
&gt; &gt; +    void parse(const char* url, const String&amp; originalString, const String&amp; unmodifiedSourceURL);
&gt; 
&gt; Where is the explanation of this new argument? I think this change is mysterious!

I can use a String&amp; for originalString. The goal here was to make the code easier to follow and to have consistency between originalString and unmodifiedSourceURL.

With a pointer you can have null pointer, null string, empty string.
With the ref, only null string and empty string.
Do you agree with a const String&amp; or you think the pointer reads better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502431</commentid>
    <comment_count>21</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-14 16:07:15 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I did some work a while back to change WebKit to use GURL by default, but I didn&apos;t finish the project.  I believe that would be valuable for the project and am happy to help if someone (such as yourself) was interested in taking the lead.

I am short on time at the moment but I can give it a shot after thanksgiving. Do you have a bug number?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502448</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-14 16:35:09 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; The goal here was to make the code easier to follow and to have consistency between originalString and unmodifiedSourceURL.
&gt; 
&gt; With a pointer you can have null pointer, null string, empty string.
&gt; With the ref, only null string and empty string.
&gt; Do you agree with a const String&amp; or you think the pointer reads better?

A pointer is a way to have an optional parameter, and is a relatively common idiom in WebKit when an argument is optional. I’m not sure that using a special value for a string, such as null or empty, to mean the parameter is not being passed is quite as clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502474</commentid>
    <comment_count>23</comment_count>
      <attachid>114624</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-14 16:54:10 -0800</bug_when>
    <thetext>Comment on attachment 114624
Patch

(In reply to comment #22)
&gt; A pointer is a way to have an optional parameter, and is a relatively common idiom in WebKit when an argument is optional. I’m not sure that using a special value for a string, such as null or empty, to mean the parameter is not being passed is quite as clear.

As you wish, I don&apos;t have a strong opinion against this. I&apos;ll post an update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502988</commentid>
    <comment_count>24</comment_count>
      <attachid>114624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-15 09:48:59 -0800</bug_when>
    <thetext>Comment on attachment 114624
Patch

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

&gt;&gt; Source/WebCore/platform/KURL.h:251
&gt;&gt; +    void parse(const char* url, const String&amp; originalString, const String&amp; unmodifiedSourceURL);
&gt; 
&gt; Where is the explanation of this new argument? I think this change is mysterious!

Because the difference between “original string” and “unmodified source URL” is so subtle, I think we need to be clearer about what these are. I don’t think having the name “URL” in the new argument is good, because it’s not a URL any more than originalString is, it’s a string just like originalString.

I think the three arguments are:

1) A pointer to an eight-bit string to parse as the URL.
2) A copy of that exact same URL as a String, if the code path that led here happens to mean we have that string already in a String.
3) A copy of the original String passed in to the KURL API.

Except that (3) is not right. It is supported only for certain code paths. So we need a clearer explanation of what (3) is. Then perhaps we can rename (1), (2), and (3) to make these relationships clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507954</commentid>
    <comment_count>25</comment_count>
      <attachid>116323</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-22 23:15:42 -0800</bug_when>
    <thetext>Created attachment 116323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509379</commentid>
    <comment_count>26</comment_count>
      <attachid>116323</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-11-26 11:53:36 -0800</bug_when>
    <thetext>Comment on attachment 116323
Patch

I will land manually so I can rebaseline Chromium afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511905</commentid>
    <comment_count>27</comment_count>
      <attachid>116323</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-30 11:03:38 -0800</bug_when>
    <thetext>Comment on attachment 116323
Patch

Patch looks fine. But the Early Warning System failed on it, and you should figure out why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512917</commentid>
    <comment_count>28</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-01 11:11:40 -0800</bug_when>
    <thetext>Committed r101691: &lt;http://trac.webkit.org/changeset/101691&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513152</commentid>
    <comment_count>29</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-12-01 14:51:28 -0800</bug_when>
    <thetext>Committed r101713: &lt;http://trac.webkit.org/changeset/101713&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113975</attachid>
            <date>2011-11-07 18:51:57 -0800</date>
            <delta_ts>2011-11-07 22:36:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71758-20111107185156.patch</filename>
            <type>text/plain</type>
            <size>7079</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk0NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYzA1MmVjNmJhOTA2MTA0
YTYzYjYyYWI4MmMyMzg0MGIxYzU2NWYxLi5mZDE3ZDY1NzY5ZGY3OGVkYWIzMGVkZjM4ZGViNWRm
MWQ4NGQ3Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTEtMDcgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTHMgYXJlIHBh
cnNlZCBpbiBVVEYtOCwgdGhlbiBwYXJzZWQgaW4gTGF0aW4xCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjaGFyKiBwYXNzZWQgdG8gS1VSTDo6cGFy
c2UoKSBpcyBlbmNvZGVkIGluIFVURi04LCBvciBpcyBjb21wb3NlZAorICAgICAgICBvbmx5IG9m
IEFTQ0lJIGNoYXJhY3RlcnMuCisKKyAgICAgICAgV2hlbiBtX3N0cmluZyBpcyBpbml0aWFsaXpl
ZCBmcm9tIHRoZSBjaGFyKiwgdGhlIGRlZmF1bHQgY29uc3RydWN0b3IKKyAgICAgICAgaXMgdXNl
ZCwgd2hpY2ggaW5pdGlhbGl6ZSB0aGUgc3RyaW5nIGFzc3VtaW5nIGl0IGlzIExhdGluMS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHVzZSBVVEY4IGZvciB0aGUgZW5jb2RpbmcgaW4gb3JkZXIgdG8g
aGF2ZSB0aGUgY29ycmVjdCBzdHJpbmcKKyAgICAgICAgZW5jb2RlZCBpbiB0aGUgVVJMLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvdXJsL2ludmFsaWRfdXJsLmh0bWwKKworICAgICAgICAqIHBsYXRm
b3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorCiAyMDExLTEx
LTA3ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBEb24ndCB1
c2UgQ1NTT00ncyBDU1NWYWx1ZS5jc3NWYWx1ZVR5cGUgaW50ZXJuYWxseSBpbiBXZWJDb3JlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAppbmRleCAwNTlmYjJiMTU4N2FlZjBiMjYxMWJhMGZjY2Jj
NzY2NWUyMWNhMTE4Li40NGY0YzMzMTRlNzg0Y2I4Y2E4MDQ1MzNlODJhMDA2OTY1OGZlYTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtMTEyMCwxNCArMTEyMCwxNCBAQCB2b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykK
IHsKICAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewogICAgICAgICAvLyB2YWxpZCBV
UkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/
ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmlu
ZyA/ICpvcmlnaW5hbFN0cmluZyA6IFN0cmluZzo6ZnJvbVVURjgodXJsKTsKICAgICAgICAgaW52
YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1NjaGVtZUZp
cnN0Q2hhcih1cmxbMF0pKSB7CiAgICAgICAgIC8vIHNjaGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4g
YWxwaGFiZXRpYyBjaGFyYWN0ZXIKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/
ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmlu
ZyA/ICpvcmlnaW5hbFN0cmluZyA6IFN0cmluZzo6ZnJvbVVURjgodXJsKTsKICAgICAgICAgaW52
YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEzNyw3ICsxMTM3LDcgQEAg
dm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxT
dHJpbmcpCiAgICAgICAgIHNjaGVtZUVuZCsrOwogCiAgICAgaWYgKHVybFtzY2hlbWVFbmRdICE9
ICc6JykgewotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3Ry
aW5nIDogdXJsOworICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFs
U3RyaW5nIDogU3RyaW5nOjpmcm9tVVRGOCh1cmwpOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIEtVUkw6OnBh
cnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykKICAgICAg
ICAgICAgIGhvc3RTdGFydCA9IHVzZXJTdGFydDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0gICAgICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFs
U3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAgICAgbV9zdHJpbmcgPSBv
cmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IFN0cmluZzo6ZnJvbVVURjgodXJsKTsK
ICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmws
IGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgICAgICAgICAgaG9zdEVuZCsr
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0
ZXIKLSAgICAgICAgICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFs
U3RyaW5nIDogdXJsOworICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiBTdHJpbmc6OmZyb21VVEY4KHVybCk7CiAgICAgICAgICAgICAg
ICAgaW52YWxpZGF0ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
QEAgLTEyNDAsNyArMTI0MCw3IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBj
b25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogCiAgICAgICAgIGlmICghaXNQYXRoU2VnbWVu
dEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewogICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0
ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJp
bmcgOiB1cmw7CisgICAgICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdp
bmFsU3RyaW5nIDogU3RyaW5nOjpmcm9tVVRGOCh1cmwpOwogICAgICAgICAgICAgaW52YWxpZGF0
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDIxLDcgKzE0MjEsNyBA
QCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5h
bFN0cmluZykKICAgICBpZiAob3JpZ2luYWxTdHJpbmcgJiYgb3JpZ2luYWxTdHJpbmctPmxlbmd0
aCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZyYWdtZW50RW5kKSAmJiBzdHJuY21wKGJ1
ZmZlci5kYXRhKCksIHVybCwgbV9mcmFnbWVudEVuZCkgPT0gMCkKICAgICAgICAgbV9zdHJpbmcg
PSAqb3JpZ2luYWxTdHJpbmc7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZyA9IFN0cmluZyhi
dWZmZXIuZGF0YSgpLCBtX2ZyYWdtZW50RW5kKTsKKyAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpOwogCiAgICAgbV9pc1ZhbGlk
ID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YWNmOTRjNGU5YjYyYjJhZTA4ZTA2ODhkZmNmZGVlYzk5MTgz
MmIwLi4wNWRlZDRmZjBkYzgyYWI3N2FkZWFhNGY5NWZjZDM5ODgxN2FmMWJkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTEtMTEtMDcgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVSTHMgYXJlIHBhcnNlZCBpbiBVVEYtOCwgdGhlbiBwYXJzZWQg
aW4gTGF0aW4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC91cmwvaW52YWxpZF91cmwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3VybC9pbnZhbGlkX3VybC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3VybC9wb3J0
LWV4cGVjdGVkLnR4dDogVGVzdCBwcm9ncmVzc2lvbiBiYXNlZCBvbiB0aGUgcGF0Y2guCisKIDIw
MTEtMTEtMDcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hy
b21pdW1dIE1hcmsgcGVyZi9kb2N1bW5ldC1jb250aWFucy5odG1sIGFzIHNsb3cuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9pbnZhbGlkX3VybC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3VybC9pbnZhbGlkX3VybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM4
NjM5MDlmM2ZkN2FkZjUxZGJmY2U5ZTlkNjAxMzU4YWZjYjM4OQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWRfdXJsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKK1BBU1MgdGFyZ2V0SHJlZiBpcyAnaHR0cDovdMOqdGUgw6AgdMOqdGUvJworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWRfdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3VybC9pbnZhbGlkX3VybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTA1YWM1NDkwMWE1M2ZhNjIxOTk2
NjFhNzViM2VjYzJiN2U5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Vy
bC9pbnZhbGlkX3VybC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8bWV0
YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzx0aXRsZT5UZXN0IHRoZSBsb2FkIGNhbGxiYWNrIGZvciBVVEYtOCBjaGFyYWN0ZXJz
LjwvdGl0bGU+Cis8Ym9keT4KKworPCEtLSBJbnZhbGlkIFVSTCB3aXRob3V0IGhvc3QgZW5jb2Rl
ZCAtLT4KKzxhIGlkPSJ0YXJnZXQiIGhyZWY9Imh0dHA6L3TDqnRlIMOgIHTDqnRlLyI+PC9hPgor
Cis8c2NyaXB0PgordGFyZ2V0SHJlZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQi
KS5ocmVmCitzaG91bGRCZSgndGFyZ2V0SHJlZicsICInaHR0cDovdMOqdGUgw6AgdMOqdGUvJyIp
Oworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC91cmwvcG9ydC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3VybC9wb3J0LWV4cGVjdGVkLnR4dAppbmRleCA5YTE2ZWUzYzM1MjJj
N2NlOTc0YWExYjljOWE0MjJkZGZmM2U2Y2U2Li5kMDhkZDhmNzdiNTkwNzAwNzU2MDZiZjAzNDMy
ZGJmZGM4Y2JhNWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9wb3J0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3VybC9wb3J0LWV4cGVjdGVkLnR4dApAQCAt
OCw4ICs4LDggQEAgUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb206LTIv
JykgaXMgJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb206LTIvJwogUEFTUyBjYW5vbmljYWxpemUoJ2h0
dHA6Ly93d3cuZXhhbXBsZS5jb206ODAvJykgaXMgJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vJwog
UEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb206ODA4MC8nKSBpcyAnaHR0
cDovL3d3dy5leGFtcGxlLmNvbTo4MDgwLycKIFBBU1MgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3
LmV4YW1wbGUuY29tOi8nKSBpcyAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8nCi1GQUlMIGNhbm9u
aWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTrhjakvJykgc2hvdWxkIGJlIGh0dHA6Ly93
d3cuZXhhbXBsZS5jb206JUUxJThEJUE5Ly4gV2FzIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206w6HC
jcKpLy4KLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tOvCdn5YvJykg
c2hvdWxkIGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206JUYwJTlEJTlGJTk2Ly4gV2FzIGh0dHA6
Ly93d3cuZXhhbXBsZS5jb206w7DCncKfwpYvLgorRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly93
d3cuZXhhbXBsZS5jb2064Y2pLycpIHNob3VsZCBiZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tOiVF
MSU4RCVBOS8uIFdhcyBodHRwOi8vd3d3LmV4YW1wbGUuY29tOuGNqS8uCitGQUlMIGNhbm9uaWNh
bGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTrwnZ+WLycpIHNob3VsZCBiZSBodHRwOi8vd3d3
LmV4YW1wbGUuY29tOiVGMCU5RCU5RiU5Ni8uIFdhcyBodHRwOi8vd3d3LmV4YW1wbGUuY29tOvCd
n5YvLgogUEFTUyBjYW5vbmljYWxpemUoJ2Zvb2JhcjovL3d3dy5leGFtcGxlLmNvbTo4MC8nKSBp
cyAnZm9vYmFyOi8vd3d3LmV4YW1wbGUuY29tOjgwLycKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAo=
</data>
<flag name="commit-queue"
          id="112499"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>113993</attachid>
            <date>2011-11-07 22:36:40 -0800</date>
            <delta_ts>2011-11-07 22:36:40 -0800</delta_ts>
            <desc>Patch suggestion</desc>
            <filename>invalid_url_patch</filename>
            <type>text/plain</type>
            <size>8739</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggMDU5ZmIyYi4uOWE2YmM4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBVU0UoSUNVX1VOSUNPREUp
CkBAIC0zMjIsNyArMzIzLDcgQEAgdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKIAogS1VSTDo6S1VS
TChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBwYXJzZSh1cmws
IDApOworICAgIHBhcnNlKHVybCwgMCwgU3RyaW5nKCkpOwogICAgIEFTU0VSVCh1cmwgPT0gbV9z
dHJpbmcpOwogfQogCkBAIC00MzIsMTQgKzQzMywxNCBAQCB2b2lkIEtVUkw6OmluaXQoY29uc3Qg
S1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bgogICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7CiAKICAgICBpZiAoYWJzb2x1dGUpIHsKLSAg
ICAgICAgcGFyc2Uoc3RyLCBvcmlnaW5hbFN0cmluZyk7CisgICAgICAgIHBhcnNlKHN0ciwgb3Jp
Z2luYWxTdHJpbmcsIHJlbGF0aXZlKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGUg
YmFzZSBpcyBlbXB0eSBvciBvcGFxdWUgKGUuZy4gZGF0YTogb3IgamF2YXNjcmlwdDopLCB0aGVu
IHRoZSBVUkwgaXMgaW52YWxpZAogICAgICAgICAvLyB1bmxlc3MgdGhlIHJlbGF0aXZlIFVSTCBp
cyBhIHNpbmdsZSBmcmFnbWVudC4KICAgICAgICAgaWYgKCFiYXNlLmlzSGllcmFyY2hpY2FsKCkp
IHsKICAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgYXBw
ZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBw
YXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAw
KTsKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDAsIHJlbGF0aXZl
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV9zdHJpbmcgPSByZWxh
dGl2ZTsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CkBAIC00NTYsMTMgKzQ1NywxMyBA
QCB2b2lkIEtVUkw6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbgogICAgICAgICBjYXNlICcjJzogewogICAgICAgICAg
ICAgLy8gbXVzdCBiZSBmcmFnbWVudC1vbmx5IHJlZmVyZW5jZQogICAgICAgICAgICAgYXBwZW5k
QVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJz
ZUJ1ZmZlcik7Ci0gICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDApOworICAg
ICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAwLCByZWxhdGl2ZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlICc/JzogewogICAgICAgICAgICAg
Ly8gcXVlcnktb25seSByZWZlcmVuY2UsIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIG5vbi1VUkwg
cmVzdWx0cwogICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2Uu
bV9wYXRoRW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgIHBhcnNlKHBh
cnNlQnVmZmVyLmRhdGEoKSwgMCk7CisgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRh
KCksIDAsIHJlbGF0aXZlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgJy8nOgpAQCAtNDcwLDExICs0NzEsMTEgQEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtV
UkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4K
ICAgICAgICAgICAgIGlmIChzdHJbMV0gPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgLy8gbmV0
LXBhdGgKICAgICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFz
ZS5tX3NjaGVtZUVuZCArIDEpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgMCk7CisgICAgICAgICAgICAgICAgcGFyc2Uo
cGFyc2VCdWZmZXIuZGF0YSgpLCAwLCByZWxhdGl2ZSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIGFicy1wYXRoCiAgICAgICAgICAgICAgICAgYXBwZW5kQVNDSUko
YmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9wb3J0RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDApOworICAgICAg
ICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgMCwgcmVsYXRpdmUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC01NDksNyAr
NTUwLDcgQEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4KICAgICAgICAgICAgICAgICAvLyBvZiB0
aGUgcmVsYXRpdmUgcmVmZXJlbmNlOyB0aGlzIHdpbGwgYWxzbyBhZGQgYSBudWxsIHRlcm1pbmF0
b3IKICAgICAgICAgICAgICAgICBzdHJjcHkoYnVmZmVyUG9zLCByZWxTdHJpbmdQb3MpOwogCi0g
ICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAwKTsKKyAgICAgICAgICAg
ICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDAsIHJlbGF0aXZlKTsKIAogICAgICAgICAg
ICAgICAgIEFTU0VSVChzdHJsZW4ocGFyc2VCdWZmZXIuZGF0YSgpKSArIDEgPD0gcGFyc2VCdWZm
ZXIuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNTksNyArMTA2MCw3IEBA
IHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgQ2hhckJ1ZmZlciBi
dWZmZXIoc3RyaW5nLmxlbmd0aCgpICsgMSk7CiAgICAgY29weUFTQ0lJKHN0cmluZy5jaGFyYWN0
ZXJzKCksIHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgYnVmZmVyW3N0cmlu
Zy5sZW5ndGgoKV0gPSAnXDAnOwotICAgIHBhcnNlKGJ1ZmZlci5kYXRhKCksICZzdHJpbmcpOwor
ICAgIHBhcnNlKGJ1ZmZlci5kYXRhKCksICZzdHJpbmcsIHN0cmluZyk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBzaXplX3QgbGVuQSwgY29uc3QgY2hhciog
Yiwgc2l6ZV90IGxlbkIpCkBAIC0xMTE2LDE4ICsxMTE3LDE4IEBAIHN0YXRpYyBib29sIGlzTm9u
RmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBzY2hlbWUsIHNpemVfdCBzY2hlbWVM
ZW5ndGgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNo
YXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykKK3ZvaWQgS1VSTDo6cGFyc2Uo
Y29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHVubW9kaWZpZWRTb3VyY2VVUkwpCiB7CiAgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09ICdc
MCcpIHsKICAgICAgICAgLy8gdmFsaWQgVVJMIG11c3QgYmUgbm9uLWVtcHR5Ci0gICAgICAgIG1f
c3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAg
IG1fc3RyaW5nID0gIXVubW9kaWZpZWRTb3VyY2VVUkwuaXNOdWxsKCkgPyB1bm1vZGlmaWVkU291
cmNlVVJMIDogdXJsOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkpIHsKICAgICAgICAgLy8g
c2NoZW1lIG11c3Qgc3RhcnQgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlcgotICAgICAgICBt
X3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAg
ICBtX3N0cmluZyA9ICF1bm1vZGlmaWVkU291cmNlVVJMLmlzTnVsbCgpID8gdW5tb2RpZmllZFNv
dXJjZVVSTCA6IHVybDsKICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTEzNyw3ICsxMTM4LDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgIHNjaGVtZUVuZCsrOwog
CiAgICAgaWYgKHVybFtzY2hlbWVFbmRdICE9ICc6JykgewotICAgICAgICBtX3N0cmluZyA9IG9y
aWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICBtX3N0cmluZyA9
ICF1bm1vZGlmaWVkU291cmNlVVJMLmlzTnVsbCgpID8gdW5tb2RpZmllZFNvdXJjZVVSTCA6IHVy
bDsKICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTIw
Myw3ICsxMjA0LDcgQEAgdm9pZCBLVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0
cmluZyogb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgICAgICBob3N0U3RhcnQgPSB1c2VyU3RhcnQ7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgotICAg
ICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVy
bDsKKyAgICAgICAgICAgIG1fc3RyaW5nID0gIXVubW9kaWZpZWRTb3VyY2VVUkwuaXNOdWxsKCkg
PyB1bm1vZGlmaWVkU291cmNlVVJMIDogdXJsOwogICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMjE5LDcgKzEyMjAsNyBAQCB2b2lk
IEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmlu
ZykKICAgICAgICAgICAgICAgICBob3N0RW5kKys7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgIG1fc3RyaW5n
ID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgICAgICAg
ICAgbV9zdHJpbmcgPSAhdW5tb2RpZmllZFNvdXJjZVVSTC5pc051bGwoKSA/IHVubW9kaWZpZWRT
b3VyY2VVUkwgOiB1cmw7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTEyNDAsNyArMTI0MSw3IEBAIHZvaWQg
S1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5n
KQogCiAgICAgICAgIGlmICghaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewog
ICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0g
b3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgICAgICBtX3N0
cmluZyA9ICF1bm1vZGlmaWVkU291cmNlVVJMLmlzTnVsbCgpID8gdW5tb2RpZmllZFNvdXJjZVVS
TCA6IHVybDsKICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCmluZGV4IGY2MjExODAuLmU2ZDA4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmgKQEAgLTIzNiw2ICsyMzYsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOwogI2lmIFVT
RShHT09HTEVVUkwpCiAgICAgZnJpZW5kIGNsYXNzIEtVUkxHb29nbGVQcml2YXRlOworICAgIHZv
aWQgcGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nLCBj
b25zdCBTdHJpbmcmKSB7IHBhcnNlKHVybCwgb3JpZ2luYWxTdHJpbmcpOyB9CiAgICAgdm9pZCBw
YXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpOyAgLy8g
S1VSTE1hYyBjYWxscyB0aGlzLgogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1
MTI+JiBidWZmZXIpIGNvbnN0OyAgLy8gS1VSTENGTmV0IHVzZXMgdGhpcy4KICAgICBLVVJMR29v
Z2xlUHJpdmF0ZSBtX3VybDsKQEAgLTI0Nyw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIC8vIG9w
dGltaXphdGlvbjogV2hlbiB0aGUgc291cmNlIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXhlZC11cCBz
dHJpbmcsCiAgICAgLy8gaXQgd2lsbCB1c2UgdGhlIHBhc3NlZC1pbiBzdHJpbmcgaW5zdGVhZCBv
ZiBhbGxvY2F0aW5nIGEgbmV3IG9uZS4KICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgcGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3Ry
aW5nKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmln
aW5hbFN0cmluZywgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkU291cmNlVVJMKTsKIAogICAgIFN0
cmluZyBtX3N0cmluZzsKICAgICBib29sIG1faXNWYWxpZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS1VSTENGTmV0LmNwcAppbmRleCA4YmY1MGUwLi4wMjc3M2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ0ZVUkxS
ZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImKTsKIEtVUkw6OktVUkwo
Q0ZVUkxSZWYgdXJsKQogewogICAgIGlmICghdXJsKSB7Ci0gICAgICAgIHBhcnNlKDAsIDApOwor
ICAgICAgICBwYXJzZSgwLCAwLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTUwLDcgKzUwLDcgQEAgS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiAgICAgQ0ZVUkxHZXRC
eXRlcyh1cmwsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRlcyksIGJ5dGVzTGVuZ3RoKTsK
ICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOwogICAgIGlmIChieXRlc1swXSAhPSAnLycp
IHsKLSAgICAgICAgcGFyc2UoYnl0ZXMsIDApOworICAgICAgICBwYXJzZShieXRlcywgMCwgU3Ry
aW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MCw3ICs2MCw3IEBAIEtVUkw6
OktVUkwoQ0ZVUkxSZWYgdXJsKQogICAgIGJ1ZmZlclszXSA9ICdlJzsKICAgICBidWZmZXJbNF0g
PSAnOic7CiAKLSAgICBwYXJzZShidWZmZXIuZGF0YSgpLCAwKTsKKyAgICBwYXJzZShidWZmZXIu
ZGF0YSgpLCAwLCBTdHJpbmcoKSk7CiB9CiAKIENGVVJMUmVmIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZl
cihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJM
TWFjLm1tCmluZGV4IDFhMTE0YmYuLmY1NjVmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9LVVJMTWFjLm1tCkBAIC0zNyw3ICszNyw3IEBAIGV4dGVybiBDRlVSTFJlZiBjcmVhdGVDRlVS
TEZyb21CdWZmZXIoY29uc3QgQ2hhckJ1ZmZlciYgYnVmZmVyKTsKIEtVUkw6OktVUkwoTlNVUkwg
KnVybCkKIHsKICAgICBpZiAoIXVybCkgewotICAgICAgICBwYXJzZSgwLCAwKTsKKyAgICAgICAg
cGFyc2UoMCwgMCwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00Nyw3
ICs0Nyw3IEBAIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKICAgICBDRlVSTEdldEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihieXRl
cyksIGJ5dGVzTGVuZ3RoKTsKICAgICBieXRlc1tieXRlc0xlbmd0aF0gPSAnXDAnOwogICAgIGlm
IChieXRlc1swXSAhPSAnLycpIHsKLSAgICAgICAgcGFyc2UoYnl0ZXMsIDApOworICAgICAgICBw
YXJzZShieXRlcywgMCwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
Nyw3ICs1Nyw3IEBAIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKICAgICBidWZmZXJbM10gPSAnZSc7
CiAgICAgYnVmZmVyWzRdID0gJzonOwogCi0gICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgMCk7Cisg
ICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgMCwgU3RyaW5nKCkpOwogfQogCiBLVVJMOjpvcGVyYXRv
ciBOU1VSTCAqKCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114624</attachid>
            <date>2011-11-10 21:38:07 -0800</date>
            <delta_ts>2011-11-22 23:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71758-20111110213806.patch</filename>
            <type>text/plain</type>
            <size>23581</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNjRmOWYyNjhhZTBkOTVm
NDU4ZDk1YjViMTQwMjE3ZWM0MmU4NDViLi5hMTEzNzg1ZmUyNzg2NzM4NGZhOTQyZmIwNDZmYTg2
M2RlNTJlNTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMTEtMTAgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVVJMcyBhcmUgZW5j
b2RlZCBpbiBVVEYtOCwgdGhlbiBkZWNvZGVkIGFzIGlmIHRoZXkgYXJlIExhdGluMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3VybC9p
bnZhbGlkLXVybHMtdXRmOC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktVUkw6OktVUkwpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0v
S1VSTC5oOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2NmL0tVUkxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6
OktVUkwpOgorCiAyMDExLTExLTEwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBEbyBub3Qgc2hhcmUgQ1NTIHN0eWxlIGZvciBNZWRpYUVsZW1lbnQg
YmFja2VkIGJ5IGEgcGx1Z2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmluZGV4IDA1OWZiMmIx
NTg3YWVmMGIyNjExYmEwZmNjYmM3NjY1ZTIxY2ExMTguLjdiNTI2ZGQzOTM0Y2U3MjNlZDg2MjVk
ZTI2ODRmMzFhODgxYzBjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCkBAIC0zMjIsNyAr
MzIyLDcgQEAgdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKIAogS1VSTDo6S1VSTChQYXJzZWRVUkxT
dHJpbmdUYWcsIGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBwYXJzZSh1cmwsIDApOworICAgIHBh
cnNlKHVybCwgU3RyaW5nKCksIFN0cmluZygpKTsKICAgICBBU1NFUlQodXJsID09IG1fc3RyaW5n
KTsKIH0KIApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuCiAgICAg
aWYgKHJlbC5jb250YWlucygnXFwnKSAmJiAhKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkgfHwg
cHJvdG9jb2xJcyhyZWwsICJkYXRhIikpKQogICAgICAgICByZWwgPSBzdWJzdGl0dXRlQmFja3Ns
YXNoZXMocmVsKTsKIAotICAgIFN0cmluZyogb3JpZ2luYWxTdHJpbmcgPSAmcmVsOworICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IHJlbDsKIAogICAgIGJvb2wgYWxsQVNDSUkgPSBjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkocmVsLmNoYXJhY3RlcnMoKSwgcmVsLmxlbmd0aCgpKTsKICAgICBDaGFy
QnVmZmVyIHN0ckJ1ZmZlcjsKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIEtVUkw6OmluaXQoY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5n
JiBlbgogICAgICAgICBzdHJCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAgIHN0ciA9IHN0ckJ1ZmZl
ci5kYXRhKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgb3JpZ2luYWxTdHJpbmcgPSAwOworICAg
ICAgICBvcmlnaW5hbFN0cmluZyA9IFN0cmluZygpOwogICAgICAgICBlbmNvZGVSZWxhdGl2ZVN0
cmluZyhyZWwsIGVuY29kaW5nLCBzdHJCdWZmZXIpOwogICAgICAgICBzdHIgPSBzdHJCdWZmZXIu
ZGF0YSgpOwogICAgICAgICBsZW4gPSBzdHJsZW4oc3RyKTsKQEAgLTM5NywxNCArMzk3LDE0IEBA
IHZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZl
LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuCiAKICAgICAvLyBHZXQgcmlkIG9mIGxlYWRpbmcgd2hp
dGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAgIHdoaWxlIChsZW4gJiYgc2hvdWxk
VHJpbUZyb21VUkwoKnN0cikpIHsKLSAgICAgICAgb3JpZ2luYWxTdHJpbmcgPSAwOworICAgICAg
ICBvcmlnaW5hbFN0cmluZyA9IFN0cmluZygpOwogICAgICAgICBzdHIrKzsKICAgICAgICAgLS1s
ZW47CiAgICAgfQogCiAgICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBj
b250cm9sIGNoYXJhY3RlcnMuCiAgICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTChz
dHJbbGVuIC0gMV0pKSB7Ci0gICAgICAgIG9yaWdpbmFsU3RyaW5nID0gMDsKKyAgICAgICAgb3Jp
Z2luYWxTdHJpbmcgPSBTdHJpbmcoKTsKICAgICAgICAgc3RyWy0tbGVuXSA9ICdcMCc7CiAgICAg
fQogCkBAIC00MjMsNyArNDIzLDcgQEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4KICAgICAgICAg
aWYgKCpwID09ICc6JykgewogICAgICAgICAgICAgaWYgKHBbMV0gIT0gJy8nICYmIGVxdWFsSWdu
b3JpbmdDYXNlKGJhc2UucHJvdG9jb2woKSwgU3RyaW5nKHN0ciwgcCAtIHN0cikpICYmIGJhc2Uu
aXNIaWVyYXJjaGljYWwoKSkgewogICAgICAgICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAgICAg
ICAgICAgICAgIG9yaWdpbmFsU3RyaW5nID0gMDsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFN0
cmluZyA9IFN0cmluZygpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgYWJz
b2x1dGUgPSB0cnVlOwogICAgICAgICB9CkBAIC00MzIsMTQgKzQzMiwxNCBAQCB2b2lkIEtVUkw6
OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbgogICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7CiAKICAgICBpZiAoYWJz
b2x1dGUpIHsKLSAgICAgICAgcGFyc2Uoc3RyLCBvcmlnaW5hbFN0cmluZyk7CisgICAgICAgIHBh
cnNlKHN0ciwgb3JpZ2luYWxTdHJpbmcsIHJlbGF0aXZlKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBJZiB0aGUgYmFzZSBpcyBlbXB0eSBvciBvcGFxdWUgKGUuZy4gZGF0YTogb3IgamF2YXNj
cmlwdDopLCB0aGVuIHRoZSBVUkwgaXMgaW52YWxpZAogICAgICAgICAvLyB1bmxlc3MgdGhlIHJl
bGF0aXZlIFVSTCBpcyBhIHNpbmdsZSBmcmFnbWVudC4KICAgICAgICAgaWYgKCFiYXNlLmlzSGll
cmFyY2hpY2FsKCkpIHsKICAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJyMnKSB7CiAgICAgICAg
ICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCks
IHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZm
ZXIuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCks
IFN0cmluZygpLCByZWxhdGl2ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwpA
QCAtNDU2LDEzICs0NTYsMTMgQEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNv
bnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4KICAgICAgICAgY2Fz
ZSAnIyc6IHsKICAgICAgICAgICAgIC8vIG11c3QgYmUgZnJhZ21lbnQtb25seSByZWZlcmVuY2UK
ICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlF
bmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZm
ZXIuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgU3Ry
aW5nKCksIHJlbGF0aXZlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgJz8nOiB7CiAgICAgICAgICAgICAvLyBxdWVyeS1vbmx5IHJlZmVyZW5jZSwgc3BlY2lh
bCBjYXNlIG5lZWRlZCBmb3Igbm9uLVVSTCByZXN1bHRzCiAgICAgICAgICAgICBhcHBlbmRBU0NJ
SShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BhdGhFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZm
ZXIpOwotICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAwKTsKKyAgICAgICAg
ICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgU3RyaW5nKCksIHJlbGF0aXZlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgJy8nOgpAQCAtNDcwLDExICs0
NzAsMTEgQEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4KICAgICAgICAgICAgIGlmIChzdHJbMV0g
PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgLy8gbmV0LXBhdGgKICAgICAgICAgICAgICAgICBh
cHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3NjaGVtZUVuZCArIDEpLCBzdHIs
IGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRh
dGEoKSwgMCk7CisgICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCBTdHJp
bmcoKSwgcmVsYXRpdmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAv
LyBhYnMtcGF0aAogICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVm
dChiYXNlLm1fcG9ydEVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAg
ICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICBwYXJzZShw
YXJzZUJ1ZmZlci5kYXRhKCksIFN0cmluZygpLCByZWxhdGl2ZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTU0OSw3ICs1NDksNyBAQCB2
b2lkIEtVUkw6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwg
Y29uc3QgVGV4dEVuY29kaW5nJiBlbgogICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2
ZSByZWZlcmVuY2U7IHRoaXMgd2lsbCBhbHNvIGFkZCBhIG51bGwgdGVybWluYXRvcgogICAgICAg
ICAgICAgICAgIHN0cmNweShidWZmZXJQb3MsIHJlbFN0cmluZ1Bvcyk7CiAKLSAgICAgICAgICAg
ICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDApOworICAgICAgICAgICAgICAgIHBhcnNl
KHBhcnNlQnVmZmVyLmRhdGEoKSwgU3RyaW5nKCksIHJlbGF0aXZlKTsKIAogICAgICAgICAgICAg
ICAgIEFTU0VSVChzdHJsZW4ocGFyc2VCdWZmZXIuZGF0YSgpKSArIDEgPD0gcGFyc2VCdWZmZXIu
c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwNTksNyArMTA1OSw3IEBAIHZv
aWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgQ2hhckJ1ZmZlciBidWZm
ZXIoc3RyaW5nLmxlbmd0aCgpICsgMSk7CiAgICAgY29weUFTQ0lJKHN0cmluZy5jaGFyYWN0ZXJz
KCksIHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgYnVmZmVyW3N0cmluZy5s
ZW5ndGgoKV0gPSAnXDAnOwotICAgIHBhcnNlKGJ1ZmZlci5kYXRhKCksICZzdHJpbmcpOworICAg
IHBhcnNlKGJ1ZmZlci5kYXRhKCksIHN0cmluZywgc3RyaW5nKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIHNpemVfdCBsZW5BLCBjb25zdCBjaGFyKiBiLCBz
aXplX3QgbGVuQikKQEAgLTExMTYsMTggKzExMTYsMTggQEAgc3RhdGljIGJvb2wgaXNOb25GaWxl
SGllcmFyY2hpY2FsU2NoZW1lKGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0
aCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciog
dXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQordm9pZCBLVVJMOjpwYXJzZShjb25z
dCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dW5tb2RpZmllZFNvdXJjZVVSTCkKIHsKICAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykg
ewogICAgICAgICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJp
bmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9z
dHJpbmcgPSAhdW5tb2RpZmllZFNvdXJjZVVSTC5pc051bGwoKSA/IHVubW9kaWZpZWRTb3VyY2VV
UkwgOiB1cmw7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIodXJsWzBdKSkgewogICAgICAgICAvLyBzY2hl
bWUgbXVzdCBzdGFydCB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyCi0gICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIG1f
c3RyaW5nID0gIXVubW9kaWZpZWRTb3VyY2VVUkwuaXNOdWxsKCkgPyB1bm1vZGlmaWVkU291cmNl
VVJMIDogdXJsOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMTM3LDcgKzExMzcsNyBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwg
Y29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykKICAgICAgICAgc2NoZW1lRW5kKys7CiAKICAg
ICBpZiAodXJsW3NjaGVtZUVuZF0gIT0gJzonKSB7Ci0gICAgICAgIG1fc3RyaW5nID0gb3JpZ2lu
YWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIG1fc3RyaW5nID0gIXVu
bW9kaWZpZWRTb3VyY2VVUkwuaXNOdWxsKCkgPyB1bm1vZGlmaWVkU291cmNlVVJMIDogdXJsOwog
ICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjAzLDcg
KzEyMDMsNyBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5n
KiBvcmlnaW5hbFN0cmluZykKICAgICAgICAgICAgIGhvc3RTdGFydCA9IHVzZXJTdGFydDsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0gICAgICAg
ICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwor
ICAgICAgICAgICAgbV9zdHJpbmcgPSAhdW5tb2RpZmllZFNvdXJjZVVSTC5pc051bGwoKSA/IHVu
bW9kaWZpZWRTb3VyY2VVUkwgOiB1cmw7CiAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyMTksNyArMTIxOSw3IEBAIHZvaWQgS1VS
TDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQog
ICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBv
cmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgICAgICAgICBt
X3N0cmluZyA9ICF1bm1vZGlmaWVkU291cmNlVVJMLmlzTnVsbCgpID8gdW5tb2RpZmllZFNvdXJj
ZVVSTCA6IHVybDsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgdm9pZCBLVVJM
OjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAK
ICAgICAgICAgaWYgKCFpc1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbcG9ydEVuZF0pKSB7CiAgICAg
ICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmln
aW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgICAgIG1fc3RyaW5n
ID0gIXVubW9kaWZpZWRTb3VyY2VVUkwuaXNOdWxsKCkgPyB1bm1vZGlmaWVkU291cmNlVVJMIDog
dXJsOwogICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xNDE4LDggKzE0MTgsOCBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIq
IHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykKIAogICAgIC8vIElmIHdlIGRpZG4n
dCBlbmQgdXAgYWN0dWFsbHkgY2hhbmdpbmcgdGhlIG9yaWdpbmFsIHN0cmluZyBhbmQKICAgICAv
LyBpdCB3YXMgYWxyZWFkeSBpbiBhIFN0cmluZywgcmV1c2UgaXQgdG8gYXZvaWQgZXh0cmEgYWxs
b2NhdGlvbi4KLSAgICBpZiAob3JpZ2luYWxTdHJpbmcgJiYgb3JpZ2luYWxTdHJpbmctPmxlbmd0
aCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZyYWdtZW50RW5kKSAmJiBzdHJuY21wKGJ1
ZmZlci5kYXRhKCksIHVybCwgbV9mcmFnbWVudEVuZCkgPT0gMCkKLSAgICAgICAgbV9zdHJpbmcg
PSAqb3JpZ2luYWxTdHJpbmc7CisgICAgaWYgKG9yaWdpbmFsU3RyaW5nLmlzTnVsbCgpICYmIG9y
aWdpbmFsU3RyaW5nLmxlbmd0aCgpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ZyYWdtZW50
RW5kKSAmJiBzdHJuY21wKGJ1ZmZlci5kYXRhKCksIHVybCwgbV9mcmFnbWVudEVuZCkgPT0gMCkK
KyAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZzsKICAgICBlbHNlCiAgICAgICAgIG1f
c3RyaW5nID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmgKaW5kZXggZjYyMTE4MDRjMDdhZWMyYjY0NWE3YmE2NTZjYjE5ZGM4NWY0ZTk3
Ni4uMTExZDg0MTg4MzZkNjIxMGM3M2MxZDY4MjY0MjI1ZTU2M2Q1NGJmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkwuaApAQCAtMjM2LDYgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CiAjaWYgVVNFKEdPT0dMRVVS
TCkKICAgICBmcmllbmQgY2xhc3MgS1VSTEdvb2dsZVByaXZhdGU7CisgICAgdm9pZCBwYXJzZShj
b25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYpIHsgcGFyc2UodXJsLCAmb3JpZ2luYWxTdHJpbmcpOyB9CiAgICAgdm9pZCBwYXJzZShjb25z
dCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpOyAgLy8gS1VSTE1hYyBj
YWxscyB0aGlzLgogICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZm
ZXIpIGNvbnN0OyAgLy8gS1VSTENGTmV0IHVzZXMgdGhpcy4KICAgICBLVVJMR29vZ2xlUHJpdmF0
ZSBtX3VybDsKQEAgLTI0Nyw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIC8vIG9wdGltaXphdGlv
bjogV2hlbiB0aGUgc291cmNlIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXhlZC11cCBzdHJpbmcsCiAg
ICAgLy8gaXQgd2lsbCB1c2UgdGhlIHBhc3NlZC1pbiBzdHJpbmcgaW5zdGVhZCBvZiBhbGxvY2F0
aW5nIGEgbmV3IG9uZS4KICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKTsKKyAg
ICB2b2lkIHBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmlu
ZywgY29uc3QgU3RyaW5nJiB1bm1vZGlmaWVkU291cmNlVVJMKTsKIAogICAgIFN0cmluZyBtX3N0
cmluZzsKICAgICBib29sIG1faXNWYWxpZCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S1VSTENGTmV0LmNwcAppbmRleCA4YmY1MGUwOTFlZDFmNmI2YjZiNWJjOGY5YmJkYjY3YjAyM2Rk
YzM0Li5hZWE1MWZmNGNjM2JiMTZlYzBiMDE5YjRkMzYyODQ2M2FhYzE2Mzc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ0ZVUkxS
ZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0IENoYXJCdWZmZXImKTsKIEtVUkw6OktVUkwo
Q0ZVUkxSZWYgdXJsKQogewogICAgIGlmICghdXJsKSB7Ci0gICAgICAgIHBhcnNlKDAsIDApOwor
ICAgICAgICBwYXJzZSgwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC01MCw3ICs1MCw3IEBAIEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQogICAgIENG
VVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xl
bmd0aCk7CiAgICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsKICAgICBpZiAoYnl0ZXNbMF0g
IT0gJy8nKSB7Ci0gICAgICAgIHBhcnNlKGJ5dGVzLCAwKTsKKyAgICAgICAgcGFyc2UoYnl0ZXMs
IFN0cmluZygpLCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYwLDcg
KzYwLDcgQEAgS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiAgICAgYnVmZmVyWzNdID0gJ2UnOwog
ICAgIGJ1ZmZlcls0XSA9ICc6JzsKIAotICAgIHBhcnNlKGJ1ZmZlci5kYXRhKCksIDApOworICAg
IHBhcnNlKGJ1ZmZlci5kYXRhKCksIFN0cmluZygpLCBTdHJpbmcoKSk7CiB9CiAKIENGVVJMUmVm
IGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCmluZGV4IDFhMTE0YmZjZjNmZmZlNDFkNTBjNmMy
YTY1NzRkMTI1OTc1MjQxNmYuLjQ1ZTFjNTRiYjdmYzE1MTE5NmY3ZDExYTdlMDhiMzhiY2U2ZWIw
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCkBAIC0zNyw3ICszNyw3
IEBAIGV4dGVybiBDRlVSTFJlZiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoY29uc3QgQ2hhckJ1ZmZl
ciYgYnVmZmVyKTsKIEtVUkw6OktVUkwoTlNVUkwgKnVybCkKIHsKICAgICBpZiAoIXVybCkgewot
ICAgICAgICBwYXJzZSgwLCAwKTsKKyAgICAgICAgcGFyc2UoMCwgU3RyaW5nKCksIFN0cmluZygp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcsNyArNDcsNyBAQCBLVVJMOjpLVVJM
KE5TVVJMICp1cmwpCiAgICAgQ0ZVUkxHZXRCeXRlcyhyZWludGVycHJldF9jYXN0PENGVVJMUmVm
Pih1cmwpLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xlbmd0aCk7CiAg
ICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsKICAgICBpZiAoYnl0ZXNbMF0gIT0gJy8nKSB7
Ci0gICAgICAgIHBhcnNlKGJ5dGVzLCAwKTsKKyAgICAgICAgcGFyc2UoYnl0ZXMsIFN0cmluZygp
LCBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3LDcgKzU3LDcgQEAg
S1VSTDo6S1VSTChOU1VSTCAqdXJsKQogICAgIGJ1ZmZlclszXSA9ICdlJzsKICAgICBidWZmZXJb
NF0gPSAnOic7CiAKLSAgICBwYXJzZShidWZmZXIuZGF0YSgpLCAwKTsKKyAgICBwYXJzZShidWZm
ZXIuZGF0YSgpLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogfQogCiBLVVJMOjpvcGVyYXRvciBOU1VS
TCAqKCkgY29uc3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5Zjk3ZDNlYjQ5YjlhMTIwMGUwNjlmNzViNWFkZTFkNzJlYzc3
NDg1Li41OWJiNGQ1YjYwYjc1ZTUzY2JjNzgyZTA0YjQ3YmU4ZjUxZDc1NDhkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTEtMTEtMTAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVVJMcyBhcmUgZW5jb2RlZCBpbiBVVEYtOCwgdGhlbiBkZWNvZGVk
IGFzIGlmIHRoZXkgYXJlIExhdGluMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvdXJsL2ludmFsaWQtdXJscy11dGY4LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbDogQWRkZWQu
CisgICAgICAgIE5ldyB0ZXN0IGZvciBpbnZhbGlkIFVSTCB3aGVyZSB0aGUgVW5pY29kZSBjaGFy
YWN0ZXJzIHdlcmUgbWFuZ2xlZAorICAgICAgICBieSB0aGUgcGFyc2luZy4KKworICAgICAgICAq
IGZhc3QvdXJsL2ZpbGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvdXJsL2ZpbGUtaHR0
cC1iYXNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVHdvIHVybHMgd2hlcmUgZXhwZW5kZWQgYnkg
dGhlaXIgYmFzZSBVUkwgYmVmb3JlIGZvdW5kIGludmFsaWQuIFRoZSBwYXJ0aWFsCisgICAgICAg
IHBhcnNlZCByZXN1bHQgd2FzIHNhdmVkIGFzIHRoZSBuZXcgVVJMLgorCisgICAgICAgICogZmFz
dC91cmwvaG9zdC1leHBlY3RlZC50eHQ6CisgICAgICAgIFRoZSBob3N0IG9mIHR3byB1cmxzIHdl
cmUgaW52YWxpZCwgYW5kIHBhcnRpYWxseSBtb2RpZmllZCBieSB0aGUgcGFyc2luZy4KKworICAg
ICAgICAqIGZhc3QvdXJsL2lkbmEyMDAzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVGhlIGZpcnN0
ICdodHRwOi8vd3d3Lmxvb2tvdXQubmV04qm0ODAvJyBlbmNvZGVkIGZvciBwYXJzaW5nIGlzIGh0
dHA6Ly93d3cubG9va291dC5uZXQ6Oj04MC8KKyAgICAgICAgYW5kIGZhaWxzIGFzIGludmFsaWQu
IFRoZSBuZXcgcmVzdWx0IGRvZXMgbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorCisg
ICAgICAgIFRoZSB3aGl0ZXNwYWNlIGluICdodHRwOi8vd3d3wqAubG9va291dC5uZXQvJyBjYXVz
ZXMgdGhlIHBhcnNpbmcgdG8gZmFpbCB3aGVuIHBhcnNpbmcKKyAgICAgICAgdGhlIHVzZXJuYW1l
IGJlY2F1c2UgYSBzcGFjZSBpcyBub3QgYSBVc2VySW5mb0NoYXIuCisKKyAgICAgICAgKiBmYXN0
L3VybC9wb3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgVGhlIHVuaWNvZGUgY2hhcmFjdGVycyB1
c2VkIGFzIHRoZSBwb3J0IG51bWJlciB3ZXJlIHRyYW5zZm9ybWVkIGR1ZSB0bworICAgICAgICB0
aGUgZW5jb2RpbmcgVVRGLTggLT4gVW5pY29kZSB0aHJvdWdoIHRoZSBMYXRpbjEgY29kZWMuCisK
IDIwMTEtMTEtMTAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBQcmUtZW1wdGl2ZWx5IG1hcmsgYSBjYW52YXMgdGVzdCBhcyBm
YWlsaW5nIGZvciBuZXh0IFNraWEgcm9sbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dXJsL2ZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvZmlsZS1leHBlY3Rl
ZC50eHQKaW5kZXggZDI3NDY3MzNkNjU0NGY4OTU3ZThiMGM0M2Y4ZTYzMWI2ZDQ1MjA5MS4uYWIz
ZjdmOGM1YzMyMWZkMTdhMzIxOGJjYmEwYzQyNzRiYjEyZjdiMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC91cmwvZmlsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91
cmwvZmlsZS1leHBlY3RlZC50eHQKQEAgLTEwLDcgKzEwLDcgQEAgRkFJTCBjYW5vbmljYWxpemUo
J2ZpbGU6VU5DaG9zdC9wYXRoJykgc2hvdWxkIGJlIGZpbGU6Ly91bmNob3N0L3BhdGguIFdhcyBm
aWxlOi8KIEZBSUwgY2Fub25pY2FsaXplKCdjOlxcZm9vXFxiYXInKSBzaG91bGQgYmUgZmlsZTov
Ly9DOi9mb28vYmFyLiBXYXMgYzovZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCdDfC9mb28v
YmFyJykgc2hvdWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGZpbGU6Ly8vdG1wL21vY2sv
Q3wvZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCcvQ3xcXGZvb1xcYmFyJykgc2hvdWxkIGJl
IGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGZpbGU6Ly8vQ3wvZm9vL2Jhci4KLUZBSUwgY2Fub25p
Y2FsaXplKCcvL0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFyLiBXYXMg
ZmlsZTovL0N8L2Zvby9iYXIuCitGQUlMIGNhbm9uaWNhbGl6ZSgnLy9DfC9mb28vYmFyJykgc2hv
dWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIC8vQ3wvZm9vL2Jhci4KIFBBU1MgY2Fub25p
Y2FsaXplKCcvL3NlcnZlci9maWxlJykgaXMgJ2ZpbGU6Ly9zZXJ2ZXIvZmlsZScKIFBBU1MgY2Fu
b25pY2FsaXplKCdcXFxcc2VydmVyXFxmaWxlJykgaXMgJ2ZpbGU6Ly9zZXJ2ZXIvZmlsZScKIFBB
U1MgY2Fub25pY2FsaXplKCcvXFxzZXJ2ZXIvZmlsZScpIGlzICdmaWxlOi8vc2VydmVyL2ZpbGUn
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9maWxlLWh0dHAtYmFzZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3VybC9maWxlLWh0dHAtYmFzZS1leHBlY3RlZC50eHQK
aW5kZXggZjkxNjljZDUwODhlYjEwMTU3NGFiNGJkZmVkODYzZDA2MmM3NjMyYi4uY2UyY2IwODEx
ZTVhNjJlYjJjMzM5NjMyZDAyNjdlNmJmMWM0M2M2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC91cmwvZmlsZS1odHRwLWJhc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdXJsL2ZpbGUtaHR0cC1iYXNlLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNyBAQCBGQUlM
IGNhbm9uaWNhbGl6ZSgnZmlsZTpVTkNob3N0L3BhdGgnKSBzaG91bGQgYmUgZmlsZTovL3VuY2hv
c3QvcGF0aC4gV2FzIGZpbGU6LwogRkFJTCBjYW5vbmljYWxpemUoJ2M6XFxmb29cXGJhcicpIHNo
b3VsZCBiZSBmaWxlOi8vL0M6L2Zvby9iYXIuIFdhcyBjOi9mb28vYmFyLgogRkFJTCBjYW5vbmlj
YWxpemUoJ0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFyLiBXYXMgaHR0
cDovL2V4YW1wbGUuY29tL21vY2svQ3wvZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCcvQ3xc
XGZvb1xcYmFyJykgc2hvdWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGh0dHA6Ly9leGFt
cGxlLmNvbS9DfC9mb28vYmFyLgotRkFJTCBjYW5vbmljYWxpemUoJy8vQ3wvZm9vL2JhcicpIHNo
b3VsZCBiZSBmaWxlOi8vL0M6L2Zvby9iYXIuIFdhcyBodHRwOi8vQ3wvZm9vL2Jhci4KK0ZBSUwg
Y2Fub25pY2FsaXplKCcvL0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFy
LiBXYXMgLy9DfC9mb28vYmFyLgogRkFJTCBjYW5vbmljYWxpemUoJy8vc2VydmVyL2ZpbGUnKSBz
aG91bGQgYmUgZmlsZTovL3NlcnZlci9maWxlLiBXYXMgaHR0cDovL3NlcnZlci9maWxlLgogRkFJ
TCBjYW5vbmljYWxpemUoJ1xcXFxzZXJ2ZXJcXGZpbGUnKSBzaG91bGQgYmUgZmlsZTovL3NlcnZl
ci9maWxlLiBXYXMgaHR0cDovL3NlcnZlci9maWxlLgogRkFJTCBjYW5vbmljYWxpemUoJy9cXHNl
cnZlci9maWxlJykgc2hvdWxkIGJlIGZpbGU6Ly9zZXJ2ZXIvZmlsZS4gV2FzIGh0dHA6Ly9zZXJ2
ZXIvZmlsZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdXJsL2hvc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9zdC1leHBlY3RlZC50eHQKaW5kZXggNDNlMzhl
YmYxZjFkMjg3NGIwMDFlNzdiODM0MTkzNDkyNzhlMmRlNy4uYmQxOGM0NzI1NWNjNDY0YjNhMDNi
NGZkODk5ZTJkM2EzZGY3ODcwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9z
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9zdC1leHBlY3RlZC50
eHQKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIEZBSUwgY2Fub25p
Y2FsaXplKCdodHRwOi8vR29PZ0xlLkNvTS8nKSBzaG91bGQgYmUgaHR0cDovL2dvb2dsZS5jb20v
LiBXYXMgaHR0cDovL0dvT2dMZS5Db00vLgogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly9Hb28l
MjAgZ29vJTdDfC5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28lN0MlN0MuY29t
Ly4gV2FzIGh0dHA6Ly9Hb28lMjAgZ29vJTdDfC5jb20vLgotRkFJTCBjYW5vbmljYWxpemUoJ2h0
dHA6Ly9HT0/CoOOAgGdvby5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28uY29t
Ly4gV2FzIGh0dHA6Ly9nb28gIGdvby5jb20vLgorRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly9H
T0/CoOOAgGdvby5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28uY29tLy4gV2Fz
IGh0dHA6Ly9HT0/CoOOAgGdvby5jb20vLgogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly9HT0/i
gIvigaDvu79nb28uY29tLycpIGlzICdodHRwOi8vZ29vZ29vLmNvbS8nCiBQQVNTIGNhbm9uaWNh
bGl6ZSgnaHR0cDovL3d3dy5mb2/jgIJiYXIuY29tLycpIGlzICdodHRwOi8vd3d3LmZvby5iYXIu
Y29tLycKIEZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8v77eQenl4LmNvbS8nKSBzaG91bGQgYmUg
aHR0cDovLyVFRiVCRiVCRHp5eC5jb20vLiBXYXMgaHR0cDovLgpAQCAtMjcsNyArMjcsNyBAQCBG
QUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovLzE5Mi4xNjguMC4xIGhlbGxvLycpIHNob3VsZCBiZSBo
dHRwOi8vMTkyLjE2OC4wLjElMjBoZQogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly/vvJDvvLjv
vYPvvJDvvI7vvJDvvJLvvJXvvJDvvI7vvJDvvJEvJykgc2hvdWxkIGJlIGh0dHA6Ly8xOTIuMTY4
LjAuMS8uIFdhcyBodHRwOi8vMHhjMC4wMjUwLjAxLy4KIFBBU1MgY2Fub25pY2FsaXplKCdodHRw
Oi8vMTkyLjE2OC4wLjI1Ny8nKSBpcyAnaHR0cDovLzE5Mi4xNjguMC4yNTcvJwogUEFTUyBjYW5v
bmljYWxpemUoJ2h0dHA6Ly9bZ29vZ2xlLmNvbV0vJykgaXMgJ2h0dHA6Ly9bZ29vZ2xlLmNvbV0v
JwotRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly/RgigvJykgc2hvdWxkIGJlIGh0dHA6Ly94bi0t
JTI4LTdlZC8uIFdhcyBodHRwOi8veG4tLSgtOHRiLy4KK0ZBSUwgY2Fub25pY2FsaXplKCdodHRw
Oi8v0YIoLycpIHNob3VsZCBiZSBodHRwOi8veG4tLSUyOC03ZWQvLiBXYXMgaHR0cDovL9GCKC8u
CiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL2dvXFxAb2dsZS5jb20vJykgaXMgJ2h0dHA6Ly9n
by9Ab2dsZS5jb20vJwogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly9nby9Ab2dsZS5jb20vJykg
aXMgJ2h0dHA6Ly9nby9Ab2dsZS5jb20vJwogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cu
bG9va291dC5uZXQ6Oj09ODA6Oj09NDQzOjovJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cubG9va291
dC5uZXQ6OiUzRCUzRDgwOjolM0QlM0Q0NDM6Ly4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXQ6
Oj09ODA6Oj09NDQzOjovLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC91cmwvaWRuYTIw
MDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaWRuYTIwMDMtZXhwZWN0ZWQu
dHh0CmluZGV4IGZkMWRjM2U5N2ZiYzBmMzc5MTY5N2U2NjRkYzdjZTQ2OGYzZDRkNWEuLjc5MGJh
MmNlZDZkNTdhN2Q3OWM2YTAyMzJkNTkwNzU3YzlhYTY3ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvdXJsL2lkbmEyMDAzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3VybC9pZG5hMjAwMy1leHBlY3RlZC50eHQKQEAgLTE1LDggKzE1LDggQEAgRkFJTCBjYW5vbmlj
YWxpemUoJ2h0dHA6Ly93d3cubG9va291dC5uZXTvvJo4MC8nKSBzaG91bGQgYmUgaHR0cDovL3d3
dy5sb29rb3V0Lm4KIFBBU1MgY2Fub25pY2FsaXplKCdodHRwOi8vd3d34oClbG9va291dC5uZXQv
JykgaXMgJ2h0dHA6Ly93d3cuLmxvb2tvdXQubmV0LycKIFBBU1MgY2Fub25pY2FsaXplKCdodHRw
Oi8vd3d3Lmxvb2tvdXTigKduZXQvJykgaXMgJ2h0dHA6Ly93d3cueG4tLWxvb2tvdXRuZXQtNDA2
ZS8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5sb2/EuG91dC5uZXQvJykgaXMgJ2h0
dHA6Ly93d3cueG4tLWxvb291dC01YmIubmV0LycKLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8v
d3d3Lmxvb2tvdXQubmV04qm0ODAvJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cubG9va291dC5uZXQ6
OiUzRDgwLy4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXQ6Oj04MC8uCi1GQUlMIGNhbm9uaWNh
bGl6ZSgnaHR0cDovL3d3d8KgLmxvb2tvdXQubmV0LycpIHNob3VsZCBiZSBodHRwOi8vd3d3JTIw
Lmxvb2tvdXQubmV0Ly4gV2FzIGh0dHA6Ly93d3cgLmxvb2tvdXQubmV0Ly4KK0ZBSUwgY2Fub25p
Y2FsaXplKCdodHRwOi8vd3d3Lmxvb2tvdXQubmV04qm0ODAvJykgc2hvdWxkIGJlIGh0dHA6Ly93
d3cubG9va291dC5uZXQ6OiUzRDgwLy4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXTiqbQ4MC8u
CitGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3d8KgLmxvb2tvdXQubmV0LycpIHNob3VsZCBi
ZSBodHRwOi8vd3d3JTIwLmxvb2tvdXQubmV0Ly4gV2FzIGh0dHA6Ly93d3fCoC5sb29rb3V0Lm5l
dC8uCiBGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL+GagGxvb2tvdXQubmV0LycpIHNob3VsZCBi
ZSBodHRwOi8vJUUxJTlBJTgwbG9va291dC5uZXQvLiBXYXMgaHR0cDovLgogRkFJTCBjYW5vbmlj
YWxpemUoJ2h0dHA6Ly8fbG9va291dC5uZXQvJykgc2hvdWxkIGJlIGh0dHA6Ly8lMUZsb29rb3V0
Lm5ldC8uIFdhcyBodHRwOi8vH2xvb2tvdXQubmV0Ly4KIEZBSUwgY2Fub25pY2FsaXplKCdodHRw
Oi8vbG9va9udb3V0Lm5ldC8nKSBzaG91bGQgYmUgaHR0cDovL2xvb2slREIlOURvdXQubmV0Ly4g
V2FzIGh0dHA6Ly4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWQtdXJs
cy11dGY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWQtdXJscy11
dGY4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2EyNzU4MTM3OGZiMzNlYTU4YzAwMzRjYzU0
ZjU2Zjg1MjcxYWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52
YWxpZC11cmxzLXV0ZjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgZW5zdXJl
IHdlIGRvIG5vdCBtZXNzIHVwIHRoZSBieXRlcyB3aGVuIGFuIFVSTCBpcyBwYXJ0aWFsbHkgcGFy
c2VkIGFuZCBpcyBpbnZhbGlkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBl
Y3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNy
YyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVk
CitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlz
IGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BB
U1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhw
ZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9pbnZhbGlkLXVybHMtdXRmOC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOTkyNDRkODk2MThkYWZhMmM2MmU2OTM2MmYxMTJiY2IxNTEzMmYxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8IS0tIFNldCB0aGUgYmFzZSBzbyB0aGF0IHRoZSBjdXJyZW50
IFVSTCBkb2VzIG5vdCBhZmZlY3QgdGhlIHRlc3RzLiAtLT4KKzxiYXNlIGhyZWY9IiI+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIGVuc3VyZSB3ZSBkbyBu
b3QgbWVzcyB1cCB0aGUgYnl0ZXMgd2hlbiBhbiBVUkwgaXMgcGFydGlhbGx5IHBhcnNlZCBhbmQg
aXMgaW52YWxpZC4iKQorCisvLyBUaG9zZSBhcmUgYWxsIGludmFsaWQgVVJMcy4gVGhleSBzaG91
bGQgbm90IGJlIHBhcnRpYWxseSBtb2RpZmllZCBieSB0aGUgcGFyc2VyLgordmFyIHRlc3RTZXQg
PSBbCisgICAgJ2ZvbzovL3TDqnRlIMOgIHTDqnRlQGhvc3QvJywKKyAgICAnZm9vOi8vdXNlcjp0
w6p0ZSDDoCB0w6p0ZUBob3N0LycsCisgICAgJyAgICBmb286Ly88PkBob3N0LyAgICAnLAorICAg
ICcgICAgZm9vOi8vdXNlcjo8PkBob3N0LyAgICAnLAorICAgICdmb286Ly91c2VyOnBhc3N3b3Jk
QFt4eHh4eF0vdMOqdGUgw6AgdMOqdGUvJywKKyAgICAvLyBUaGUgJz8nIGlzIGEgcGF0aCBzZXBh
cmF0b3IgYW5kIG1ha2Ugc3VyZSB0aGUgaG9zdG5hbWUgaXMgbm90IGVuY29kZWQgaW4gcHVuaWNv
ZGUuIFRoZSBob3N0bmFtZSBpcyBhbiBpbnZhbGlkIElQVjYgaG9zdG5hbWUuCisgICAgJ2Zvbzov
L3VzZXI6cGFzc3dvcmRAWz90w6p0ZSDDoCB0w6p0ZS8nLAorICAgICdmb286Ly91c2VyOnBhc3N3
b3JkQFs/dMOqdGUgw6AgdMOqdGVdLycsCisgICAgJ2ZvbzovL3VzZXI6cGFzc3dvcmRAaG9zdDp0
w6p0ZSDDoCB0w6p0ZS8nLAorICAgICdmb286Ly91c2VyOnBhc3N3b3JkQGhvc3Q6ODB0w6p0ZSDD
oCB0w6p0ZScsCisgICAgJ2ZvbzovL3VzZXI6cGFzc3dvcmRAaG9zdDp0w6p0ZSDDoCB0w6p0ZS8n
LAorICAgICdmb286Ly91c2VyOnBhc3N3b3JkQGhvc3Q6ODB0w6p0ZSDDoCB0w6p0ZScsCisgICAg
Ly8gVGhlIHNjaGVtZXMgIndzOiIsICJmdHA6IiwgImh0dHA6IiwgImh0dHBzOiIsICJnb3RoZXI6
IiB0YWtlIGEgc2hvcnRjdXQgZHVyaW5nIHBhcnNpbmcgc28gd2UgdGVzdCB0aGVtIHNlcGFyYXRl
bHkuCisgICAgJ3dzOi90w6p0ZScsCisgICAgJ2Z0cDovdMOqdGUnLAorICAgICdodHRwOi90w6p0
ZScsCisgICAgJ2h0dHBzOi90w6p0ZScsCisgICAgJ2dvcGhlcjovdMOqdGUnLAorXTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2V0Lmxlbmd0aDsgKytpKSB7CisgICAgc3JjID0gY2Fub25p
Y2FsaXplKHRlc3RTZXRbaV0pOworCWV4cGVjdGVkID0gdGVzdFNldFtpXS50cmltKCk7CisJc2hv
dWxkQmUoJ3NyYycsICdleHBlY3RlZCcpOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3VybC9wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdXJsL3BvcnQtZXhw
ZWN0ZWQudHh0CmluZGV4IDlhMTZlZTNjMzUyMmM3Y2U5NzRhYTFiOWM5YTQyMmRkZmYzZTZjZTYu
LmQwOGRkOGY3N2I1OTA3MDA3NTYwNmJmMDM0MzJkYmZkYzhjYmE1ZTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvdXJsL3BvcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdXJsL3BvcnQtZXhwZWN0ZWQudHh0CkBAIC04LDggKzgsOCBAQCBQQVNTIGNhbm9uaWNhbGl6
ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTotMi8nKSBpcyAnaHR0cDovL3d3dy5leGFtcGxlLmNv
bTotMi8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4MC8nKSBp
cyAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3
dy5leGFtcGxlLmNvbTo4MDgwLycpIGlzICdodHRwOi8vd3d3LmV4YW1wbGUuY29tOjgwODAvJwog
UEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb206LycpIGlzICdodHRwOi8v
d3d3LmV4YW1wbGUuY29tLycKLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUu
Y29tOuGNqS8nKSBzaG91bGQgYmUgaHR0cDovL3d3dy5leGFtcGxlLmNvbTolRTElOEQlQTkvLiBX
YXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbTrDocKNwqkvLgotRkFJTCBjYW5vbmljYWxpemUoJ2h0
dHA6Ly93d3cuZXhhbXBsZS5jb2068J2fli8nKSBzaG91bGQgYmUgaHR0cDovL3d3dy5leGFtcGxl
LmNvbTolRjAlOUQlOUYlOTYvLiBXYXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbTrDsMKdwp/Cli8u
CitGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTrhjakvJykgc2hvdWxk
IGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206JUUxJThEJUE5Ly4gV2FzIGh0dHA6Ly93d3cuZXhh
bXBsZS5jb2064Y2pLy4KK0ZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUuY29t
OvCdn5YvJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206JUYwJTlEJTlGJTk2Ly4g
V2FzIGh0dHA6Ly93d3cuZXhhbXBsZS5jb2068J2fli8uCiBQQVNTIGNhbm9uaWNhbGl6ZSgnZm9v
YmFyOi8vd3d3LmV4YW1wbGUuY29tOjgwLycpIGlzICdmb29iYXI6Ly93d3cuZXhhbXBsZS5jb206
ODAvJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116323</attachid>
            <date>2011-11-22 23:15:42 -0800</date>
            <delta_ts>2011-11-30 11:03:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71758-20111122231539.patch</filename>
            <type>text/plain</type>
            <size>29729</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzU1OGM2ZjFjYmQ2NzkwMWZiN2IzMjJiMGY2Mzk2OTJhOGJkMDMyLi4yYTgxMTlhNjcwMmZjMDkx
MGVhN2U3YmQ2YjEyYjY0MTcwMTgzYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxMS0xMS0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVVJMcyBhcmUgZW5jb2RlZCBpbiBVVEYtOCwgdGhlbiBkZWNvZGVk
IGFzIGlmIHRoZXkgYXJlIExhdGluMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGhlIG9wZXJhdG9yID09IGJldHdlZW4gYSBTdHJpbmcgYW5kIGEg
VmVjdG9yIG9mIGNoYXIuIFRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpcyB0aGUgc2FtZSBh
cyB0aGUgY29tcGFyaXNvbiBvZiBTdHJpbmcgYW5kIGNoYXIqIGJ1dCBhZGRzIHRoZSBsZW5ndGgg
YXMgYQorICAgICAgICBwYXJhbWV0ZXIgZm9yIGNvbXBhcmluZyB0aGUgc3RyaW5ncy4KKworICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg6CisgICAgICAgIChXVEY6OmVxdWFsKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcu
aDoKKyAgICAgICAgKFdURjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6Om9wZXJhdG9yIT0p
OgorCiAyMDExLTExLTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAwOTEzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDkyNDc0ZDBmNGNhYjc5YzUwYmVmMzE1MmNhYTU4Yzg3YzRhNDQ4ZjguLmYxNDQ0YjJkNDBk
NzAwOTk5ZjFhM2JjZDdmMWI0NWJjNTU1YTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBA
QAorMjAxMS0xMS0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgVVJMcyBhcmUgZW5jb2RlZCBpbiBVVEYtOCwgdGhlbiBkZWNvZGVkIGFzIGlmIHRo
ZXkgYXJlIExhdGluMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQcmV2aW91c2x5LCBpbnZhbGlkIFVSTHMgY291bGQgaGF2ZSBhIHN0cmluZyBlbWFuYXRp
bmcgZnJvbSBhCisgICAgICAgIHBhcnRpYWwgcGFyc2luZyBvZiB0aGUgaW5wdXQuIFRoZSBjcmVh
dGlvbiBvZiB0aGUgc3RyaW5nIHdhcyBkb25lCisgICAgICAgIHRocm91Z2ggdGhlIExhdGluMSBj
b2RlYyByZWdhcmRsZXNzIG9mIHRoZSBlbmNvZGluZyBvZiB0aGUgY2hhciogdXJsLgorCisgICAg
ICAgIFRoaXMgY2F1c2VkIHR3byB0eXBlcyBvZiBpc3N1ZXMsIFVSTHMgd2VyZSBldmFsdWF0ZWQg
YXMgaGFsZi1wYXJzZWQsCisgICAgICAgIGFuZCB0aGUgY29kaW5nIGFuZCBkZWNvZGluZyBvZiB0
aGUgc3RyaW5nIHdhcyBub3QgY29uc2lzdGVudC4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5n
ZXMgS1VSTDo6cGFyc2UoKSB0byBmYWxsYmFjayBvbiB0aGUgb3JpZ2luYWwgc3RyaW5nCisgICAg
ICAgIHdoZW5ldmVyIHRoZSBwYXJzaW5nIG9mIHRoZSBVUkwgZmFpbHMuCisKKyAgICAgICAgVGVz
dDogZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbAorCisgICAgICAgICogcGxhdGZvcm0v
S1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OktVUkw6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6cGFyc2UpOgorICAgICAg
ICBQcmV2aW91c2x5LCBvcmlnaW5hbFN0cmluZyB3YXMgb25seSB1c2VkIGFzIGFuIG9wdGltaXph
dGlvbiB0byBhdm9pZAorICAgICAgICB0aGUgYWxsb2NhdGlvbiBvZiBhIHN0cmluZy4gU2luY2Ug
dGhpcyBvcHRpbWl6YXRpb24gZGVwZW5kcyBvbiB0aGUKKyAgICAgICAgY29tcGFyaXNvbiBvZiB0
aGUgaW5jb21pbmcgc3RyaW5nIGFuZCB0aGUgZW5jb2RlZCBidWZmZXIuCisgICAgICAgIFRoaXMg
cGF0Y2hlcyBnZW5lcmFsaXplcyBvcmlnaW5hbFN0cmluZyB0byBhbHdheXMgYmUgdGhlIG9yaWdp
bmFsIHN0cmluZworICAgICAgICBiZWluZyBwYXJzZWQgYnkgS1VSTC4gVGhlIG9wdGltaXphdGlv
biBpcyBrZXB0IGJ5IGNvbXBhcmluZyB0aGF0IHN0cmluZworICAgICAgICBhbmQgdGhlIGZpbmFs
IHBhcnNlZCByZXN1bHQuCisgICAgICAgICogcGxhdGZvcm0vS1VSTC5oOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpLVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
S1VSTE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OktVUkwpOgorCiAyMDExLTExLTIx
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTAwOTEzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKaW5kZXggZWM0YjI1NWM5NzkxOTRlOTAwODdjOGM5YzdjOTYyYzI1MDEz
YWUxOC4uNWRiZDFkMzMwNmVhOGQ3YTg3ZDZkZTBmOWRiZTU3NDk5YTJlODFiOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC00ODMsNiArNDgzLDcgQEAgX19a
TjNXVEY1TXV0ZXg3dHJ5TG9ja0V2CiBfX1pOM1dURjVNdXRleEMxRXYKIF9fWk4zV1RGNU11dGV4
RDFFdgogX19aTjNXVEY1ZXF1YWxFUEtOU18xMFN0cmluZ0ltcGxFUEtoCitfX1pOM1dURjVlcXVh
bEVQS05TXzEwU3RyaW5nSW1wbEVQS2hqCiBfX1pOM1dURjVlcXVhbEVQS05TXzEwU3RyaW5nSW1w
bEVQS3RqCiBfX1pOM1dURjVlcXVhbEVQS05TXzEwU3RyaW5nSW1wbEVTMl8KIF9fWk4zV1RGNXlp
ZWxkRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4
IGUwN2E1MDA2MTliZGYyNTMxM2UwNTYwNTAzOTNlNTkxZGIwM2EwMDIuLmZjMDFlZGJmMzkwYjA0
NTRiODdlMDk1ZTVkMDY1ODFjZTI0Yzk4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTU3LDYgKzU1Nyw3IEBAIGJvb2wgZXF1YWwoY29uc3Qg
U3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBs
KiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYikpOyB9CiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBM
Q2hhciosIHVuc2lnbmVkKTsKK2lubGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqIGEs
IGNvbnN0IGNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpLCBsZW5ndGgpOyB9CiBpbmxpbmUgYm9vbCBlcXVh
bChjb25zdCBMQ2hhciogYSwgU3RyaW5nSW1wbCogYikgeyByZXR1cm4gZXF1YWwoYiwgYSk7IH0K
IGlubGluZSBib29sIGVxdWFsKGNvbnN0IGNoYXIqIGEsIFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJu
IGVxdWFsKGIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSk7IH0KIGJvb2wgZXF1
YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFVDaGFyKiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGNjNDVhYTAzOWRmMzdmZDQ4
NjkwMjgzYTVkYTk2NjY3NWRmNGQ4NTguLjc2NWI4ODA3Yjc0ZWRkMjA2ZmExZDVhNTgzMDU4ODc2
NjcyMzEwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZT
dHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTM4MywxMiArMzgzLDIxIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5n
JiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1
YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1
cm4gZXF1YWwoYSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNo
YXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7IH0KK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNh
cGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmltcGwoKSwgYS5k
YXRhKCksIGEuc2l6ZSgpKTsgfQordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgoraW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBp
bmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQorCiAKIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVh
bChhLmltcGwoKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYik7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7
IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihi
KSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IFN0cmlu
ZyYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQordGVtcGxhdGU8c2l6
ZV90IGlubGluZUNhcGFjaXR5PgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8
Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9
PSBiKTsgfQordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PgoraW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0
eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQogCiBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2Fz
ZShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWxJZ25vcmlu
Z0Nhc2UoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0Nh
c2UoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWxJZ25vcmlu
Z0Nhc2UoYS5pbXBsKCksIGIpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmluZGV4IGU3NTJi
YjhhNDZiNTBhYWU0YjhjYTg1MDZmZjc0ODA5MmE2N2Q3ZGYuLjdjOGIxZGJmYmNiOWRhY2E1MTFi
ZGI5ZDY3NTc0MmRlZGFhYzJkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCkBAIC0zMjIs
NyArMzIyLDcgQEAgdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKIAogS1VSTDo6S1VSTChQYXJzZWRV
UkxTdHJpbmdUYWcsIGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBwYXJzZSh1cmwsIDApOworICAg
IHBhcnNlKHVybCk7CiAgICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7CiB9CiAKQEAgLTM3Niw4
ICszNzYsNiBAQCB2b2lkIEtVUkw6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbgogICAgIGlmIChyZWwuY29udGFpbnMo
J1xcJykgJiYgIShwcm90b2NvbElzSmF2YVNjcmlwdChyZWwpIHx8IHByb3RvY29sSXMocmVsLCAi
ZGF0YSIpKSkKICAgICAgICAgcmVsID0gc3Vic3RpdHV0ZUJhY2tzbGFzaGVzKHJlbCk7CiAKLSAg
ICBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nID0gJnJlbDsKLQogICAgIGJvb2wgYWxsQVNDSUkgPSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVsLmNoYXJhY3RlcnMoKSwgcmVsLmxlbmd0aCgpKTsKICAg
ICBDaGFyQnVmZmVyIHN0ckJ1ZmZlcjsKICAgICBjaGFyKiBzdHI7CkBAIC0zODksNyArMzg3LDYg
QEAgdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW4KICAgICAgICAgc3RyQnVmZmVyW2xlbl0gPSAwOwog
ICAgICAgICBzdHIgPSBzdHJCdWZmZXIuZGF0YSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG9y
aWdpbmFsU3RyaW5nID0gMDsKICAgICAgICAgZW5jb2RlUmVsYXRpdmVTdHJpbmcocmVsLCBlbmNv
ZGluZywgc3RyQnVmZmVyKTsKICAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKICAgICAg
ICAgbGVuID0gc3RybGVuKHN0cik7CkBAIC0zOTcsMTYgKzM5NCwxMyBAQCB2b2lkIEtVUkw6Omlu
aXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbgogCiAgICAgLy8gR2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGNv
bnRyb2wgY2hhcmFjdGVycy4KICAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJMKCpz
dHIpKSB7Ci0gICAgICAgIG9yaWdpbmFsU3RyaW5nID0gMDsKICAgICAgICAgc3RyKys7CiAgICAg
ICAgIC0tbGVuOwogICAgIH0KIAogICAgIC8vIEdldCByaWQgb2YgdHJhaWxpbmcgd2hpdGVzcGFj
ZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHdoaWxlIChsZW4gJiYgc2hvdWxkVHJpbUZy
b21VUkwoc3RyW2xlbiAtIDFdKSkgewotICAgICAgICBvcmlnaW5hbFN0cmluZyA9IDA7CisgICAg
d2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTChzdHJbbGVuIC0gMV0pKQogICAgICAgICBz
dHJbLS1sZW5dID0gJ1wwJzsKLSAgICB9CiAKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIFJGQywg
dGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYW4KICAgICAvLyBhYnNvbHV0
ZSBVUkkgaWYgcG9zc2libGUsIHVzaW5nIHRoZSAibGVmdG1vc3QsIGxvbmdlc3QiCkBAIC00MjEs
MTAgKzQxNSw5IEBAIHZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJp
bmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuCiAgICAgICAgICAgICArK3A7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCpwID09ICc6JykgewotICAgICAgICAgICAgaWYgKHBbMV0g
IT0gJy8nICYmIGVxdWFsSWdub3JpbmdDYXNlKGJhc2UucHJvdG9jb2woKSwgU3RyaW5nKHN0ciwg
cCAtIHN0cikpICYmIGJhc2UuaXNIaWVyYXJjaGljYWwoKSkgeworICAgICAgICAgICAgaWYgKHBb
MV0gIT0gJy8nICYmIGVxdWFsSWdub3JpbmdDYXNlKGJhc2UucHJvdG9jb2woKSwgU3RyaW5nKHN0
ciwgcCAtIHN0cikpICYmIGJhc2UuaXNIaWVyYXJjaGljYWwoKSkKICAgICAgICAgICAgICAgICBz
dHIgPSBwICsgMTsKLSAgICAgICAgICAgICAgICBvcmlnaW5hbFN0cmluZyA9IDA7Ci0gICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhYnNvbHV0ZSA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC00MzIsMTQgKzQyNSwxNCBAQCB2b2lkIEtVUkw6
OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbgogICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7CiAKICAgICBpZiAoYWJz
b2x1dGUpIHsKLSAgICAgICAgcGFyc2Uoc3RyLCBvcmlnaW5hbFN0cmluZyk7CisgICAgICAgIHBh
cnNlKHN0ciwgcmVsYXRpdmUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHRoZSBiYXNl
IGlzIGVtcHR5IG9yIG9wYXF1ZSAoZS5nLiBkYXRhOiBvciBqYXZhc2NyaXB0OiksIHRoZW4gdGhl
IFVSTCBpcyBpbnZhbGlkCiAgICAgICAgIC8vIHVubGVzcyB0aGUgcmVsYXRpdmUgVVJMIGlzIGEg
c2luZ2xlIGZyYWdtZW50LgogICAgICAgICBpZiAoIWJhc2UuaXNIaWVyYXJjaGljYWwoKSkgewog
ICAgICAgICAgICAgaWYgKHN0clswXSA9PSAnIycpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRB
U0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNl
QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIDApOwor
ICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgcmVsYXRpdmUpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3N0cmluZyA9IHJlbGF0aXZlOwog
ICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKQEAgLTQ1NiwxMyArNDQ5LDEzIEBAIHZvaWQg
S1VSTDo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25z
dCBUZXh0RW5jb2RpbmcmIGVuCiAgICAgICAgIGNhc2UgJyMnOiB7CiAgICAgICAgICAgICAvLyBt
dXN0IGJlIGZyYWdtZW50LW9ubHkgcmVmZXJlbmNlCiAgICAgICAgICAgICBhcHBlbmRBU0NJSShi
YXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVy
KTsKLSAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgMCk7CisgICAgICAgICAg
ICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksIHJlbGF0aXZlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgJz8nOiB7CiAgICAgICAgICAgICAvLyBxdWVyeS1v
bmx5IHJlZmVyZW5jZSwgc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3Igbm9uLVVSTCByZXN1bHRzCiAg
ICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BhdGhFbmQp
LCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIu
ZGF0YSgpLCAwKTsKKyAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgcmVsYXRp
dmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSAnLyc6CkBA
IC00NzAsMTEgKzQ2MywxMSBAQCB2b2lkIEtVUkw6OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbgogICAgICAgICAgICAg
aWYgKHN0clsxXSA9PSAnLycpIHsKICAgICAgICAgICAgICAgICAvLyBuZXQtcGF0aAogICAgICAg
ICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fc2NoZW1lRW5k
ICsgMSksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFy
c2VCdWZmZXIuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5k
YXRhKCksIHJlbGF0aXZlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gYWJzLXBhdGgKICAgICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxl
ZnQoYmFzZS5tX3BvcnRFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAg
ICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgMCk7CisgICAgICAgICAgICAgICAgcGFyc2Uo
cGFyc2VCdWZmZXIuZGF0YSgpLCByZWxhdGl2ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTU1MSw3ICs1NDQsNyBAQCB2b2lkIEtVUkw6
OmluaXQoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbgogICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZlcmVu
Y2U7IHRoaXMgd2lsbCBhbHNvIGFkZCBhIG51bGwgdGVybWluYXRvcgogICAgICAgICAgICAgICAg
IHN0cm5jcHkoYnVmZmVyUG9zLCByZWxTdHJpbmdQb3MsIGJ1ZmZlclNpemUgLSAoYnVmZmVyUG9z
IC0gYnVmZmVyU3RhcnQpKTsKIAotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRh
dGEoKSwgMCk7CisgICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCByZWxh
dGl2ZSk7CiAKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RybGVuKHBhcnNlQnVmZmVyLmRhdGEo
KSkgKyAxIDw9IHBhcnNlQnVmZmVyLnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMDYxLDcgKzEwNTQsNyBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIENoYXJCdWZmZXIgYnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOwogICAgIGNvcHlB
U0NJSShzdHJpbmcuY2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlci5kYXRhKCkp
OwogICAgIGJ1ZmZlcltzdHJpbmcubGVuZ3RoKCldID0gJ1wwJzsKLSAgICBwYXJzZShidWZmZXIu
ZGF0YSgpLCAmc3RyaW5nKTsKKyAgICBwYXJzZShidWZmZXIuZGF0YSgpLCBzdHJpbmcpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgc2l6ZV90IGxlbkEsIGNv
bnN0IGNoYXIqIGIsIHNpemVfdCBsZW5CKQpAQCAtMTExOCwxOCArMTExMSwxOCBAQCBzdGF0aWMg
Ym9vbCBpc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXpl
X3Qgc2NoZW1lTGVuZ3RoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBLVVJMOjpwYXJz
ZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCit2b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmluZykK
IHsKICAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewogICAgICAgICAvLyB2YWxpZCBV
UkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/
ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxTdHJp
bmcuaXNOdWxsKCkgPyBvcmlnaW5hbFN0cmluZyA6IHVybDsKICAgICAgICAgaW52YWxpZGF0ZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcih1
cmxbMF0pKSB7CiAgICAgICAgIC8vIHNjaGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4gYWxwaGFiZXRp
YyBjaGFyYWN0ZXIKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5h
bFN0cmluZyA6IHVybDsKKyAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxTdHJpbmcuaXNOdWxs
KCkgPyBvcmlnaW5hbFN0cmluZyA6IHVybDsKICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTEzOSw3ICsxMTMyLDcgQEAgdm9pZCBLVVJMOjpwYXJzZShj
b25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAgICAgICAgIHNj
aGVtZUVuZCsrOwogCiAgICAgaWYgKHVybFtzY2hlbWVFbmRdICE9ICc6JykgewotICAgICAgICBt
X3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAg
ICBtX3N0cmluZyA9ICFvcmlnaW5hbFN0cmluZy5pc051bGwoKSA/IG9yaWdpbmFsU3RyaW5nIDog
dXJsOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MjA1LDcgKzExOTgsNyBAQCB2b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3Qg
U3RyaW5nKiBvcmlnaW5hbFN0cmluZykKICAgICAgICAgICAgIGhvc3RTdGFydCA9IHVzZXJTdGFy
dDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCi0g
ICAgICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDog
dXJsOworICAgICAgICAgICAgbV9zdHJpbmcgPSAhb3JpZ2luYWxTdHJpbmcuaXNOdWxsKCkgPyBv
cmlnaW5hbFN0cmluZyA6IHVybDsKICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTIyMSw3ICsxMjE0LDcgQEAgdm9pZCBLVVJMOjpw
YXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiAgICAg
ICAgICAgICAgICAgaG9zdEVuZCsrOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgICAgICBtX3N0cmluZyA9IG9yaWdp
bmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAgICAgICAgIG1fc3Ry
aW5nID0gIW9yaWdpbmFsU3RyaW5nLmlzTnVsbCgpID8gb3JpZ2luYWxTdHJpbmcgOiB1cmw7CiAg
ICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KQEAgLTEyNDIsNyArMTIzNSw3IEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3Qg
Y2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogCiAgICAgICAgIGlmICgh
aXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewogICAgICAgICAgICAgLy8gaW52
YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAq
b3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgICAgICBtX3N0cmluZyA9ICFvcmlnaW5hbFN0
cmluZy5pc051bGwoKSA/IG9yaWdpbmFsU3RyaW5nIDogdXJsOwogICAgICAgICAgICAgaW52YWxp
ZGF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDE3LDExICsxNDEw
LDEyIEBAIHZvaWQgS1VSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9y
aWdpbmFsU3RyaW5nKQogICAgIG1fZnJhZ21lbnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKIAog
ICAgIEFTU0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5z
aXplKCkpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSA+IDApOwogCiAgICAgLy8gSWYgd2Ug
ZGlkbid0IGVuZCB1cCBhY3R1YWxseSBjaGFuZ2luZyB0aGUgb3JpZ2luYWwgc3RyaW5nIGFuZAog
ICAgIC8vIGl0IHdhcyBhbHJlYWR5IGluIGEgU3RyaW5nLCByZXVzZSBpdCB0byBhdm9pZCBleHRy
YSBhbGxvY2F0aW9uLgotICAgIGlmIChvcmlnaW5hbFN0cmluZyAmJiBvcmlnaW5hbFN0cmluZy0+
bGVuZ3RoKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZnJhZ21lbnRFbmQpICYmIHN0cm5j
bXAoYnVmZmVyLmRhdGEoKSwgdXJsLCBtX2ZyYWdtZW50RW5kKSA9PSAwKQotICAgICAgICBtX3N0
cmluZyA9ICpvcmlnaW5hbFN0cmluZzsKKyAgICBpZiAob3JpZ2luYWxTdHJpbmcgPT0gYnVmZmVy
KQorICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nOwogICAgIGVsc2UKICAgICAgICAg
bV9zdHJpbmcgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbV9mcmFnbWVudEVuZCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuaAppbmRleCBmNjIxMTgwNGMwN2FlYzJiNjQ1YTdiYTY1NmNiMTlkYzg1ZjRl
OTc2Li44MzA0ZjA2OTI4M2JlMzgxMDRjYzYyNWIzZjFkZDdlMzA3MjA2N2Y0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTC5oCkBAIC0yMzYsNiArMjM2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKICNpZiBVU0UoR09PR0xF
VVJMKQogICAgIGZyaWVuZCBjbGFzcyBLVVJMR29vZ2xlUHJpdmF0ZTsKKyAgICB2b2lkIHBhcnNl
KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmluZyA9IFN0cmluZygp
KSB7IHBhcnNlKHVybCwgJm9yaWdpbmFsU3RyaW5nKTsgfTsKICAgICB2b2lkIHBhcnNlKGNvbnN0
IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZyk7ICAvLyBLVVJMTWFjIGNh
bGxzIHRoaXMuCiAgICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZl
cikgY29uc3Q7ICAvLyBLVVJMQ0ZOZXQgdXNlcyB0aGlzLgogICAgIEtVUkxHb29nbGVQcml2YXRl
IG1fdXJsOwpAQCAtMjQ3LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gb3B0aW1pemF0aW9u
OiBXaGVuIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0cmluZywKICAg
ICAvLyBpdCB3aWxsIHVzZSB0aGUgcGFzc2VkLWluIHN0cmluZyBpbnN0ZWFkIG9mIGFsbG9jYXRp
bmcgYSBuZXcgb25lLgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBw
YXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpOworICAg
IHZvaWQgcGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5n
ID0gU3RyaW5nKCkpOwogCiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIGJvb2wgbV9pc1ZhbGlk
IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCmluZGV4IDhiZjUw
ZTA5MWVkMWY2YjZiNmI1YmM4ZjliYmRiNjdiMDIzZGRjMzQuLmQ3OTEyMzcyMDQ0ZjQwNjlkMDY4
YjI4MGY1M2Y2ZTdjNzVmOTQ3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0tVUkxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENG
TmV0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDRlVSTFJlZiBjcmVhdGVDRlVSTEZyb21CdWZmZXIo
Y29uc3QgQ2hhckJ1ZmZlciYpOwogS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCiB7CiAgICAgaWYg
KCF1cmwpIHsKLSAgICAgICAgcGFyc2UoMCwgMCk7CisgICAgICAgIHBhcnNlKDApOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01MCw3ICs1MCw3IEBAIEtVUkw6OktVUkwoQ0ZVUkxSZWYg
dXJsKQogICAgIENGVVJMR2V0Qnl0ZXModXJsLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0
ZXMpLCBieXRlc0xlbmd0aCk7CiAgICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsKICAgICBp
ZiAoYnl0ZXNbMF0gIT0gJy8nKSB7Ci0gICAgICAgIHBhcnNlKGJ5dGVzLCAwKTsKKyAgICAgICAg
cGFyc2UoYnl0ZXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MCw3ICs2MCw3IEBA
IEtVUkw6OktVUkwoQ0ZVUkxSZWYgdXJsKQogICAgIGJ1ZmZlclszXSA9ICdlJzsKICAgICBidWZm
ZXJbNF0gPSAnOic7CiAKLSAgICBwYXJzZShidWZmZXIuZGF0YSgpLCAwKTsKKyAgICBwYXJzZShi
dWZmZXIuZGF0YSgpKTsKIH0KIAogQ0ZVUkxSZWYgY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGNvbnN0
IENoYXJCdWZmZXImIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0K
aW5kZXggMWExMTRiZmNmM2ZmZmU0MWQ1MGM2YzJhNjU3NGQxMjU5NzUyNDE2Zi4uYmMyMGYzODI4
ZmM2MzkxYjhjOWNlNDc2MzM4ODQyNzhlODgwMmY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0tVUkxNYWMubW0KQEAgLTM3LDcgKzM3LDcgQEAgZXh0ZXJuIENGVVJMUmVmIGNyZWF0ZUNG
VVJMRnJvbUJ1ZmZlcihjb25zdCBDaGFyQnVmZmVyJiBidWZmZXIpOwogS1VSTDo6S1VSTChOU1VS
TCAqdXJsKQogewogICAgIGlmICghdXJsKSB7Ci0gICAgICAgIHBhcnNlKDAsIDApOworICAgICAg
ICBwYXJzZSgwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcsNyArNDcsNyBAQCBL
VVJMOjpLVVJMKE5TVVJMICp1cmwpCiAgICAgQ0ZVUkxHZXRCeXRlcyhyZWludGVycHJldF9jYXN0
PENGVVJMUmVmPih1cmwpLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4oYnl0ZXMpLCBieXRlc0xl
bmd0aCk7CiAgICAgYnl0ZXNbYnl0ZXNMZW5ndGhdID0gJ1wwJzsKICAgICBpZiAoYnl0ZXNbMF0g
IT0gJy8nKSB7Ci0gICAgICAgIHBhcnNlKGJ5dGVzLCAwKTsKKyAgICAgICAgcGFyc2UoYnl0ZXMp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Nyw3ICs1Nyw3IEBAIEtVUkw6OktVUkwo
TlNVUkwgKnVybCkKICAgICBidWZmZXJbM10gPSAnZSc7CiAgICAgYnVmZmVyWzRdID0gJzonOwog
Ci0gICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgMCk7CisgICAgcGFyc2UoYnVmZmVyLmRhdGEoKSk7
CiB9CiAKIEtVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEzYzk2Mzg5MDE5
ZmMxZGM5YjY3MTM3NjQ1MTAzNTU3OGM0NDYwYjMuLjUzMjZlNzIzYWZlZWE2MWM5MWU5OGZmZjA0
NDIzNzc1ZWIyNDk2OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMS0xMS0yMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMcyBhcmUgZW5j
b2RlZCBpbiBVVEYtOCwgdGhlbiBkZWNvZGVkIGFzIGlmIHRoZXkgYXJlIExhdGluMQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvdXJsL2ludmFs
aWQtdXJscy11dGY4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC91cmwvaW52
YWxpZC11cmxzLXV0ZjguaHRtbDogQWRkZWQuCisgICAgICAgIE5ldyB0ZXN0IGZvciBpbnZhbGlk
IFVSTCB3aGVyZSB0aGUgVW5pY29kZSBjaGFyYWN0ZXJzIHdlcmUgbWFuZ2xlZAorICAgICAgICBi
eSB0aGUgcGFyc2luZy4KKworICAgICAgICAqIGZhc3QvdXJsL2ZpbGUtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvdXJsL2ZpbGUtaHR0cC1iYXNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
VHdvIHVybHMgd2hlcmUgZXhwZW5kZWQgYnkgdGhlaXIgYmFzZSBVUkwgYmVmb3JlIGZvdW5kIGlu
dmFsaWQuIFRoZSBwYXJ0aWFsCisgICAgICAgIHBhcnNlZCByZXN1bHQgd2FzIHNhdmVkIGFzIHRo
ZSBuZXcgVVJMLgorCisgICAgICAgICogZmFzdC91cmwvaG9zdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgIFRoZSBob3N0IG9mIHR3byB1cmxzIHdlcmUgaW52YWxpZCwgYW5kIHBhcnRpYWxseSBtb2Rp
ZmllZCBieSB0aGUgcGFyc2luZy4KKworICAgICAgICAqIGZhc3QvdXJsL2lkbmEyMDAzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgVGhlIGZpcnN0ICdodHRwOi8vd3d3Lmxvb2tvdXQubmV04qm0ODAv
JyBlbmNvZGVkIGZvciBwYXJzaW5nIGlzIGh0dHA6Ly93d3cubG9va291dC5uZXQ6Oj04MC8KKyAg
ICAgICAgYW5kIGZhaWxzIGFzIGludmFsaWQuIFRoZSBuZXcgcmVzdWx0IGRvZXMgbm90IG1vZGlm
eSB0aGUgb3JpZ2luYWwgc3RyaW5nLgorCisgICAgICAgIFRoZSB3aGl0ZXNwYWNlIGluICdodHRw
Oi8vd3d3IC5sb29rb3V0Lm5ldC8nIGNhdXNlcyB0aGUgcGFyc2luZyB0byBmYWlsIHdoZW4gcGFy
c2luZworICAgICAgICB0aGUgdXNlcm5hbWUgYmVjYXVzZSBhIHNwYWNlIGlzIG5vdCBhIFVzZXJJ
bmZvQ2hhci4KKworICAgICAgICAqIGZhc3QvdXJsL3BvcnQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICBUaGUgdW5pY29kZSBjaGFyYWN0ZXJzIHVzZWQgYXMgdGhlIHBvcnQgbnVtYmVyIHdlcmUgdHJh
bnNmb3JtZWQgZHVlIHRvCisgICAgICAgIHRoZSBlbmNvZGluZyBVVEYtOCAtPiBVbmljb2RlIHRo
cm91Z2ggdGhlIExhdGluMSBjb2RlYy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDogU2tpcCB0aGUgdGVzdCBvbiBDaHJvbWl1bSBmb3Igbm93IHNp
bmNlIEdvb2dsZSBVUkwKKyAgICAgICAgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBleHRlbmRlZCB2
ZXJzaW9uIG9mIHBhcnNlKCkuCisKIDIwMTEtMTEtMjEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PGt1Ym9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gQWRkIG1vcmUgYXBwY2FjaGUg
ZnVuY3Rpb25zIHRvIGV3a19zZXR0aW5ncy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dXJsL2ZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvZmlsZS1leHBlY3Rl
ZC50eHQKaW5kZXggZDI3NDY3MzNkNjU0NGY4OTU3ZThiMGM0M2Y4ZTYzMWI2ZDQ1MjA5MS4uYWIz
ZjdmOGM1YzMyMWZkMTdhMzIxOGJjYmEwYzQyNzRiYjEyZjdiMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC91cmwvZmlsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91
cmwvZmlsZS1leHBlY3RlZC50eHQKQEAgLTEwLDcgKzEwLDcgQEAgRkFJTCBjYW5vbmljYWxpemUo
J2ZpbGU6VU5DaG9zdC9wYXRoJykgc2hvdWxkIGJlIGZpbGU6Ly91bmNob3N0L3BhdGguIFdhcyBm
aWxlOi8KIEZBSUwgY2Fub25pY2FsaXplKCdjOlxcZm9vXFxiYXInKSBzaG91bGQgYmUgZmlsZTov
Ly9DOi9mb28vYmFyLiBXYXMgYzovZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCdDfC9mb28v
YmFyJykgc2hvdWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGZpbGU6Ly8vdG1wL21vY2sv
Q3wvZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCcvQ3xcXGZvb1xcYmFyJykgc2hvdWxkIGJl
IGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGZpbGU6Ly8vQ3wvZm9vL2Jhci4KLUZBSUwgY2Fub25p
Y2FsaXplKCcvL0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFyLiBXYXMg
ZmlsZTovL0N8L2Zvby9iYXIuCitGQUlMIGNhbm9uaWNhbGl6ZSgnLy9DfC9mb28vYmFyJykgc2hv
dWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIC8vQ3wvZm9vL2Jhci4KIFBBU1MgY2Fub25p
Y2FsaXplKCcvL3NlcnZlci9maWxlJykgaXMgJ2ZpbGU6Ly9zZXJ2ZXIvZmlsZScKIFBBU1MgY2Fu
b25pY2FsaXplKCdcXFxcc2VydmVyXFxmaWxlJykgaXMgJ2ZpbGU6Ly9zZXJ2ZXIvZmlsZScKIFBB
U1MgY2Fub25pY2FsaXplKCcvXFxzZXJ2ZXIvZmlsZScpIGlzICdmaWxlOi8vc2VydmVyL2ZpbGUn
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9maWxlLWh0dHAtYmFzZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3VybC9maWxlLWh0dHAtYmFzZS1leHBlY3RlZC50eHQK
aW5kZXggZjkxNjljZDUwODhlYjEwMTU3NGFiNGJkZmVkODYzZDA2MmM3NjMyYi4uY2UyY2IwODEx
ZTVhNjJlYjJjMzM5NjMyZDAyNjdlNmJmMWM0M2M2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC91cmwvZmlsZS1odHRwLWJhc2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdXJsL2ZpbGUtaHR0cC1iYXNlLWV4cGVjdGVkLnR4dApAQCAtMTAsNyArMTAsNyBAQCBGQUlM
IGNhbm9uaWNhbGl6ZSgnZmlsZTpVTkNob3N0L3BhdGgnKSBzaG91bGQgYmUgZmlsZTovL3VuY2hv
c3QvcGF0aC4gV2FzIGZpbGU6LwogRkFJTCBjYW5vbmljYWxpemUoJ2M6XFxmb29cXGJhcicpIHNo
b3VsZCBiZSBmaWxlOi8vL0M6L2Zvby9iYXIuIFdhcyBjOi9mb28vYmFyLgogRkFJTCBjYW5vbmlj
YWxpemUoJ0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFyLiBXYXMgaHR0
cDovL2V4YW1wbGUuY29tL21vY2svQ3wvZm9vL2Jhci4KIEZBSUwgY2Fub25pY2FsaXplKCcvQ3xc
XGZvb1xcYmFyJykgc2hvdWxkIGJlIGZpbGU6Ly8vQzovZm9vL2Jhci4gV2FzIGh0dHA6Ly9leGFt
cGxlLmNvbS9DfC9mb28vYmFyLgotRkFJTCBjYW5vbmljYWxpemUoJy8vQ3wvZm9vL2JhcicpIHNo
b3VsZCBiZSBmaWxlOi8vL0M6L2Zvby9iYXIuIFdhcyBodHRwOi8vQ3wvZm9vL2Jhci4KK0ZBSUwg
Y2Fub25pY2FsaXplKCcvL0N8L2Zvby9iYXInKSBzaG91bGQgYmUgZmlsZTovLy9DOi9mb28vYmFy
LiBXYXMgLy9DfC9mb28vYmFyLgogRkFJTCBjYW5vbmljYWxpemUoJy8vc2VydmVyL2ZpbGUnKSBz
aG91bGQgYmUgZmlsZTovL3NlcnZlci9maWxlLiBXYXMgaHR0cDovL3NlcnZlci9maWxlLgogRkFJ
TCBjYW5vbmljYWxpemUoJ1xcXFxzZXJ2ZXJcXGZpbGUnKSBzaG91bGQgYmUgZmlsZTovL3NlcnZl
ci9maWxlLiBXYXMgaHR0cDovL3NlcnZlci9maWxlLgogRkFJTCBjYW5vbmljYWxpemUoJy9cXHNl
cnZlci9maWxlJykgc2hvdWxkIGJlIGZpbGU6Ly9zZXJ2ZXIvZmlsZS4gV2FzIGh0dHA6Ly9zZXJ2
ZXIvZmlsZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdXJsL2hvc3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9zdC1leHBlY3RlZC50eHQKaW5kZXggNDNlMzhl
YmYxZjFkMjg3NGIwMDFlNzdiODM0MTkzNDkyNzhlMmRlNy4uYmQxOGM0NzI1NWNjNDY0YjNhMDNi
NGZkODk5ZTJkM2EzZGY3ODcwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9z
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaG9zdC1leHBlY3RlZC50
eHQKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIEZBSUwgY2Fub25p
Y2FsaXplKCdodHRwOi8vR29PZ0xlLkNvTS8nKSBzaG91bGQgYmUgaHR0cDovL2dvb2dsZS5jb20v
LiBXYXMgaHR0cDovL0dvT2dMZS5Db00vLgogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly9Hb28l
MjAgZ29vJTdDfC5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28lN0MlN0MuY29t
Ly4gV2FzIGh0dHA6Ly9Hb28lMjAgZ29vJTdDfC5jb20vLgotRkFJTCBjYW5vbmljYWxpemUoJ2h0
dHA6Ly9HT0/CoOOAgGdvby5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28uY29t
Ly4gV2FzIGh0dHA6Ly9nb28gIGdvby5jb20vLgorRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly9H
T0/CoOOAgGdvby5jb20vJykgc2hvdWxkIGJlIGh0dHA6Ly9nb28lMjAlMjBnb28uY29tLy4gV2Fz
IGh0dHA6Ly9HT0/CoOOAgGdvby5jb20vLgogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly9HT0/i
gIvigaDvu79nb28uY29tLycpIGlzICdodHRwOi8vZ29vZ29vLmNvbS8nCiBQQVNTIGNhbm9uaWNh
bGl6ZSgnaHR0cDovL3d3dy5mb2/jgIJiYXIuY29tLycpIGlzICdodHRwOi8vd3d3LmZvby5iYXIu
Y29tLycKIEZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8v77eQenl4LmNvbS8nKSBzaG91bGQgYmUg
aHR0cDovLyVFRiVCRiVCRHp5eC5jb20vLiBXYXMgaHR0cDovLgpAQCAtMjcsNyArMjcsNyBAQCBG
QUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovLzE5Mi4xNjguMC4xIGhlbGxvLycpIHNob3VsZCBiZSBo
dHRwOi8vMTkyLjE2OC4wLjElMjBoZQogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly/vvJDvvLjv
vYPvvJDvvI7vvJDvvJLvvJXvvJDvvI7vvJDvvJEvJykgc2hvdWxkIGJlIGh0dHA6Ly8xOTIuMTY4
LjAuMS8uIFdhcyBodHRwOi8vMHhjMC4wMjUwLjAxLy4KIFBBU1MgY2Fub25pY2FsaXplKCdodHRw
Oi8vMTkyLjE2OC4wLjI1Ny8nKSBpcyAnaHR0cDovLzE5Mi4xNjguMC4yNTcvJwogUEFTUyBjYW5v
bmljYWxpemUoJ2h0dHA6Ly9bZ29vZ2xlLmNvbV0vJykgaXMgJ2h0dHA6Ly9bZ29vZ2xlLmNvbV0v
JwotRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly/RgigvJykgc2hvdWxkIGJlIGh0dHA6Ly94bi0t
JTI4LTdlZC8uIFdhcyBodHRwOi8veG4tLSgtOHRiLy4KK0ZBSUwgY2Fub25pY2FsaXplKCdodHRw
Oi8v0YIoLycpIHNob3VsZCBiZSBodHRwOi8veG4tLSUyOC03ZWQvLiBXYXMgaHR0cDovL9GCKC8u
CiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL2dvXFxAb2dsZS5jb20vJykgaXMgJ2h0dHA6Ly9n
by9Ab2dsZS5jb20vJwogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly9nby9Ab2dsZS5jb20vJykg
aXMgJ2h0dHA6Ly9nby9Ab2dsZS5jb20vJwogRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cu
bG9va291dC5uZXQ6Oj09ODA6Oj09NDQzOjovJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cubG9va291
dC5uZXQ6OiUzRCUzRDgwOjolM0QlM0Q0NDM6Ly4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXQ6
Oj09ODA6Oj09NDQzOjovLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC91cmwvaWRuYTIw
MDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaWRuYTIwMDMtZXhwZWN0ZWQu
dHh0CmluZGV4IGZkMWRjM2U5N2ZiYzBmMzc5MTY5N2U2NjRkYzdjZTQ2OGYzZDRkNWEuLjc5MGJh
MmNlZDZkNTdhN2Q3OWM2YTAyMzJkNTkwNzU3YzlhYTY3ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvdXJsL2lkbmEyMDAzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3VybC9pZG5hMjAwMy1leHBlY3RlZC50eHQKQEAgLTE1LDggKzE1LDggQEAgRkFJTCBjYW5vbmlj
YWxpemUoJ2h0dHA6Ly93d3cubG9va291dC5uZXTvvJo4MC8nKSBzaG91bGQgYmUgaHR0cDovL3d3
dy5sb29rb3V0Lm4KIFBBU1MgY2Fub25pY2FsaXplKCdodHRwOi8vd3d34oClbG9va291dC5uZXQv
JykgaXMgJ2h0dHA6Ly93d3cuLmxvb2tvdXQubmV0LycKIFBBU1MgY2Fub25pY2FsaXplKCdodHRw
Oi8vd3d3Lmxvb2tvdXTigKduZXQvJykgaXMgJ2h0dHA6Ly93d3cueG4tLWxvb2tvdXRuZXQtNDA2
ZS8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5sb2/EuG91dC5uZXQvJykgaXMgJ2h0
dHA6Ly93d3cueG4tLWxvb291dC01YmIubmV0LycKLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8v
d3d3Lmxvb2tvdXQubmV04qm0ODAvJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cubG9va291dC5uZXQ6
OiUzRDgwLy4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXQ6Oj04MC8uCi1GQUlMIGNhbm9uaWNh
bGl6ZSgnaHR0cDovL3d3d8KgLmxvb2tvdXQubmV0LycpIHNob3VsZCBiZSBodHRwOi8vd3d3JTIw
Lmxvb2tvdXQubmV0Ly4gV2FzIGh0dHA6Ly93d3cgLmxvb2tvdXQubmV0Ly4KK0ZBSUwgY2Fub25p
Y2FsaXplKCdodHRwOi8vd3d3Lmxvb2tvdXQubmV04qm0ODAvJykgc2hvdWxkIGJlIGh0dHA6Ly93
d3cubG9va291dC5uZXQ6OiUzRDgwLy4gV2FzIGh0dHA6Ly93d3cubG9va291dC5uZXTiqbQ4MC8u
CitGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3d8KgLmxvb2tvdXQubmV0LycpIHNob3VsZCBi
ZSBodHRwOi8vd3d3JTIwLmxvb2tvdXQubmV0Ly4gV2FzIGh0dHA6Ly93d3fCoC5sb29rb3V0Lm5l
dC8uCiBGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL+GagGxvb2tvdXQubmV0LycpIHNob3VsZCBi
ZSBodHRwOi8vJUUxJTlBJTgwbG9va291dC5uZXQvLiBXYXMgaHR0cDovLgogRkFJTCBjYW5vbmlj
YWxpemUoJ2h0dHA6Ly8fbG9va291dC5uZXQvJykgc2hvdWxkIGJlIGh0dHA6Ly8lMUZsb29rb3V0
Lm5ldC8uIFdhcyBodHRwOi8vH2xvb2tvdXQubmV0Ly4KIEZBSUwgY2Fub25pY2FsaXplKCdodHRw
Oi8vbG9va9udb3V0Lm5ldC8nKSBzaG91bGQgYmUgaHR0cDovL2xvb2slREIlOURvdXQubmV0Ly4g
V2FzIGh0dHA6Ly4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWQtdXJs
cy11dGY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdXJsL2ludmFsaWQtdXJscy11
dGY4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2EyNzU4MTM3OGZiMzNlYTU4YzAwMzRjYzU0
ZjU2Zjg1MjcxYWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52
YWxpZC11cmxzLXV0ZjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgZW5zdXJl
IHdlIGRvIG5vdCBtZXNzIHVwIHRoZSBieXRlcyB3aGVuIGFuIFVSTCBpcyBwYXJ0aWFsbHkgcGFy
c2VkIGFuZCBpcyBpbnZhbGlkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBl
Y3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNy
YyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlzIGV4cGVjdGVk
CitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BBU1Mgc3JjIGlz
IGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhwZWN0ZWQKK1BB
U1Mgc3JjIGlzIGV4cGVjdGVkCitQQVNTIHNyYyBpcyBleHBlY3RlZAorUEFTUyBzcmMgaXMgZXhw
ZWN0ZWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3VybC9pbnZhbGlkLXVybHMtdXRmOC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOTkyNDRkODk2MThkYWZhMmM2MmU2OTM2MmYxMTJiY2IxNTEzMmYxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC91cmwvaW52YWxpZC11cmxzLXV0ZjguaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Cis8IS0tIFNldCB0aGUgYmFzZSBzbyB0aGF0IHRoZSBjdXJyZW50
IFVSTCBkb2VzIG5vdCBhZmZlY3QgdGhlIHRlc3RzLiAtLT4KKzxiYXNlIGhyZWY9IiI+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIGVuc3VyZSB3ZSBkbyBu
b3QgbWVzcyB1cCB0aGUgYnl0ZXMgd2hlbiBhbiBVUkwgaXMgcGFydGlhbGx5IHBhcnNlZCBhbmQg
aXMgaW52YWxpZC4iKQorCisvLyBUaG9zZSBhcmUgYWxsIGludmFsaWQgVVJMcy4gVGhleSBzaG91
bGQgbm90IGJlIHBhcnRpYWxseSBtb2RpZmllZCBieSB0aGUgcGFyc2VyLgordmFyIHRlc3RTZXQg
PSBbCisgICAgJ2ZvbzovL3TDqnRlIMOgIHTDqnRlQGhvc3QvJywKKyAgICAnZm9vOi8vdXNlcjp0
w6p0ZSDDoCB0w6p0ZUBob3N0LycsCisgICAgJyAgICBmb286Ly88PkBob3N0LyAgICAnLAorICAg
ICcgICAgZm9vOi8vdXNlcjo8PkBob3N0LyAgICAnLAorICAgICdmb286Ly91c2VyOnBhc3N3b3Jk
QFt4eHh4eF0vdMOqdGUgw6AgdMOqdGUvJywKKyAgICAvLyBUaGUgJz8nIGlzIGEgcGF0aCBzZXBh
cmF0b3IgYW5kIG1ha2Ugc3VyZSB0aGUgaG9zdG5hbWUgaXMgbm90IGVuY29kZWQgaW4gcHVuaWNv
ZGUuIFRoZSBob3N0bmFtZSBpcyBhbiBpbnZhbGlkIElQVjYgaG9zdG5hbWUuCisgICAgJ2Zvbzov
L3VzZXI6cGFzc3dvcmRAWz90w6p0ZSDDoCB0w6p0ZS8nLAorICAgICdmb286Ly91c2VyOnBhc3N3
b3JkQFs/dMOqdGUgw6AgdMOqdGVdLycsCisgICAgJ2ZvbzovL3VzZXI6cGFzc3dvcmRAaG9zdDp0
w6p0ZSDDoCB0w6p0ZS8nLAorICAgICdmb286Ly91c2VyOnBhc3N3b3JkQGhvc3Q6ODB0w6p0ZSDD
oCB0w6p0ZScsCisgICAgJ2ZvbzovL3VzZXI6cGFzc3dvcmRAaG9zdDp0w6p0ZSDDoCB0w6p0ZS8n
LAorICAgICdmb286Ly91c2VyOnBhc3N3b3JkQGhvc3Q6ODB0w6p0ZSDDoCB0w6p0ZScsCisgICAg
Ly8gVGhlIHNjaGVtZXMgIndzOiIsICJmdHA6IiwgImh0dHA6IiwgImh0dHBzOiIsICJnb3RoZXI6
IiB0YWtlIGEgc2hvcnRjdXQgZHVyaW5nIHBhcnNpbmcgc28gd2UgdGVzdCB0aGVtIHNlcGFyYXRl
bHkuCisgICAgJ3dzOi90w6p0ZScsCisgICAgJ2Z0cDovdMOqdGUnLAorICAgICdodHRwOi90w6p0
ZScsCisgICAgJ2h0dHBzOi90w6p0ZScsCisgICAgJ2dvcGhlcjovdMOqdGUnLAorXTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCB0ZXN0U2V0Lmxlbmd0aDsgKytpKSB7CisgICAgc3JjID0gY2Fub25p
Y2FsaXplKHRlc3RTZXRbaV0pOworCWV4cGVjdGVkID0gdGVzdFNldFtpXS50cmltKCk7CisJc2hv
dWxkQmUoJ3NyYycsICdleHBlY3RlZCcpOworfQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3VybC9wb3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdXJsL3BvcnQtZXhw
ZWN0ZWQudHh0CmluZGV4IDlhMTZlZTNjMzUyMmM3Y2U5NzRhYTFiOWM5YTQyMmRkZmYzZTZjZTYu
LmQwOGRkOGY3N2I1OTA3MDA3NTYwNmJmMDM0MzJkYmZkYzhjYmE1ZTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvdXJsL3BvcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvdXJsL3BvcnQtZXhwZWN0ZWQudHh0CkBAIC04LDggKzgsOCBAQCBQQVNTIGNhbm9uaWNhbGl6
ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTotMi8nKSBpcyAnaHR0cDovL3d3dy5leGFtcGxlLmNv
bTotMi8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTo4MC8nKSBp
cyAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8nCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3
dy5leGFtcGxlLmNvbTo4MDgwLycpIGlzICdodHRwOi8vd3d3LmV4YW1wbGUuY29tOjgwODAvJwog
UEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb206LycpIGlzICdodHRwOi8v
d3d3LmV4YW1wbGUuY29tLycKLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUu
Y29tOuGNqS8nKSBzaG91bGQgYmUgaHR0cDovL3d3dy5leGFtcGxlLmNvbTolRTElOEQlQTkvLiBX
YXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbTrDocKNwqkvLgotRkFJTCBjYW5vbmljYWxpemUoJ2h0
dHA6Ly93d3cuZXhhbXBsZS5jb2068J2fli8nKSBzaG91bGQgYmUgaHR0cDovL3d3dy5leGFtcGxl
LmNvbTolRjAlOUQlOUYlOTYvLiBXYXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbTrDsMKdwp/Cli8u
CitGQUlMIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbTrhjakvJykgc2hvdWxk
IGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206JUUxJThEJUE5Ly4gV2FzIGh0dHA6Ly93d3cuZXhh
bXBsZS5jb2064Y2pLy4KK0ZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUuY29t
OvCdn5YvJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb206JUYwJTlEJTlGJTk2Ly4g
V2FzIGh0dHA6Ly93d3cuZXhhbXBsZS5jb2068J2fli8uCiBQQVNTIGNhbm9uaWNhbGl6ZSgnZm9v
YmFyOi8vd3d3LmV4YW1wbGUuY29tOjgwLycpIGlzICdmb29iYXI6Ly93d3cuZXhhbXBsZS5jb206
ODAvJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggZWE1MzIz
MTYzYjNiNDMzYjI0MDAxY2U2Y2Y5NmFkZTdhZmIyZWJiZC4uZmE4YTE3ZjUwMTc1NDBhZDQwMjUx
ZjI1MWQyOTlmYzZmYzkwNzIzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMzkxNCwzICszOTE0LDYgQEAgQlVHV0s3
Mjc2MSA6IGFjY2Vzc2liaWxpdHkvYW5vbnltb3VzLXJlbmRlci1ibG9jay1pbi1jb250aW51YXRp
b24tY2F1c2VzLWNyYXNoLmgKIAogQlVHV0s3Mjc1OCA6IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8t
Y29va2llLmh0bWwgPSBQQVNTIFRJTUVPVVQKIEJVR1dLNzI3NTggOiBodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXJlZmVyZXIuaHRtbCA9IFBBU1MgVElNRU9VVAorCisvLyBOZWVkcyBhIHJlYmFzZWxp
bmUgc2luY2UgaXQgZmFpbHMgb24gQ2hyb21pdW0uCitCVUdXSzcxNzU4IDogZmFzdC91cmwvaW52
YWxpZC11cmxzLXV0ZjguaHRtbCA9IFBBU1MgVEVYVAo=
</data>
<flag name="review"
          id="115461"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="115462"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>