<?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>53205</bug_id>
          
          <creation_ts>2011-01-26 17:07:41 -0800</creation_ts>
          <short_desc>Sketch out new XSS filter design (disabled by default)</short_desc>
          <delta_ts>2011-01-28 14:37:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>49845</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>340601</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-26 17:07:41 -0800</bug_when>
    <thetext>Sketch out new XSS filter design (disabled by default)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340609</commentid>
    <comment_count>1</comment_count>
      <attachid>80272</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-26 17:12:59 -0800</bug_when>
    <thetext>Created attachment 80272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340876</commentid>
    <comment_count>2</comment_count>
      <attachid>80272</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-27 08:23:06 -0800</bug_when>
    <thetext>Comment on attachment 80272
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:3102
&gt; +		977E2E0D12F0FC9C00C13379 /* create-html-entity-table in Resources */ = {isa = PBXBuildFile; fileRef = 977E2E0A12F0FC9C00C13379 /* create-html-entity-table */; };

Did you intend for this change to be part of this patch?

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:9493
&gt; +		977E2E0A12F0FC9C00C13379 /* create-html-entity-table */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = &quot;create-html-entity-table&quot;; path = &quot;parser/create-html-entity-table&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };

Ditto.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:15930
&gt; +				977E2E0A12F0FC9C00C13379 /* create-html-entity-table */,

Ditto.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:22579
&gt; +				977E2E0D12F0FC9C00C13379 /* create-html-entity-table in Resources */,

Ditto.

&gt; Source/WebCore/html/parser/XSSFilter.cpp:2
&gt; + * Copyright (C) 2010 Adam Barth. All Rights Reserved.

Nit: 2010 =&gt; 2011.

&gt; Source/WebCore/html/parser/XSSFilter.cpp:40
&gt; +namespace {

Out of curiosity, how did you come to the decision to use an anonymous namespace as opposed to declaring all of the functions in this namespace as static?

&gt; Source/WebCore/html/parser/XSSFilter.cpp:45
&gt; +    if (length &gt; 7)

Where does the 7 come from? Notice, &quot;http://&quot; is seven characters in length. Won&apos;t this lead to false positives?

Consider a web page search.php with &lt;script src=&quot;http://www.example.com/script.js&quot;&gt;&lt;/script&gt;. Suppose we request search.php?q=http://www.apple.com. Then we will clear the value of the src attribute of the &lt;script&gt; in decodeURL() since &quot;http://&quot; is a substring of &quot;http://www.apple.com&quot;; =&gt; we won&apos;t load/execute the external script? This is a false positive.

Moreover, this changes seems like it would also cause false positives in other HTML tags, including &lt;img&gt; and &lt;base&gt;.

&gt; Source/WebCore/html/parser/XSSFilter.cpp:52
&gt; +    if (name.size() &lt; 5)

Where does the 5 come from? I take it that this was chosen with respect to the shortest onX attribute, oncut. Hence, I would suggest we have a comment that describes how we chose 5.

&gt; Source/WebCore/html/parser/XSSFilter.cpp:91
&gt; +    HTMLToken::AttributeList::const_iterator iter = token.attributes().begin()

You&apos;re missing a semicolon at the end of this line.

&gt; Source/WebCore/html/parser/XSSFilter.cpp:104
&gt; +    // FIXME: We should grab one character before the name also.

OK; If we consider at least one or more characters that precede the attribute that will reduce the number of false positives with respect to matching the substring &quot;http://&quot; (without quotes).

&gt; Source/WebCore/html/parser/XSSFilter.h:2
&gt; + * Copyright (C) 2010 Adam Barth. All Rights Reserved.

Nit: 2010 =&gt; 2011.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340912</commentid>
    <comment_count>3</comment_count>
      <attachid>80272</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-27 10:20:48 -0800</bug_when>
    <thetext>Comment on attachment 80272
Patch

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

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:3102
&gt;&gt; +		977E2E0D12F0FC9C00C13379 /* create-html-entity-table in Resources */ = {isa = PBXBuildFile; fileRef = 977E2E0A12F0FC9C00C13379 /* create-html-entity-table */; };
&gt; 
&gt; Did you intend for this change to be part of this patch?

Probably not.  :)

&gt;&gt; Source/WebCore/html/parser/XSSFilter.cpp:40
&gt;&gt; +namespace {
&gt; 
&gt; Out of curiosity, how did you come to the decision to use an anonymous namespace as opposed to declaring all of the functions in this namespace as static?

I always forget which one we&apos;re supposed to use.  All I remember is that whichever one I pick, someone tells me I picked the wrong one.  ):

&gt;&gt; Source/WebCore/html/parser/XSSFilter.cpp:45
&gt;&gt; +    int length = attribute.m_valueRange.m_end - attribute.m_valueRange.m_start;
&gt;&gt; +    if (length &gt; 7)
&gt; 
&gt; Where does the 7 come from? Notice, &quot;http://&quot; is seven characters in length. Won&apos;t this lead to false positives?
&gt; 
&gt; Consider a web page search.php with &lt;script src=&quot;http://www.example.com/script.js&quot;&gt;&lt;/script&gt;. Suppose we request search.php?q=http://www.apple.com. Then we will clear the value of the src attribute of the &lt;script&gt; in decodeURL() since &quot;http://&quot; is a substring of &quot;http://www.apple.com&quot;; =&gt; we won&apos;t load/execute the external script? This is a false positive.
&gt; 
&gt; Moreover, this changes seems like it would also cause false positives in other HTML tags, including &lt;img&gt; and &lt;base&gt;.

I just made up the number 7.  I can remove it from this patch, if you like.  It&apos;s certainly putting the cart in front of the horse at this point.

w.r.t. your comments about false positives, my plan is to use more context than we&apos;ve used previously.  In your script example, the snippet we&apos;ll be looking for it &apos; src=&quot;http://&apos; (or however much of the attribute value we grab).  My hope is that will help a lot to reduce false positives.  We can do this easily in this design because we&apos;re integrated with the parser and we can get the characters in the input for each token (and each part of the token).

&gt;&gt; Source/WebCore/html/parser/XSSFilter.cpp:52
&gt;&gt; +    if (name.size() &lt; 5)
&gt; 
&gt; Where does the 5 come from? I take it that this was chosen with respect to the shortest onX attribute, oncut. Hence, I would suggest we have a comment that describes how we chose 5.

Yeah, 5 matches what IE does here too.  Definitely worth explaining!

&gt;&gt; Source/WebCore/html/parser/XSSFilter.cpp:91
&gt;&gt; +    HTMLToken::AttributeList::const_iterator iter = token.attributes().begin()
&gt; 
&gt; You&apos;re missing a semicolon at the end of this line.

Wow, how does that even compile?

&gt;&gt; Source/WebCore/html/parser/XSSFilter.cpp:104
&gt;&gt; +    // FIXME: We should grab one character before the name also.
&gt; 
&gt; OK; If we consider at least one or more characters that precede the attribute that will reduce the number of false positives with respect to matching the substring &quot;http://&quot; (without quotes).

We can&apos;t take too many characters before the name because then we won&apos;t catch attribute splitting:

&lt;button id=$foo&gt;

where $foo=&quot; onclick=alert(1)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341053</commentid>
    <comment_count>4</comment_count>
      <attachid>80364</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-27 14:27:20 -0800</bug_when>
    <thetext>Created attachment 80364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341436</commentid>
    <comment_count>5</comment_count>
      <attachid>80364</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-01-28 07:50:56 -0800</bug_when>
    <thetext>Comment on attachment 80364
Patch

Thanks for making the changes. This looks good to me.
r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341545</commentid>
    <comment_count>6</comment_count>
      <attachid>80364</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 11:16:05 -0800</bug_when>
    <thetext>Comment on attachment 80364
Patch

Thanks Dan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341548</commentid>
    <comment_count>7</comment_count>
      <attachid>80364</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-28 11:17:17 -0800</bug_when>
    <thetext>Comment on attachment 80364
Patch

Rejecting attachment 80364 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-8&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
eeded at 15969 (offset 2 lines).
Hunk #4 succeeded at 22454 with fuzz 1 (offset 4 lines).
Hunk #5 succeeded at 25151 (offset 4 lines).
patching file Source/WebCore/html/parser/HTMLDocumentParser.cpp
patching file Source/WebCore/html/parser/HTMLDocumentParser.h
patching file Source/WebCore/html/parser/XSSFilter.cpp
patching file Source/WebCore/html/parser/XSSFilter.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Daniel Bates&apos;, u&apos;--for...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7606385</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341654</commentid>
    <comment_count>8</comment_count>
      <attachid>80483</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 12:41:42 -0800</bug_when>
    <thetext>Created attachment 80483
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341656</commentid>
    <comment_count>9</comment_count>
      <attachid>80483</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-28 12:44:17 -0800</bug_when>
    <thetext>Comment on attachment 80483
Patch for landing

Rejecting attachment 80483 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
504.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/WebCore.vcproj/WebCore.vcproj.rej
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
patching file Source/WebCore/html/parser/HTMLDocumentParser.cpp
patching file Source/WebCore/html/parser/HTMLDocumentParser.h
patching file Source/WebCore/html/parser/XSSFilter.cpp
patching file Source/WebCore/html/parser/XSSFilter.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/7651074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341683</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-28 13:29:46 -0800</bug_when>
    <thetext>Committed r76980: &lt;http://trac.webkit.org/changeset/76980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341747</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 14:37:40 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76980 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80272</attachid>
            <date>2011-01-26 17:12:59 -0800</date>
            <delta_ts>2011-01-27 14:27:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53205-20110126171258.patch</filename>
            <type>text/plain</type>
            <size>20619</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IGRjYjEwMGZjZDhjZTZkNDQwYmY3NWUzOTE1YWUzZjBjOTg0MzUyMWMu
LjRmZDZlYTViOTI5MzYwMjk4MjUwMTJlMTg4NmNkYzA4ODQxMjJkOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtMzQ2LDYgKzM0Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCWh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIv
VGV4dERvY3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJz
ZXIuY3BwIFwKKwlodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwIFwKIAlcCiAJaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAJXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5Mzc5
M2U0MTBkNzYzZWZiY2QxOTIzZTYwNjk0ODUxMzliYTM1MjhjLi40YjdjOGVjYzhkOTI4MjA5YzI1
MWVhNjk4YWExZTEzYWVmZDhmYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0Nyw2ICsx
MTQ3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKICAg
ICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAKKyAgICBodG1sL3BhcnNlci9Y
U1NGaWx0ZXIuY3BwCiAKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmODZjNTAzNGYzNGZmMDBjZWFmMjA2ZmFmNWM1NjhhMWZmOWI3ZmE0Li4z
MjhkN2UzODE4M2E0MjYzOGMxNTNiMjJmMWVjZjkyYzc2MTA4MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0y
LDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAg
ICAgICBTa2V0Y2ggb3V0IG5ldyBYU1MgZmlsdGVyIGRlc2lnbiAoZGlzYWJsZWQgYnkgZGVmYXVs
dCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjA1
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgYmFzaWMgc2tldGNoIG9mIHRoZSBuZXcgWFNT
IGZpbHRlciBkZXNpZ24uICBSYXRoZXIKKyAgICAgICAgdGhhbiB3YXRjaGluZyBzY3JpcHRzIGFz
IHRoZXkgZXhlY3V0ZSwgaW4gdGhpcyBkZXNpZ24sIHdlIHdhdGNoIHRva2VucworICAgICAgICBl
bWl0dGVkIGJ5IHRoZSB0b2tlbml6ZXIuICBXZSB0aGVuIG1hcCB0aGUgdG9rZW5zIGRpcmVjdGx5
IGJhY2sgaW50bworICAgICAgICBpbnB1dCBjaGFyYWN0ZXJzLCB3aGljaCBsZXRzIHVzIHNraXAg
YWxsIHRoZSBjb21wbGljYXRlZCBsb2dpYyByZWxhdGVkCisgICAgICAgIHRvIEhUTUwgZW50aXRp
ZXMgYW5kIGRvdWJsZS1kZWNvZGluZyBvZiBKYXZhU2NyaXB0IFVSTHMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBjb250YWlucyBvbmx5IHRoZSBiYXJlIGVzc2VudGlhbGx5IG1hY2hpbmVyeS4gIEkn
bGwgYWRkIG1vcmUKKyAgICAgICAgaW4gZnV0dXJlIHBhdGNoZXMgYW5kIGV2ZW50dWFsbHkgcmVt
b3ZlIHRoZSBwcmV2aW91cyBjb2RlIG9uY2UgdGhpcworICAgICAgICBjb2RlIGlzIHVwIGFuZCBy
dW5uaW5nIGNvcnJlY3RseS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c291cmNlRm9yVG9rZW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL1hTU0ZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0Zp
bHRlci5oOiBBZGRlZC4KKworMjAxMS0wMS0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEdl
bmVyYWxpemUgdGhlIG1lY2hhbmlzbSB2aWV3LXNvdXJjZSB1c2VzIHRvIHJlbWVtYmVyIHRoZSBz
b3VyY2UgZm9yIGFuIEhUTUxUb2tlbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTMyMDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmZmYjFhYWYw
Y2RkYjc2ODU2YjViYWIyZmYyZmJhMDUwZDg2NGVkLi43MTUwMmM2OTcyM2E0MmZmMDE1ZGEwMmFi
MTMzZTI2ZWU0NGFmZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTg4MCw2ICsxODgwLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0
RG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdT
b3VyY2VQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0Vmlld1Nv
dXJjZVBhcnNlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYTQ0ZWY2OTI2
ZjNmMzA5MzQyM2M1NGMxNmUyZWI4MDYxMDRiNzljLi4wN2ZjM2JmYzUxYzY3M2FiN2QyMGQ1Mjk5
NzA2Y2IyYTNkNWM0ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDAxLDYgKzIwMDEsOCBAQAog
ICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oJywKICAgICAgICAg
ICAgICdodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmgnLAorICAgICAgICAgICAgJ2h0bWwv
cGFyc2VyL1hTU0ZpbHRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1hTU0ZpbHRl
ci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwJywK
ICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGRh
MTYzNmRlZTZhYzI3ZDc3NDlmZDI3MzFkOWNkZTY1ZTA5MzVhYjYuLjZmNDA5N2MzNWM2MTdkMDQ0
ZTVlMWQyMzQyMWYyY2RjMjFiYTBhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDM5LDYgKzEwMzks
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAgXAogICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGh0bWwv
cGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcCBcCisgICAgaHRtbC9wYXJzZXIvWFNTRmls
dGVyLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAgICAg
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcCBcCkBAIC0xOTM5LDYgKzE5NDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
IFwKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oIFwKKyAgICBodG1sL3Bh
cnNlci9YU1NGaWx0ZXIuaCBcCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBhMDAzYzRmODZlMDhkM2I1ZGQzMjUyODY0ZGQwMDg5ODU1MTBiZjBhLi40NzRiNzVk
N2Y4MzhiNTQwNDk2NGZlZDFjYzlkN2U4OTQzNmI4OTRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTU1MDAsNiArNTU1MDAsMTQgQEAKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxUZXh0Vmlld1NvdXJjZVBhcnNlci5oIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxwYXJzZXJcWFNTRmlsdGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXFhTU0ZpbHRlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ic2hhZG93Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk2MGIyNWI0OWZiMjg4YTY2ZjU3NWUyNDk4MjNiNGNmMjI1NTZmYzcuLmIyYTU1ZmExZDYz
YTBkODZiODEzZTNiNzE1ZDJkMDc3NjZjZDJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwOTksNiArMzA5OSw5IEBACiAJ
CTk3N0IzODdBMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3QjM4NjExMjI4ODNF
OTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggKi87IH07CiAJCTk3N0UyRENEMTJG
MEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyog
SFRNTFNvdXJjZVRyYWNrZXIuY3BwICovOyB9OwogCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkg
LyogSFRNTFNvdXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3N0UyRENDMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tl
ci5oICovOyB9OworCQk5NzdFMkUwRDEyRjBGQzlDMDBDMTMzNzkgLyogY3JlYXRlLWh0bWwtZW50
aXR5LXRhYmxlIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzdFMkUwQTEyRjBGQzlDMDBDMTMzNzkgLyogY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlICov
OyB9OworCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBCMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwICovOyB9OworCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMz
NzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggKi87IH07CiAJ
CTk3OUY0M0QzMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0
NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQx
MDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAv
KiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzg0ODMxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVu
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNwcCAqLzsg
fTsKQEAgLTk0ODcsNiArOTQ5MCw5IEBACiAJCTk3N0IzODYxMTIyODgzRTkwMEI4MUZGOCAvKiBI
VE1MVmlld1NvdXJjZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBI
VE1MVmlld1NvdXJjZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0UyRENCMTJGMEUyODMwMEMxMzM3
OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBIVE1MU291cmNlVHJhY2tlci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRy
YWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkRDQzEyRjBFMjgz
MDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MU291cmNlVHJh
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzdFMkUwQTEyRjBGQzlDMDBD
MTMzNzkgLyogY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
ICJjcmVhdGUtaHRtbC1lbnRpdHktdGFibGUiOyBwYXRoID0gInBhcnNlci9jcmVhdGUtaHRtbC1l
bnRpdHktdGFibGUiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzdFMkUwQjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFhTU0ZpbHRlci5jcHA7IHBhdGggPSBwYXJzZXIvWFNTRmlsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYU1NGaWx0ZXIuaDsg
cGF0aCA9IHBhcnNlci9YU1NGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAv
KiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
Qzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwOyBwYXRo
ID0gcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTkyMSw2ICsxNTkyNyw3IEBACiAJCTk3QzFGNTUxMTIyODU1ODgwMEVERTYxNiAv
KiBwYXJzZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTk3N0UyRTBBMTJGMEZDOUMwMEMxMzM3OSAvKiBjcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgKi8s
CiAJCQkJOTc3QjM4NDkxMjI4ODNFOTAwQjgxRkY4IC8qIENTU1ByZWxvYWRTY2FubmVyLmNwcCAq
LywKIAkJCQk5NzdCMzg0QTEyMjg4M0U5MDBCODFGRjggLyogQ1NTUHJlbG9hZFNjYW5uZXIuaCAq
LywKIAkJCQk5NzdCMzg0QjEyMjg4M0U5MDBCODFGRjggLyogSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwICovLApAQCAtMTU5NjMsNiArMTU5NzAsOCBAQAogCQkJCTk3QkM4NDgyMTIzNkZEOTMwMDBD
NjE2MSAvKiBUZXh0RG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk5N0JDODRBMjEyMzcwREM3MDAw
QzYxNjEgLyogVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLAogCQkJCTk3QkM4NEEzMTIzNzBE
QzgwMDBDNjE2MSAvKiBUZXh0Vmlld1NvdXJjZVBhcnNlci5oICovLAorCQkJCTk3N0UyRTBCMTJG
MEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwICovLAorCQkJCTk3N0UyRTBDMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gcGFyc2VyOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyNDQ0LDYgKzIyNDUzLDcgQEAKIAkJCQk0RjJE
MjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMzRGNUFCMTJFRTM0M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3RTJEQ0UxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTY2LDYgKzIyNTc2LDcgQEAKIAkJCQk4NTEzNkNBODBB
RUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAog
CQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5w
bmcgaW4gUmVzb3VyY2VzICovLAorCQkJCTk3N0UyRTBEMTJGMEZDOUMwMEMxMzM3OSAvKiBjcmVh
dGUtaHRtbC1lbnRpdHktdGFibGUgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUxNDAsNiArMjUxNTEs
NyBAQAogCQkJCUJDOEFFMzRFMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJEQ0QxMkYwRTI4MzAwQzEzMzc5IC8q
IEhUTUxTb3VyY2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3N0UyRTBFMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2MDcyZTQ1
YmVlMTA3ODU2ZGYzODFjNmNmYzJiYTgwMjMwM2MxZWYxLi43YzIyM2IyMjNlNmJiMmQyMDE4YzBl
NzhhNDJmZWQ2YzJmMWM5OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgSFRNTERvY3VtZW50UGFy
c2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBv
cnRFcnJvcnMKICAgICAsIG1fc2NyaXB0UnVubmVyKEhUTUxTY3JpcHRSdW5uZXI6OmNyZWF0ZShk
b2N1bWVudCwgdGhpcykpCiAgICAgLCBtX3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3Jl
YXRlKHRoaXMsIGRvY3VtZW50LCByZXBvcnRFcnJvcnMsIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtz
KGRvY3VtZW50KSkpCiAgICAgLCBtX3BhcnNlclNjaGVkdWxlcihIVE1MUGFyc2VyU2NoZWR1bGVy
OjpjcmVhdGUodGhpcykpCisgICAgLCBtX3hzc0ZpbHRlcih0aGlzKQogICAgICwgbV9lbmRXYXNE
ZWxheWVkKGZhbHNlKQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZlbCgwKQogewpAQCAtOTIsNiAr
OTMsNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZy
YWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udAogICAgIDogU2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2Vu
aXplcjo6Y3JlYXRlKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1bWVudCgp
KSkpCiAgICAgLCBtX3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGZy
YWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgdXNlUHJlSFRNTDVQ
YXJzZXJRdWlya3MoZnJhZ21lbnQtPmRvY3VtZW50KCkpKSkKKyAgICAsIG1feHNzRmlsdGVyKHRo
aXMpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xl
dmVsKDApCiB7CkBAIC0yMzIsNiArMjM0LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1
bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgbV9zb3VyY2VUcmFja2VyLmVuZChtX2lucHV0LCBtX3Rva2VuKTsKIAorICAgICAgICBt
X3hzc0ZpbHRlci5maWx0ZXJUb2tlbihtX3Rva2VuKTsKKwogICAgICAgICBtX3RyZWVCdWlsZGVy
LT5jb25zdHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFy
KCk7CiAKQEAgLTQwMyw2ICs0MDcsMTEgQEAgYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmluU2Ny
aXB0RXhlY3V0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JpcHRSdW5uZXItPmlzRXhlY3V0
aW5nU2NyaXB0KCk7CiB9CiAKK1N0cmluZyBIVE1MRG9jdW1lbnRQYXJzZXI6OnNvdXJjZUZvclRv
a2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgcmV0dXJuIG1fc291cmNlVHJhY2tl
ci5zb3VyY2VGb3JUb2tlbih0b2tlbik7Cit9CisKIGludCBIVE1MRG9jdW1lbnRQYXJzZXI6Omxp
bmVOdW1iZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3Rva2VuaXplci0+bGluZU51bWJlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApp
bmRleCA3OGY2MTM2ODRiYjYzZDhhYzQ2MDhmY2FlZjY2ZTE0ZTJjNjM0NWRhLi5lOTdjMWIzZWY3
NDczZGYzNmU4YjgyN2YxNzQwNjYyZTgzZmMyOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmlu
Zy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiWFNTRmlsdGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Miw2ICs3Myw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhEb2N1bWVu
dCopOwogCiAgICAgSFRNTFRva2VuaXplciogdG9rZW5pemVyKCkgY29uc3QgeyByZXR1cm4gbV90
b2tlbml6ZXIuZ2V0KCk7IH0KKyAgICBTdHJpbmcgc291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRv
a2VuJik7CiAKICAgICB2aXJ0dWFsIFRleHRQb3NpdGlvbjAgdGV4dFBvc2l0aW9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRTY2hlZHVsZWRUYXNrcygpOwpAQCAtMTQzLDYgKzE0
NSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEhUTUxQcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2Fk
U2Nhbm5lcjsKICAgICBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gbV9wYXJzZXJTY2hlZHVs
ZXI7CiAgICAgSFRNTFNvdXJjZVRyYWNrZXIgbV9zb3VyY2VUcmFja2VyOworICAgIFhTU0ZpbHRl
ciBtX3hzc0ZpbHRlcjsKIAogICAgIGJvb2wgbV9lbmRXYXNEZWxheWVkOwogICAgIHVuc2lnbmVk
IG1fd3JpdGVOZXN0aW5nTGV2ZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YTA1MTU4NWRiNWQxYTk2ZjUxNzM1YjYzOWE5MGZjMTQ0NzQ5NDUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVy
LmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBZGFtIEJh
cnRoLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWFNTRmlsdGVyLmgi
CisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5o
IgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29k
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKKy8vIFRoaXMgcHJlcHJvY2Vz
c3NvciBtYWNybyBpcyBhIHRlbXBvcmFyeSBzY2FmZm9sZCB3aGlsZSB0aGlzIGNvZGUgaXMgc3Rp
bGwgYW4gZXhwZXJpbWVudC4KKyNkZWZpbmUgWFNTX0RFVEVDVE9SX0VOQUJMRUQgMAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisKK2ludCBzbmlwcGV0TGVuZ3RoKGNvbnN0
IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUpCit7CisgICAgaW50IGxlbmd0aCA9IGF0
dHJpYnV0ZS5tX3ZhbHVlUmFuZ2UubV9lbmQgLSBhdHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fc3Rh
cnQ7CisgICAgaWYgKGxlbmd0aCA+IDcpCisgICAgICAgIHJldHVybiA3OworICAgIHJldHVybiBs
ZW5ndGg7Cit9CisKK2Jvb2wgaXNOYW1lT2ZTY3JpcHRDYXJyeWluZ0F0dHJpYnV0ZShjb25zdCBW
ZWN0b3I8VUNoYXIsIDMyPiYgbmFtZSkKK3sKKyAgICBpZiAobmFtZS5zaXplKCkgPCA1KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWVbMF0gIT0gJ28nICYmIG5hbWVbMF0gIT0g
J08nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWVbMV0gIT0gJ24nICYmIG5h
bWVbMF0gIT0gJ04nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK1N0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZW5jb2RpbmcpCit7CisgICAgU3RyaW5nIHdvcmtpbmdTdHJpbmcgPSBzdHJpbmc7Cisg
ICAgd29ya2luZ1N0cmluZy5yZXBsYWNlKCcrJywgJyAnKTsKKyAgICB3b3JraW5nU3RyaW5nID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHdvcmtpbmdTdHJpbmcpOworICAgIENTdHJpbmcgd29y
a2luZ1N0cmluZ1VURjggPSB3b3JraW5nU3RyaW5nLnV0ZjgoKTsKKyAgICBTdHJpbmcgZGVjb2Rl
ZFN0cmluZyA9IGVuY29kaW5nLmRlY29kZSh3b3JraW5nU3RyaW5nVVRGOC5kYXRhKCksIHdvcmtp
bmdTdHJpbmdVVEY4Lmxlbmd0aCgpKTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWNl
c3Nhcnk/CisgICAgaWYgKGRlY29kZWRTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
d29ya2luZ1N0cmluZzsKKyAgICByZXR1cm4gZGVjb2RlZFN0cmluZzsKK30KKworfQorCitYU1NG
aWx0ZXI6OlhTU0ZpbHRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKKyAgICA6IG1fcGFy
c2VyKHBhcnNlcikKK3sKKyAgICBBU1NFUlQobV9wYXJzZXIpOworfQorCit2b2lkIFhTU0ZpbHRl
cjo6ZmlsdGVyVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKK3sKKyNpZiAhWFNTX0RFVEVDVE9SX0VO
QUJMRUQKKyAgICBBU1NFUlRfVU5VU0VEKHRva2VuLCAmdG9rZW4pOworICAgIHJldHVybjsKKyNl
bHNlCisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgICAg
ICByZXR1cm47CisKKyAgICBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKQorICAgIGZvciAoOyBpdGVyICE9IHRv
a2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmICghaXNOYW1lT2ZT
Y3JpcHRDYXJyeWluZ0F0dHJpYnV0ZShpdGVyLT5tX25hbWUpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3Qoc25pcHBldEZvckF0dHJpYnV0
ZSh0b2tlbiwgKml0ZXIpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpdGVyLT5t
X3ZhbHVlLmNsZWFyKCk7CisgICAgfQorI2VuZGlmCit9CisKK1N0cmluZyBYU1NGaWx0ZXI6OnNu
aXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgSFRNTFRva2Vu
OjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdyYWIg
b25lIGNoYXJhY3RlciBiZWZvcmUgdGhlIG5hbWUgYWxzby4KKyAgICBpbnQgc3RhcnQgPSBhdHRy
aWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCAtIHRva2VuLnN0YXJ0SW5kZXgoKTsKKyAgICBpbnQg
ZW5kID0gYXR0cmlidXRlLm1fdmFsdWVSYW5nZS5tX3N0YXJ0ICsgc25pcHBldExlbmd0aChhdHRy
aWJ1dGUpIC0gdG9rZW4uc3RhcnRJbmRleCgpOworCisgICAgLy8gRklYTUU6IFRoZXJlJ3MgYW4g
ZXh0cmEgYWxsb2NhdGlvbiBoZXJlIHRoYXQgd2UgY291bGQgc2F2ZSBieQorICAgIC8vICAgICAg
ICBwYXNzaW5nIHRoZSByYW5nZSB0byB0aGUgcGFyc2VyLgorICAgIHJldHVybiBtX3BhcnNlci0+
c291cmNlRm9yVG9rZW4odG9rZW4pLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOworfQor
Citib29sIFhTU0ZpbHRlcjo6aXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3RyaW5nJiBzbmlw
cGV0KQoreworICAgIFN0cmluZyB1cmwgPSBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCk7CisgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkwodXJsLCBtX3BhcnNlci0+
ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICBpZiAoZGVjb2RlZFVSTC5m
aW5kKHNuaXBwZXQsIDAsIGZhbHNlKSAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHRydWU7
IC8vIFdlJ3ZlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIEdFVCBkYXRhLgorICAgIC8vIEZJWE1F
OiBMb29rIGluIGZvcm0gZGF0YS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYxOWZiZjFkZmMwMzFlNDVh
OWQ2M2EyMDBjYjE5NmU0ZmYwOGVlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0ZpbHRlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQWRhbSBCYXJ0aC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYU1NGaWx0ZXJfaAorI2Rl
ZmluZSBYU1NGaWx0ZXJfaAorCisjaW5jbHVkZSAiSFRNTFRva2VuLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgSFRNTERvY3VtZW50UGFyc2VyOworCitjbGFzcyBYU1NGaWx0ZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFhTU0ZpbHRlcik7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgWFNTRmlsdGVyKEhUTUxEb2N1bWVudFBhcnNlciopOworCisgICAgdm9pZCBmaWx0ZXJU
b2tlbihIVE1MVG9rZW4mKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgc25pcHBldEZvckF0dHJp
YnV0ZShjb25zdCBIVE1MVG9rZW4mLCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpOworICAg
IGJvb2wgaXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICBIVE1MRG9j
dW1lbnRQYXJzZXIqIG1fcGFyc2VyOworfTsKKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80364</attachid>
            <date>2011-01-27 14:27:20 -0800</date>
            <delta_ts>2011-01-28 12:41:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53205-20110127142718.patch</filename>
            <type>text/plain</type>
            <size>19490</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IGRjYjEwMGZjZDhjZTZkNDQwYmY3NWUzOTE1YWUzZjBjOTg0MzUyMWMu
LjRmZDZlYTViOTI5MzYwMjk4MjUwMTJlMTg4NmNkYzA4ODQxMjJkOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtMzQ2LDYgKzM0Niw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCWh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIv
VGV4dERvY3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJz
ZXIuY3BwIFwKKwlodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwIFwKIAlcCiAJaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAJXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5Mzc5
M2U0MTBkNzYzZWZiY2QxOTIzZTYwNjk0ODUxMzliYTM1MjhjLi40YjdjOGVjYzhkOTI4MjA5YzI1
MWVhNjk4YWExZTEzYWVmZDhmYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTE0Nyw2ICsx
MTQ3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmNwcAogICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKICAg
ICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAKKyAgICBodG1sL3BhcnNlci9Y
U1NGaWx0ZXIuY3BwCiAKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmODZjNTAzNGYzNGZmMDBjZWFmMjA2ZmFmNWM1NjhhMWZmOWI3ZmE0Li4z
MjhkN2UzODE4M2E0MjYzOGMxNTNiMjJmMWVjZjkyYzc2MTA4MjM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0y
LDYgKzIsMzggQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAg
ICAgICBTa2V0Y2ggb3V0IG5ldyBYU1MgZmlsdGVyIGRlc2lnbiAoZGlzYWJsZWQgYnkgZGVmYXVs
dCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjA1
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgYmFzaWMgc2tldGNoIG9mIHRoZSBuZXcgWFNT
IGZpbHRlciBkZXNpZ24uICBSYXRoZXIKKyAgICAgICAgdGhhbiB3YXRjaGluZyBzY3JpcHRzIGFz
IHRoZXkgZXhlY3V0ZSwgaW4gdGhpcyBkZXNpZ24sIHdlIHdhdGNoIHRva2VucworICAgICAgICBl
bWl0dGVkIGJ5IHRoZSB0b2tlbml6ZXIuICBXZSB0aGVuIG1hcCB0aGUgdG9rZW5zIGRpcmVjdGx5
IGJhY2sgaW50bworICAgICAgICBpbnB1dCBjaGFyYWN0ZXJzLCB3aGljaCBsZXRzIHVzIHNraXAg
YWxsIHRoZSBjb21wbGljYXRlZCBsb2dpYyByZWxhdGVkCisgICAgICAgIHRvIEhUTUwgZW50aXRp
ZXMgYW5kIGRvdWJsZS1kZWNvZGluZyBvZiBKYXZhU2NyaXB0IFVSTHMuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBjb250YWlucyBvbmx5IHRoZSBiYXJlIGVzc2VudGlhbGx5IG1hY2hpbmVyeS4gIEkn
bGwgYWRkIG1vcmUKKyAgICAgICAgaW4gZnV0dXJlIHBhdGNoZXMgYW5kIGV2ZW50dWFsbHkgcmVt
b3ZlIHRoZSBwcmV2aW91cyBjb2RlIG9uY2UgdGhpcworICAgICAgICBjb2RlIGlzIHVwIGFuZCBy
dW5uaW5nIGNvcnJlY3RseS4KKworICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6c291cmNlRm9yVG9rZW4pOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL1hTU0ZpbHRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0Zp
bHRlci5oOiBBZGRlZC4KKworMjAxMS0wMS0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEdl
bmVyYWxpemUgdGhlIG1lY2hhbmlzbSB2aWV3LXNvdXJjZSB1c2VzIHRvIHJlbWVtYmVyIHRoZSBz
b3VyY2UgZm9yIGFuIEhUTUxUb2tlbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTMyMDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmZmYjFhYWYw
Y2RkYjc2ODU2YjViYWIyZmYyZmJhMDUwZDg2NGVkLi43MTUwMmM2OTcyM2E0MmZmMDE1ZGEwMmFi
MTMzZTI2ZWU0NGFmZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTg4MCw2ICsxODgwLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0
RG9jdW1lbnRQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdT
b3VyY2VQYXJzZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0Vmlld1Nv
dXJjZVBhcnNlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0
bWwvUGFzc3dvcmRJbnB1dFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAwYTQ0ZWY2OTI2
ZjNmMzA5MzQyM2M1NGMxNmUyZWI4MDYxMDRiNzljLi4wN2ZjM2JmYzUxYzY3M2FiN2QyMGQ1Mjk5
NzA2Y2IyYTNkNWM0ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMDAxLDYgKzIwMDEsOCBAQAog
ICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5oJywKICAgICAgICAg
ICAgICdodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAnLAogICAgICAgICAgICAg
J2h0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmgnLAorICAgICAgICAgICAgJ2h0bWwv
cGFyc2VyL1hTU0ZpbHRlci5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvcGFyc2VyL1hTU0ZpbHRl
ci5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwJywK
ICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGRh
MTYzNmRlZTZhYzI3ZDc3NDlmZDI3MzFkOWNkZTY1ZTA5MzVhYjYuLjZmNDA5N2MzNWM2MTdkMDQ0
ZTVlMWQyMzQyMWYyY2RjMjFiYTBhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMDM5LDYgKzEwMzks
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5j
cHAgXAogICAgIGh0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgXAogICAgIGh0bWwv
cGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcCBcCisgICAgaHRtbC9wYXJzZXIvWFNTRmls
dGVyLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBcCiAgICAg
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcCBcCkBAIC0xOTM5LDYgKzE5NDAsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3Bh
cnNlci9IVE1MVG9rZW5pemVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5o
IFwKICAgICBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5oIFwKKyAgICBodG1sL3Bh
cnNlci9YU1NGaWx0ZXIuaCBcCiAgICAgaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmggXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBhMDAzYzRmODZlMDhkM2I1ZGQzMjUyODY0ZGQwMDg5ODU1MTBiZjBhLi40NzRiNzVk
N2Y4MzhiNTQwNDk2NGZlZDFjYzlkN2U4OTQzNmI4OTRkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTU1MDAsNiArNTU1MDAsMTQgQEAKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBhcnNlclxUZXh0Vmlld1NvdXJjZVBhcnNlci5oIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRt
bFxwYXJzZXJcWFNTRmlsdGVyLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxccGFyc2VyXFhTU0ZpbHRlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJCQkJTmFtZT0ic2hhZG93Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDk2MGIyNWI0OWZiMjg4YTY2ZjU3NWUyNDk4MjNiNGNmMjI1NTZmYzcuLmZiY2NkNDQ5ZTNl
MTA5YWFhZjMyMTI1Y2IxN2Y2MmVhODZlNGYwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwOTksNiArMzA5OSw4IEBACiAJ
CTk3N0IzODdBMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3QjM4NjExMjI4ODNF
OTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggKi87IH07CiAJCTk3N0UyRENEMTJG
MEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyog
SFRNTFNvdXJjZVRyYWNrZXIuY3BwICovOyB9OwogCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkg
LyogSFRNTFNvdXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3N0UyRENDMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tl
ci5oICovOyB9OworCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBCMTJG
MEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwICovOyB9OworCQk5NzdFMkUwRjEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzdFMkUwQzEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggKi87
IH07CiAJCTk3OUY0M0QzMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0Qx
MTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5
RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAw
RjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzg0ODMxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHRE
b2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNw
cCAqLzsgfTsKQEAgLTk0ODcsNiArOTQ4OSw4IEBACiAJCTk3N0IzODYxMTIyODgzRTkwMEI4MUZG
OCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBIVE1MVmlld1NvdXJjZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0hUTUxWaWV3U291cmNl
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0UyRENCMTJGMEUyODMw
MEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBIVE1MU291cmNlVHJhY2tlci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTFNv
dXJjZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkRDQzEy
RjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSFRNTFNvdXJjZVRyYWNrZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MU291
cmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzdFMkUwQjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFhTU0ZpbHRlci5jcHA7IHBhdGggPSBwYXJzZXIvWFNTRmlsdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhT
U0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBYU1NGaWx0ZXIuaDsg
cGF0aCA9IHBhcnNlci9YU1NGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAv
KiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
Qzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwOyBwYXRo
ID0gcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTk2Myw2ICsxNTk2Nyw4IEBACiAJCQkJOTdCQzg0ODIxMjM2RkQ5MzAwMEM2MTYx
IC8qIFRleHREb2N1bWVudFBhcnNlci5oICovLAogCQkJCTk3QkM4NEEyMTIzNzBEQzcwMDBDNjE2
MSAvKiBUZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgKi8sCiAJCQkJOTdCQzg0QTMxMjM3MERDODAw
MEM2MTYxIC8qIFRleHRWaWV3U291cmNlUGFyc2VyLmggKi8sCisJCQkJOTc3RTJFMEIxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAgKi8sCisJCQkJOTc3RTJFMEMxMkYwRkM5QzAwQzEz
Mzc5IC8qIFhTU0ZpbHRlci5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjI0NDQsNiArMjI0NTAsNyBAQAogCQkJCTRGMkQyMDU0
MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEzNEY1QUIxMkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjUxNDAsNiArMjUxNDcsNyBAQAogCQkJCUJDOEFFMzRFMTJFQTA5
NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjJE
MjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc3RTJEQ0QxMkYwRTI4MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2MDcyZTQ1YmVlMTA3ODU2ZGYzODFjNmNmYzJiYTgw
MjMwM2MxZWYxLi43YzIyM2IyMjNlNmJiMmQyMDE4YzBlNzhhNDJmZWQ2YzJmMWM5OTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
QEAgLTgxLDYgKzgxLDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMKICAgICAsIG1fc2NyaXB0
UnVubmVyKEhUTUxTY3JpcHRSdW5uZXI6OmNyZWF0ZShkb2N1bWVudCwgdGhpcykpCiAgICAgLCBt
X3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50LCByZXBv
cnRFcnJvcnMsIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGRvY3VtZW50KSkpCiAgICAgLCBtX3Bh
cnNlclNjaGVkdWxlcihIVE1MUGFyc2VyU2NoZWR1bGVyOjpjcmVhdGUodGhpcykpCisgICAgLCBt
X3hzc0ZpbHRlcih0aGlzKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQogICAgICwgbV93
cml0ZU5lc3RpbmdMZXZlbCgwKQogewpAQCAtOTIsNiArOTMsNyBAQCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVu
dCogY29udAogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVu
dCgpKQogICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3JlYXRlKHVzZVByZUhUTUw1
UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1bWVudCgpKSkpCiAgICAgLCBtX3RyZWVCdWlsZGVy
KEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwg
c2NyaXB0aW5nUGVybWlzc2lvbiwgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoZnJhZ21lbnQtPmRv
Y3VtZW50KCkpKSkKKyAgICAsIG1feHNzRmlsdGVyKHRoaXMpCiAgICAgLCBtX2VuZFdhc0RlbGF5
ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCiB7CkBAIC0yMzIsNiArMjM0
LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNN
b2RlIG1vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbV9zb3VyY2VUcmFja2VyLmVu
ZChtX2lucHV0LCBtX3Rva2VuKTsKIAorICAgICAgICBtX3hzc0ZpbHRlci5maWx0ZXJUb2tlbiht
X3Rva2VuKTsKKwogICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbVRva2Vu
KG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CiAKQEAgLTQwMyw2ICs0MDcsMTEg
QEAgYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmluU2NyaXB0RXhlY3V0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gbV9zY3JpcHRSdW5uZXItPmlzRXhlY3V0aW5nU2NyaXB0KCk7CiB9CiAKK1N0cmlu
ZyBIVE1MRG9jdW1lbnRQYXJzZXI6OnNvdXJjZUZvclRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9r
ZW4pCit7CisgICAgcmV0dXJuIG1fc291cmNlVHJhY2tlci5zb3VyY2VGb3JUb2tlbih0b2tlbik7
Cit9CisKIGludCBIVE1MRG9jdW1lbnRQYXJzZXI6OmxpbmVOdW1iZXIoKSBjb25zdAogewogICAg
IHJldHVybiBtX3Rva2VuaXplci0+bGluZU51bWJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCA3OGY2MTM2ODRiYjYzZDhhYzQ2
MDhmY2FlZjY2ZTE0ZTJjNjM0NWRhLi5lOTdjMWIzZWY3NDczZGYzNmU4YjgyN2YxNzQwNjYyZTgz
ZmMyOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBh
cnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CisjaW5jbHVkZSAiWFNTRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhEb2N1bWVudCopOwogCiAgICAgSFRNTFRva2VuaXpl
ciogdG9rZW5pemVyKCkgY29uc3QgeyByZXR1cm4gbV90b2tlbml6ZXIuZ2V0KCk7IH0KKyAgICBT
dHJpbmcgc291cmNlRm9yVG9rZW4oY29uc3QgSFRNTFRva2VuJik7CiAKICAgICB2aXJ0dWFsIFRl
eHRQb3NpdGlvbjAgdGV4dFBvc2l0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3Bl
bmRTY2hlZHVsZWRUYXNrcygpOwpAQCAtMTQzLDYgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAgT3du
UHRyPEhUTUxQcmVsb2FkU2Nhbm5lcj4gbV9wcmVsb2FkU2Nhbm5lcjsKICAgICBPd25QdHI8SFRN
TFBhcnNlclNjaGVkdWxlcj4gbV9wYXJzZXJTY2hlZHVsZXI7CiAgICAgSFRNTFNvdXJjZVRyYWNr
ZXIgbV9zb3VyY2VUcmFja2VyOworICAgIFhTU0ZpbHRlciBtX3hzc0ZpbHRlcjsKIAogICAgIGJv
b2wgbV9lbmRXYXNEZWxheWVkOwogICAgIHVuc2lnbmVkIG1fd3JpdGVOZXN0aW5nTGV2ZWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjNmY2Iz
MjM5MjllMjhmOTdiYjc3YmZjNGVmNjVlNWEyZDY4N2U4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcApAQCAtMCwwICsxLDExNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBZGFtIEJhcnRoLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiWFNTRmlsdGVyLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKKy8vIFRoaXMgcHJlcHJvY2Vzc3NvciBtYWNybyBpcyBhIHRlbXBvcmFy
eSBzY2FmZm9sZCB3aGlsZSB0aGlzIGNvZGUgaXMgc3RpbGwgYW4gZXhwZXJpbWVudC4KKyNkZWZp
bmUgWFNTX0RFVEVDVE9SX0VOQUJMRUQgMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSB7CisKK2Jvb2wgaXNOYW1lT2ZTY3JpcHRDYXJyeWluZ0F0dHJpYnV0ZShjb25zdCBWZWN0
b3I8VUNoYXIsIDMyPiYgbmFtZSkKK3sKKyAgICBjb25zdCBzaXplX3QgbGVuZ3RoT2ZTaG9ydGVz
dFNjcmlwdENhcnJ5aW5nQXR0cmlidXRlID0gNTsgLy8gVG8gd2l0OiBvbmN1dC4KKyAgICBpZiAo
bmFtZS5zaXplKCkgPCBsZW5ndGhPZlNob3J0ZXN0U2NyaXB0Q2FycnlpbmdBdHRyaWJ1dGUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobmFtZVswXSAhPSAnbycgJiYgbmFtZVswXSAh
PSAnTycpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobmFtZVsxXSAhPSAnbicgJiYg
bmFtZVswXSAhPSAnTicpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworU3RyaW5nIGRlY29kZVVSTChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVu
Y29kaW5nJiBlbmNvZGluZykKK3sKKyAgICBTdHJpbmcgd29ya2luZ1N0cmluZyA9IHN0cmluZzsK
KyAgICB3b3JraW5nU3RyaW5nLnJlcGxhY2UoJysnLCAnICcpOworICAgIHdvcmtpbmdTdHJpbmcg
PSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMod29ya2luZ1N0cmluZyk7CisgICAgQ1N0cmluZyB3
b3JraW5nU3RyaW5nVVRGOCA9IHdvcmtpbmdTdHJpbmcudXRmOCgpOworICAgIFN0cmluZyBkZWNv
ZGVkU3RyaW5nID0gZW5jb2RpbmcuZGVjb2RlKHdvcmtpbmdTdHJpbmdVVEY4LmRhdGEoKSwgd29y
a2luZ1N0cmluZ1VURjgubGVuZ3RoKCkpOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNoZWNrIG5l
Y2Vzc2FyeT8KKyAgICBpZiAoZGVjb2RlZFN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3b3JraW5nU3RyaW5nOworICAgIHJldHVybiBkZWNvZGVkU3RyaW5nOworfQorCit9CisKK1hT
U0ZpbHRlcjo6WFNTRmlsdGVyKEhUTUxEb2N1bWVudFBhcnNlciogcGFyc2VyKQorICAgIDogbV9w
YXJzZXIocGFyc2VyKQoreworICAgIEFTU0VSVChtX3BhcnNlcik7Cit9CisKK3ZvaWQgWFNTRmls
dGVyOjpmaWx0ZXJUb2tlbihIVE1MVG9rZW4mIHRva2VuKQoreworI2lmICFYU1NfREVURUNUT1Jf
RU5BQkxFRAorICAgIEFTU0VSVF9VTlVTRUQodG9rZW4sICZ0b2tlbik7CisgICAgcmV0dXJuOwor
I2Vsc2UKKyAgICBpZiAodG9rZW4udHlwZSgpICE9IEhUTUxUb2tlbjo6U3RhcnRUYWcpCisgICAg
ICAgIHJldHVybjsKKworICAgIEhUTUxUb2tlbjo6QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IHRva2VuLmF0dHJpYnV0ZXMoKS5iZWdpbigpOworICAgIGZvciAoOyBpdGVyICE9
IHRva2VuLmF0dHJpYnV0ZXMoKS5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmICghaXNOYW1l
T2ZTY3JpcHRDYXJyeWluZ0F0dHJpYnV0ZShpdGVyLT5tX25hbWUpKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmICghaXNDb250YWluZWRJblJlcXVlc3Qoc25pcHBldEZvckF0dHJp
YnV0ZSh0b2tlbiwgKml0ZXIpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpdGVy
LT5tX3ZhbHVlLmNsZWFyKCk7CisgICAgfQorI2VuZGlmCit9CisKK1N0cmluZyBYU1NGaWx0ZXI6
OnNuaXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgSFRNTFRv
a2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdy
YWIgb25lIGNoYXJhY3RlciBiZWZvcmUgdGhlIG5hbWUgYWxzby4KKyAgICBpbnQgc3RhcnQgPSBh
dHRyaWJ1dGUubV9uYW1lUmFuZ2UubV9zdGFydCAtIHRva2VuLnN0YXJ0SW5kZXgoKTsKKyAgICAv
LyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBncmFiIG9ubHkgdGhlIGZpcnN0IGZldyBjaGFy
YWN0ZXJzIG9mIHRoZSBhdHRyaWJ1dGUgdmFsdWUuCisgICAgaW50IGVuZCA9IGF0dHJpYnV0ZS5t
X3ZhbHVlUmFuZ2UubV9lbmQgLSB0b2tlbi5zdGFydEluZGV4KCk7CisKKyAgICAvLyBGSVhNRTog
VGhlcmUncyBhbiBleHRyYSBhbGxvY2F0aW9uIGhlcmUgdGhhdCB3ZSBjb3VsZCBzYXZlIGJ5Cisg
ICAgLy8gICAgICAgIHBhc3NpbmcgdGhlIHJhbmdlIHRvIHRoZSBwYXJzZXIuCisgICAgcmV0dXJu
IG1fcGFyc2VyLT5zb3VyY2VGb3JUb2tlbih0b2tlbikuc3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBz
dGFydCk7Cit9CisKK2Jvb2wgWFNTRmlsdGVyOjppc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBT
dHJpbmcmIHNuaXBwZXQpCit7CisgICAgU3RyaW5nIHVybCA9IG1fcGFyc2VyLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKTsKKyAgICBTdHJpbmcgZGVjb2RlZFVSTCA9IGRlY29kZVVSTCh1cmws
IG1fcGFyc2VyLT5kb2N1bWVudCgpLT5kZWNvZGVyKCktPmVuY29kaW5nKCkpOworICAgIGlmIChk
ZWNvZGVkVVJMLmZpbmQoc25pcHBldCwgMCwgZmFsc2UpICE9IG5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsgLy8gV2UndmUgZm91bmQgdGhlIHN0cmluZyBpbiB0aGUgR0VUIGRhdGEuCisg
ICAgLy8gRklYTUU6IExvb2sgaW4gZm9ybSBkYXRhLgorICAgIHJldHVybiBmYWxzZTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYjJjNGE0
MDk5OTY1OTQ1YjRhMGU4YWVmMDI1MDkzNWE2ZGJkNTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBZGFtIEJhcnRoLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFhTU0Zp
bHRlcl9oCisjZGVmaW5lIFhTU0ZpbHRlcl9oCisKKyNpbmNsdWRlICJIVE1MVG9rZW4uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MRG9jdW1lbnRQYXJzZXI7CisKK2NsYXNz
IFhTU0ZpbHRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoWFNTRmlsdGVyKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBYU1NGaWx0ZXIoSFRNTERvY3VtZW50UGFyc2VyKik7CisKKyAgICB2
b2lkIGZpbHRlclRva2VuKEhUTUxUb2tlbiYpOworCitwcml2YXRlOgorICAgIFN0cmluZyBzbmlw
cGV0Rm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbiYsIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmli
dXRlJik7CisgICAgYm9vbCBpc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmKTsKKwor
ICAgIEhUTUxEb2N1bWVudFBhcnNlciogbV9wYXJzZXI7Cit9OworCit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80483</attachid>
            <date>2011-01-28 12:41:42 -0800</date>
            <delta_ts>2011-01-28 12:44:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-53205-20110128124140.patch</filename>
            <type>text/plain</type>
            <size>18831</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2OTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDEtMjggIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0
ZXMuCisKKyAgICAgICAgU2tldGNoIG91dCBuZXcgWFNTIGZpbHRlciBkZXNpZ24gKGRpc2FibGVk
IGJ5IGRlZmF1bHQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MzIwNQorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGJhc2ljIHNrZXRjaCBvZiB0
aGUgbmV3IFhTUyBmaWx0ZXIgZGVzaWduLiAgUmF0aGVyCisgICAgICAgIHRoYW4gd2F0Y2hpbmcg
c2NyaXB0cyBhcyB0aGV5IGV4ZWN1dGUsIGluIHRoaXMgZGVzaWduLCB3ZSB3YXRjaCB0b2tlbnMK
KyAgICAgICAgZW1pdHRlZCBieSB0aGUgdG9rZW5pemVyLiAgV2UgdGhlbiBtYXAgdGhlIHRva2Vu
cyBkaXJlY3RseSBiYWNrIGludG8KKyAgICAgICAgaW5wdXQgY2hhcmFjdGVycywgd2hpY2ggbGV0
cyB1cyBza2lwIGFsbCB0aGUgY29tcGxpY2F0ZWQgbG9naWMgcmVsYXRlZAorICAgICAgICB0byBI
VE1MIGVudGl0aWVzIGFuZCBkb3VibGUtZGVjb2Rpbmcgb2YgSmF2YVNjcmlwdCBVUkxzLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggY29udGFpbnMgb25seSB0aGUgYmFyZSBlc3NlbnRpYWxseSBtYWNo
aW5lcnkuICBJJ2xsIGFkZCBtb3JlCisgICAgICAgIGluIGZ1dHVyZSBwYXRjaGVzIGFuZCBldmVu
dHVhbGx5IHJlbW92ZSB0aGUgcHJldmlvdXMgY29kZSBvbmNlIHRoaXMKKyAgICAgICAgY29kZSBp
cyB1cCBhbmQgcnVubmluZyBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50
UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2Vu
aXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnNvdXJjZUZvclRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3Bh
cnNlci9YU1NGaWx0ZXIuaDogQWRkZWQuCisKIDIwMTEtMDEtMjggIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDc2OTczKQorKysgU291cmNlL1dlYkNvcmUvQW5k
cm9pZC5tawkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDYgKzM0Niw3IEBAIExPQ0FMX1NSQ19GSUxF
UyA6PSAkKExPQ0FMX1NSQ19GSUxFUykgXAogCWh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFy
c2VyLmNwcCBcCiAJaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBcCiAJaHRtbC9w
YXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKKwlodG1sL3BhcnNlci9YU1NGaWx0ZXIu
Y3BwIFwKIAlcCiAJaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAogCWh0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDc2OTczKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTExNDgsNiArMTE0OCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL3Bh
cnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKICAgICBodG1sL3BhcnNlci9UZXh0RG9jdW1l
bnRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwCisg
ICAgaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcAogCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9scy5jcHAKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNzY5NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg4MCw2ICsxODgwLDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJz
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA3Njk3MykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjAwMSw2ICsyMDAx
LDggQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuY3BwJywKICAgICAg
ICAgICAgICdodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5oJywKKyAgICAgICAgICAg
ICdodG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL3BhcnNlci9Y
U1NGaWx0ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwkocmV2aXNpb24gNzY5NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzOSw2ICsxMDM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRtbC9wYXJz
ZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9UZXh0RG9jdW1l
bnRQYXJzZXIuY3BwIFwKICAgICBodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAg
XAorICAgIGh0bWwvcGFyc2VyL1hTU0ZpbHRlci5jcHAgXAogICAgIGh0bWwvc2hhZG93L01lZGlh
Q29udHJvbHMuY3BwIFwKICAgICBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIFwK
ICAgICBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIFwKQEAgLTE5MzksNiArMTk0MCw3IEBA
IEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIuaCBcCiAgICAgaHRt
bC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmggXAogICAgIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmggXAorICAgIGh0bWwvcGFyc2VyL1hTU0ZpbHRlci5oIFwKICAgICBpbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggXAog
ICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNzY5NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtNTU1MDQsNiArNTU1MDQsMTQgQEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHBh
cnNlclxUZXh0Vmlld1NvdXJjZVBhcnNlci5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxwYXJzZXJcWFNTRmlsdGVyLmNwcCIKKwkJ
CQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxc
cGFyc2VyXFhTU0ZpbHRlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJ
CQk8RmlsdGVyCiAJCQkJTmFtZT0ic2hhZG93IgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzY5NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMwOTksNiArMzA5OSw4IEBACiAJCTk3N0IzODdBMTIyODgzRTkwMEI4MUZGOCAv
KiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc3QjM4NjExMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxWaWV3U291cmNl
UGFyc2VyLmggKi87IH07CiAJCTk3N0UyRENEMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNl
VHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzdFMkRDQjEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwICovOyB9
OwogCQk5NzdFMkRDRTEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRENDMTJGMEUy
ODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5oICovOyB9OworCQk5NzdFMkUwRTEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3N0UyRTBCMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIu
Y3BwICovOyB9OworCQk5NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdFMkUwQzEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggKi87IH07CiAJCTk3OUY0M0QzMTA3NUU0NEEwMDAw
RjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0
aW9uU2NoZWR1bGVyLmNwcCAqLzsgfTsKIAkJOTc5RjQzRDQxMDc1RTQ0QTAwMDBGODNCIC8qIE5h
dmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdC
Qzg0ODMxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDODQ4MTEyMzZGRDkzMDAw
QzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTk0ODgsNiArOTQ5MCw4
IEBACiAJCTk3N0IzODYxMTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MVmlld1NvdXJjZVBhcnNlci5o
OyBwYXRoID0gcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3N0UyRENCMTJGMEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MU291cmNlVHJh
Y2tlci5jcHA7IHBhdGggPSBwYXJzZXIvSFRNTFNvdXJjZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NzdFMkRDQzEyRjBFMjgzMDBDMTMzNzkgLyogSFRNTFNvdXJj
ZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTFNvdXJjZVRy
YWNrZXIuaDsgcGF0aCA9IHBhcnNlci9IVE1MU291cmNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NzdFMkUwQjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFhTU0ZpbHRlci5jcHA7IHBh
dGggPSBwYXJzZXIvWFNTRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBYU1NGaWx0ZXIuaDsgcGF0aCA9IHBhcnNlci9YU1NGaWx0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc5RjQzRDExMDc1RTQ0QTAwMDBGODNCIC8q
IE5hdmlnYXRpb25TY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmF2aWdhdGlvblNjaGVkdWxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpb25TY2hlZHVsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzg0ODExMjM2RkQ5MzAwMEM2MTYxIC8qIFRl
eHREb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBUZXh0RG9jdW1lbnRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTk2NSw2ICsxNTk2OSw4IEBA
CiAJCQkJOTdCQzg0ODIxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5oICov
LAogCQkJCTk3QkM4NEEyMTIzNzBEQzcwMDBDNjE2MSAvKiBUZXh0Vmlld1NvdXJjZVBhcnNlci5j
cHAgKi8sCiAJCQkJOTdCQzg0QTMxMjM3MERDODAwMEM2MTYxIC8qIFRleHRWaWV3U291cmNlUGFy
c2VyLmggKi8sCisJCQkJOTc3RTJFMEIxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5jcHAg
Ki8sCisJCQkJOTc3RTJFMEMxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjI0
NDgsNiArMjI0NTQsNyBAQAogCQkJCUJDOTU4NUUxMTJGMDk4OTUwMDc1NTgyMSAvKiBQbGF0Zm9y
bUdlc3R1cmVFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEzNEY1QUIxMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkRDRTEyRjBFMjgz
MDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3N0Uy
RTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUx
NDQsNiArMjUxNTEsNyBAQAogCQkJCUJDOEFFMzRFMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxh
YmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQg
LyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3RTJEQ0QxMkYwRTI4
MzAwQzEzMzc5IC8qIEhUTUxTb3VyY2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3
N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAJKHJldmlzaW9uIDc2OTczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBIVE1M
RG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihICiAgICAgLCBtX3NjcmlwdFJ1bm5l
cihIVE1MU2NyaXB0UnVubmVyOjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVl
QnVpbGRlcihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBkb2N1bWVudCwgcmVwb3J0RXJy
b3JzLCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhkb2N1bWVudCkpKQogICAgICwgbV9wYXJzZXJT
Y2hlZHVsZXIoSFRNTFBhcnNlclNjaGVkdWxlcjo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV94c3NG
aWx0ZXIodGhpcykKICAgICAsIG1fZW5kV2FzRGVsYXllZChmYWxzZSkKICAgICAsIG1fd3JpdGVO
ZXN0aW5nTGV2ZWwoMCkKIHsKQEAgLTkyLDYgKzkzLDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIoRAogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdt
ZW50LT5kb2N1bWVudCgpKQogICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3JlYXRl
KHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1bWVudCgpKSkpCiAgICAgLCBt
X3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGZyYWdtZW50LCBjb250
ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mo
ZnJhZ21lbnQtPmRvY3VtZW50KCkpKSkKKyAgICAsIG1feHNzRmlsdGVyKHRoaXMpCiAgICAgLCBt
X2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3dyaXRlTmVzdGluZ0xldmVsKDApCiB7CkBA
IC0yMzIsNiArMjM0LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIo
UwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1
dCwgbV90b2tlbik7CiAKKyAgICAgICAgbV94c3NGaWx0ZXIuZmlsdGVyVG9rZW4obV90b2tlbik7
CisKICAgICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3RydWN0VHJlZUZyb21Ub2tlbihtX3Rva2Vu
KTsKICAgICAgICAgbV90b2tlbi5jbGVhcigpOwogCkBAIC00MDMsNiArNDA3LDExIEBAIGJvb2wg
SFRNTERvY3VtZW50UGFyc2VyOjppblNjcmlwdEV4ZWN1dGkKICAgICByZXR1cm4gbV9zY3JpcHRS
dW5uZXItPmlzRXhlY3V0aW5nU2NyaXB0KCk7CiB9CiAKK1N0cmluZyBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnNvdXJjZUZvclRva2VuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgcmV0dXJu
IG1fc291cmNlVHJhY2tlci5zb3VyY2VGb3JUb2tlbih0b2tlbik7Cit9CisKIGludCBIVE1MRG9j
dW1lbnRQYXJzZXI6OmxpbmVOdW1iZXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3Rva2VuaXpl
ci0+bGluZU51bWJlcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmgJKHJldmlzaW9uIDc2OTczKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRl
ICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlhTU0Zp
bHRlci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNzIsNiArNzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgdXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3MoRG9jdW1lbnQqKTsKIAogICAgIEhUTUxUb2tlbml6ZXIqIHRva2VuaXplcigpIGNv
bnN0IHsgcmV0dXJuIG1fdG9rZW5pemVyLmdldCgpOyB9CisgICAgU3RyaW5nIHNvdXJjZUZvclRv
a2VuKGNvbnN0IEhUTUxUb2tlbiYpOwogCiAgICAgdmlydHVhbCBUZXh0UG9zaXRpb24wIHRleHRQ
b3NpdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kU2NoZWR1bGVkVGFza3Mo
KTsKQEAgLTE0Myw2ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1MUHJlbG9hZFNj
YW5uZXI+IG1fcHJlbG9hZFNjYW5uZXI7CiAgICAgT3duUHRyPEhUTUxQYXJzZXJTY2hlZHVsZXI+
IG1fcGFyc2VyU2NoZWR1bGVyOwogICAgIEhUTUxTb3VyY2VUcmFja2VyIG1fc291cmNlVHJhY2tl
cjsKKyAgICBYU1NGaWx0ZXIgbV94c3NGaWx0ZXI7CiAKICAgICBib29sIG1fZW5kV2FzRGVsYXll
ZDsKICAgICB1bnNpZ25lZCBtX3dyaXRlTmVzdGluZ0xldmVsOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NGaWx0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRhbSBCYXJ0aC4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhTU0ZpbHRlci5oIgorCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCisvLyBUaGlzIHByZXByb2Nlc3Nzb3IgbWFjcm8gaXMgYSB0ZW1w
b3Jhcnkgc2NhZmZvbGQgd2hpbGUgdGhpcyBjb2RlIGlzIHN0aWxsIGFuIGV4cGVyaW1lbnQuCisj
ZGVmaW5lIFhTU19ERVRFQ1RPUl9FTkFCTEVEIDAKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgeworCitib29sIGlzTmFtZU9mU2NyaXB0Q2FycnlpbmdBdHRyaWJ1dGUoY29uc3Qg
VmVjdG9yPFVDaGFyLCAzMj4mIG5hbWUpCit7CisgICAgY29uc3Qgc2l6ZV90IGxlbmd0aE9mU2hv
cnRlc3RTY3JpcHRDYXJyeWluZ0F0dHJpYnV0ZSA9IDU7IC8vIFRvIHdpdDogb25jdXQuCisgICAg
aWYgKG5hbWUuc2l6ZSgpIDwgbGVuZ3RoT2ZTaG9ydGVzdFNjcmlwdENhcnJ5aW5nQXR0cmlidXRl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWVbMF0gIT0gJ28nICYmIG5hbWVb
MF0gIT0gJ08nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWVbMV0gIT0gJ24n
ICYmIG5hbWVbMF0gIT0gJ04nKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK1N0cmluZyBkZWNvZGVVUkwoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRl
eHRFbmNvZGluZyYgZW5jb2RpbmcpCit7CisgICAgU3RyaW5nIHdvcmtpbmdTdHJpbmcgPSBzdHJp
bmc7CisgICAgd29ya2luZ1N0cmluZy5yZXBsYWNlKCcrJywgJyAnKTsKKyAgICB3b3JraW5nU3Ry
aW5nID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHdvcmtpbmdTdHJpbmcpOworICAgIENTdHJp
bmcgd29ya2luZ1N0cmluZ1VURjggPSB3b3JraW5nU3RyaW5nLnV0ZjgoKTsKKyAgICBTdHJpbmcg
ZGVjb2RlZFN0cmluZyA9IGVuY29kaW5nLmRlY29kZSh3b3JraW5nU3RyaW5nVVRGOC5kYXRhKCks
IHdvcmtpbmdTdHJpbmdVVEY4Lmxlbmd0aCgpKTsKKyAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVj
ayBuZWNlc3Nhcnk/CisgICAgaWYgKGRlY29kZWRTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd29ya2luZ1N0cmluZzsKKyAgICByZXR1cm4gZGVjb2RlZFN0cmluZzsKK30KKworfQor
CitYU1NGaWx0ZXI6OlhTU0ZpbHRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlcikKKyAgICA6
IG1fcGFyc2VyKHBhcnNlcikKK3sKKyAgICBBU1NFUlQobV9wYXJzZXIpOworfQorCit2b2lkIFhT
U0ZpbHRlcjo6ZmlsdGVyVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKK3sKKyNpZiAhWFNTX0RFVEVD
VE9SX0VOQUJMRUQKKyAgICBBU1NFUlRfVU5VU0VEKHRva2VuLCAmdG9rZW4pOworICAgIHJldHVy
bjsKKyNlbHNlCisgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0VGFnKQor
ICAgICAgICByZXR1cm47CisKKyAgICBIVE1MVG9rZW46OkF0dHJpYnV0ZUxpc3Q6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSB0b2tlbi5hdHRyaWJ1dGVzKCkuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXRl
ciAhPSB0b2tlbi5hdHRyaWJ1dGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoIWlz
TmFtZU9mU2NyaXB0Q2FycnlpbmdBdHRyaWJ1dGUoaXRlci0+bV9uYW1lKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAoIWlzQ29udGFpbmVkSW5SZXF1ZXN0KHNuaXBwZXRGb3JB
dHRyaWJ1dGUodG9rZW4sICppdGVyKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aXRlci0+bV92YWx1ZS5jbGVhcigpOworICAgIH0KKyNlbmRpZgorfQorCitTdHJpbmcgWFNTRmls
dGVyOjpzbmlwcGV0Rm9yQXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4sIGNvbnN0IEhU
TUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBncmFiIG9uZSBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBuYW1lIGFsc28uCisgICAgaW50IHN0YXJ0
ID0gYXR0cmlidXRlLm1fbmFtZVJhbmdlLm1fc3RhcnQgLSB0b2tlbi5zdGFydEluZGV4KCk7Cisg
ICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gZ3JhYiBvbmx5IHRoZSBmaXJzdCBmZXcg
Y2hhcmFjdGVycyBvZiB0aGUgYXR0cmlidXRlIHZhbHVlLgorICAgIGludCBlbmQgPSBhdHRyaWJ1
dGUubV92YWx1ZVJhbmdlLm1fZW5kIC0gdG9rZW4uc3RhcnRJbmRleCgpOworCisgICAgLy8gRklY
TUU6IFRoZXJlJ3MgYW4gZXh0cmEgYWxsb2NhdGlvbiBoZXJlIHRoYXQgd2UgY291bGQgc2F2ZSBi
eQorICAgIC8vICAgICAgICBwYXNzaW5nIHRoZSByYW5nZSB0byB0aGUgcGFyc2VyLgorICAgIHJl
dHVybiBtX3BhcnNlci0+c291cmNlRm9yVG9rZW4odG9rZW4pLnN1YnN0cmluZyhzdGFydCwgZW5k
IC0gc3RhcnQpOworfQorCitib29sIFhTU0ZpbHRlcjo6aXNDb250YWluZWRJblJlcXVlc3QoY29u
c3QgU3RyaW5nJiBzbmlwcGV0KQoreworICAgIFN0cmluZyB1cmwgPSBtX3BhcnNlci0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCk7CisgICAgU3RyaW5nIGRlY29kZWRVUkwgPSBkZWNvZGVVUkwo
dXJsLCBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpKTsKKyAgICBp
ZiAoZGVjb2RlZFVSTC5maW5kKHNuaXBwZXQsIDAsIGZhbHNlKSAhPSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7IC8vIFdlJ3ZlIGZvdW5kIHRoZSBzdHJpbmcgaW4gdGhlIEdFVCBkYXRh
LgorICAgIC8vIEZJWE1FOiBMb29rIGluIGZvcm0gZGF0YS4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0ZpbHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0ZpbHRlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWRhbSBCYXJ0
aC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBYU1NGaWx0ZXJfaAorI2RlZmluZSBYU1NGaWx0ZXJfaAorCisj
aW5jbHVkZSAiSFRNTFRva2VuLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRN
TERvY3VtZW50UGFyc2VyOworCitjbGFzcyBYU1NGaWx0ZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFhTU0ZpbHRlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgWFNTRmlsdGVyKEhUTUxE
b2N1bWVudFBhcnNlciopOworCisgICAgdm9pZCBmaWx0ZXJUb2tlbihIVE1MVG9rZW4mKTsKKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgc25pcHBldEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4m
LCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpOworICAgIGJvb2wgaXNDb250YWluZWRJblJl
cXVlc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICBIVE1MRG9jdW1lbnRQYXJzZXIqIG1fcGFyc2Vy
OworfTsKKworfQorCisjZW5kaWYK
</data>
<flag name="commit-queue"
          id="71971"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>