<?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>35723</bug_id>
          
          <creation_ts>2010-03-04 00:05:20 -0800</creation_ts>
          <short_desc>Refactoring: window.btoa() and window.atob() should be implemented on DOMWindow</short_desc>
          <delta_ts>2010-03-06 05:04:02 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195923</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 00:05:20 -0800</bug_when>
    <thetext>Currently window.btoa() and window.atob() are separetely implemented in both JSC and V8 binding.
They should share code as much as possible and the code should be on DOMWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195949</commentid>
    <comment_count>1</comment_count>
      <attachid>49997</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 01:35:06 -0800</bug_when>
    <thetext>Created attachment 49997
patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195951</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-04 01:38:13 -0800</bug_when>
    <thetext>Attachment 49997 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/page/DOMWindow.cpp:832:  Missing spaces around =  [whitespace/operators] [4]
WebCore/page/DOMWindow.cpp:832:  Missing spaces around &lt;  [whitespace/operators] [3]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195958</commentid>
    <comment_count>3</comment_count>
      <attachid>49998</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 02:06:23 -0800</bug_when>
    <thetext>Created attachment 49998
v1; fix style violations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196101</commentid>
    <comment_count>4</comment_count>
      <attachid>49998</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-04 09:27:07 -0800</bug_when>
    <thetext>Comment on attachment 49998
v1; fix style violations

&gt; -    return jsString(exec, String(out.data(), out.size()));
&gt; +    return jsString(exec, String(result.characters(), result.length()));

This is wrong. It makes an extra copy of the entire string! It should just be jsString(exec, result).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196293</commentid>
    <comment_count>5</comment_count>
      <attachid>50075</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 18:04:22 -0800</bug_when>
    <thetext>Created attachment 50075
v2; follow the feedback, cleanup a little</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196295</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 18:06:23 -0800</bug_when>
    <thetext>Thank you for reviewing quickly!

(In reply to comment #4)
&gt; This is wrong. It makes an extra copy of the entire string! It should just be
&gt; jsString(exec, result).
Fixed.
And removed unnecessary code that last patch has.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196300</commentid>
    <comment_count>7</comment_count>
      <attachid>50075</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-04 18:44:25 -0800</bug_when>
    <thetext>Comment on attachment 50075
v2; follow the feedback, cleanup a little

&gt; +static bool hasMultibyteCharacters(const String&amp; string)
&gt; +{
&gt; +    for (unsigned i = 0; i &lt; string.length(); i++) {
&gt; +        if (string[i] &gt; 0xFF)
&gt; +            return true;
&gt; +    }
&gt; +
&gt; +    return false;
&gt; +}

This is not a great name for this function. I don’t really think of U+0040 as a “single byte” character nor do I think of U+0100 as “multi-byte”.

Patch otherwise seems OK.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196318</commentid>
    <comment_count>8</comment_count>
      <attachid>50083</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 19:58:59 -0800</bug_when>
    <thetext>Created attachment 50083
v3; rename hasMultibyteCharacters to isSafeToConvertCharList</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196321</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-03-04 20:01:40 -0800</bug_when>
    <thetext>Thank you for reviewing!

&gt; This is not a great name for this function. I don’t really think of U+0040 as a
&gt; “single byte” character nor do I think of U+0100 as “multi-byte”.
I agree that &quot;multi-byte character&quot; is not right. 
But I&apos;m not sure if there is some good concept to represent this case.
So I chose the name intend to be valid locally in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196528</commentid>
    <comment_count>10</comment_count>
      <attachid>50083</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-05 10:03:35 -0800</bug_when>
    <thetext>Comment on attachment 50083
v3; rename hasMultibyteCharacters to isSafeToConvertCharList

&gt; +static bool isSafeToConvertCharList(const String&amp; string)

This is probably better than the old name, but I would have used a name like containsOnlyEightBitCharacters. Sorry I didn&apos;t suggest a name last time. r=me either with your name or with my suggested name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196887</commentid>
    <comment_count>11</comment_count>
      <attachid>50083</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-06 05:03:58 -0800</bug_when>
    <thetext>Comment on attachment 50083
v3; rename hasMultibyteCharacters to isSafeToConvertCharList

Clearing flags on attachment: 50083

Committed r55619: &lt;http://trac.webkit.org/changeset/55619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196888</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-06 05:04:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49997</attachid>
            <date>2010-03-04 01:35:06 -0800</date>
            <delta_ts>2010-03-04 02:06:18 -0800</delta_ts>
            <desc>patch v0</desc>
            <filename>bug-35723-20100304183503.patch</filename>
            <type>text/plain</type>
            <size>13147</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2E4YmE0Li40MWI1ZWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisgICAgICAgIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBpbXBsZW1lbnRh
dGlvbnMgb2Ygd2luZG93LmJ0b2EoKSBhbmQgd2luZG93LmF0b2IoKSBmcm9tCisgICAgICAgIEpT
RE9NV2luZG93IHRvIERPTVdpbmRvdywgYW5kIG1ha2UgVjhET01XaW5kb3cgdXNlIERPTVdpbmRv
dworICAgICAgICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBpbXBsZW1l
bnRhdGlvbi4gQXMgYSBzaWRlIGVmZmVjdCwgdGhlCisgICAgICAgIGVycm9yIG1lc3NhZ2UgaGFz
IGNoYW5nZWQgZnJvbSAiQ2Fubm90IGRlY29kZSBiYXNlNjQiIHRvIG9uZSB0aGF0CisgICAgICAg
IGluZGljYXRlcyBET00gRXhjZXB0aW9uLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvIEZpcmVmb3gu
CisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZzogd2luZG93LmJ0b2EoKSBhbmQgd2luZG93
LmF0b2IoKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gRE9NV2luZG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcyMworCisgICAgICAgICogZmFz
dC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQ6CisgICAgICAgICAgUmViYXNlbGlu
ZWQgZXhwZWN0YXRpb24gZHVlIHRvIGNoYW5nZSBvZiBlcnJvciBtZXNzYWdlLgorICAgICAgICAK
IDIwMTAtMDMtMDMgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQK
aW5kZXggM2M4MDZkMS4uYTJiYjMxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKQEAgLTI0LDIyICsyNCwyMiBAQCBQQVNTIHR5
cGVvZiB3aW5kb3cuYXRvYiBpcyAiZnVuY3Rpb24iCiBQQVNTIHdpbmRvdy5hdG9iKCkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgd2luZG93
LmF0b2IoIiIpIGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKG51bGwpIGlzICIiCi1QQVNTIHdpbmRv
dy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogQ2Fubm90IGRlY29kZSBiYXNl
NjQuCi1QQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09IikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4K
K1BBU1Mgd2luZG93LmF0b2IoIllRPT1cdTAwMGEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3aW5kb3cuYXRvYigi
NmVrPSIpIGlzICLDqcOpIgogUEFTUyB3aW5kb3cuYXRvYigiNmVrIikgaXMgIsOpw6kiCiBQQVNT
IHdpbmRvdy5hdG9iKCJnSUU9IikgaXMgIsKAwoEiCiBQQVNTIHdpbmRvdy5hdG9iKCLRgtC10YHR
giIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCJ6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBD
YW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoInoiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3
aW5kb3cuYXRvYigienoiKSBpcyAiw48iCiBQQVNTIHdpbmRvdy5hdG9iKCJ6enoiKSBpcyAiw488
IgogUEFTUyB3aW5kb3cuYXRvYigienp6eiIpIGlzICLDjzzDsyIKLVBBU1Mgd2luZG93LmF0b2Io
Inp6enp6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBB
U1Mgd2luZG93LmF0b2IoIj0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUg
YmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENh
bm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT09IikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBBU1Mgd2luZG93LmF0b2IoIj09PT0i
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5k
b3cuYXRvYigiPT09PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFz
ZTY0LgorUEFTUyB3aW5kb3cuYXRvYigienp6enoiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigi
PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCI9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9i
KCI9PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9N
IEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigiPT09PSIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRv
dy5hdG9iKCI9PT09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJf
RVJSOiBET00gRXhjZXB0aW9uIDUuCiBQQVNTIHdpbmRvdy5hdG9iIGlzIDAKIFBBU1MgdHlwZW9m
IHdpbmRvdy5hdG9iIGlzICJudW1iZXIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDFlOTMzZGYuLjk1ODNhOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMDQgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZWQgaW1wbGVtZW50YXRpb25zIG9mIHdpbmRvdy5idG9hKCkg
YW5kIHdpbmRvdy5hdG9iKCkgZnJvbQorICAgICAgICBKU0RPTVdpbmRvdyB0byBET01XaW5kb3cs
IGFuZCBtYWtlIFY4RE9NV2luZG93IHVzZSBET01XaW5kb3cKKyAgICAgICAgZnVuY3Rpb25zIGlu
c3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgaW1wbGVtZW50YXRpb24uIEFzIGEgc2lkZSBlZmZl
Y3QsIHRoZQorICAgICAgICBlcnJvciBtZXNzYWdlIGhhcyBjaGFuZ2VkIGZyb20gIkNhbm5vdCBk
ZWNvZGUgYmFzZTY0IiB0byBvbmUgdGhhdAorICAgICAgICBpbmRpY2F0ZXMgRE9NIEV4Y2VwdGlv
biwgd2hpY2ggaXMgY29tcGF0aWJsZSB0byBGaXJlZm94LgorICAgICAgICAKKyAgICAgICAgUmVm
YWN0b3Jpbmc6IHdpbmRvdy5idG9hKCkgYW5kIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIG9uIERPTVdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU3MjMKKworICAgICAgICBObyBuZXcgdGVzdC4gTm8gbmV3IGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YXRvYik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6YnRvYSk6CisgICAgICAgIE1vdmVkIGNvbnZlcnNpb24gY29kZSB0byBET01X
aW5kb3cgYW5kIGludm9rZSBpdC4gQXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBo
ZXJlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmF0b2JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YnRvYUNhbGxiYWNrKToKKyAgICAgICAg
UmVtb3ZlIGNvbnZlcnNpb24gY29kZSBhbmQgY2FsbCBET01XaW5kb3cgQVBJcy4gQWx0aG91Z2gg
YXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBoZXJlLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNNdWx0aWJ5dGVD
aGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmF0b2IpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgIE1vdmVkIENvbnZlcnNpb24gY29kZSBmcm9tIEpTRE9NV2luZG93LCBtb2RpZmlu
ZyB0byBmaXQgSlNDIGluZGVwZW5kZW50LgorCiAyMDEwLTAzLTA0ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBjNzE3NjFjLi5mNzJm
Nzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtOTQy
LDUxICs5NDIsMjggQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YXRvYihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAodi5pc051bGwo
KSkKKyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMpOwotICAgIGlm
ICghcy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9D
SEFSQUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0g
ICAgVmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRh
dGEoKVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGlmICghYmFzZTY0RGVjb2Rl
KGluLCBvdXQpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3Is
ICJDYW5ub3QgZGVjb2RlIGJhc2U2NCIpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFN0cmluZyByZXN1bHQgPSBpbXBsKCktPmF0b2IoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwg
ZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgU3RyaW5nKHJlc3VsdC5jaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSkp
OwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpidG9hKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7
Ci0KLSAgICBKU1ZhbHVlIHYgPSBhcmdzLmF0KDApOwotICAgIGlmICh2LmlzTnVsbCgpKQorICAg
IGlmIChhcmdzLmF0KDApLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhl
eGVjKTsKIAotICAgIFVTdHJpbmcgcyA9IHYudG9TdHJpbmcoZXhlYyk7Ci0gICAgaWYgKCFzLmlz
OEJpdCgpKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8Y2hhcj4gaW4ocy5zaXplKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzLnNp
emUoKTsgKytpKQotICAgICAgICBpbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ld
KTsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0OwotCi0gICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXBsKCktPmJ0
b2EoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nKG91dC5kYXRhKCks
IG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nKHJlc3VsdC5j
aGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSkpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93
OjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCBlOWY3Y2E4Li5mOGE4NzAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKIAotI2luY2x1ZGUgIkJhc2U2NC5oIgog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9N
VGltZXIuaCIKQEAgLTE0NiwzNyArMTQ1LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRv
d1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAg
ICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyhpZCk7CiB9CiAKLXN0YXRpYyBib29sIGlzQXNjaWko
Y29uc3QgU3RyaW5nJiBzdHIpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIubGVu
Z3RoKCk7IGkrKykgewotICAgICAgICBpZiAoc3RyW2ldID4gMHhGRikKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydEJhc2U2NChjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCBlbmNv
ZGUpCi17Ci0gICAgaWYgKCFpc0FzY2lpKHN0cikpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKElOVkFMSURfQ0hBUkFDVEVSX0VSUik7Ci0gICAgICAgIHJldHVybiBub3RIYW5k
bGVkQnlJbnRlcmNlcHRvcigpOwotICAgIH0KLQotICAgIFZlY3RvcjxjaGFyPiBpbnB1dENoYXJh
Y3RlcnMoc3RyLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5sZW5n
dGgoKTsgaSsrKQotICAgICAgICBpbnB1dENoYXJhY3RlcnNbaV0gPSBzdGF0aWNfY2FzdDxjaGFy
PihzdHJbaV0pOwotICAgIFZlY3RvcjxjaGFyPiBvdXRwdXRDaGFyYWN0ZXJzOwotCi0gICAgaWYg
KGVuY29kZSkKLSAgICAgICAgYmFzZTY0RW5jb2RlKGlucHV0Q2hhcmFjdGVycywgb3V0cHV0Q2hh
cmFjdGVycyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGlucHV0Q2hh
cmFjdGVycywgb3V0cHV0Q2hhcmFjdGVycykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cigiQ2Fubm90IGRlY29kZSBiYXNlNjQiLCBWOFByb3h5OjpHZW5lcmFsRXJyb3IpOwotICAgIH0K
LQotICAgIHJldHVybiB2OFN0cmluZyhTdHJpbmcob3V0cHV0Q2hhcmFjdGVycy5kYXRhKCksIG91
dHB1dENoYXJhY3RlcnMuc2l6ZSgpKSk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwpAQCAtMzc2LDM4ICszNDQsMzQgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjphdG9iQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYXRvYigpIik7CiAK
KyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJO
b3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKICAgICBpZiAoYXJn
c1swXS0+SXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB2OFN0cmluZygiIik7Ci0gICAgU3RyaW5n
IHN0ciA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIERPTVdpbmRvdyogaW1wID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXAtPmF0b2IodG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pLCBlYyk7CisgICAgdGhyb3dFcnJvcihlYyk7CiAKLSAgICBpZiAoIVY4QmluZGluZ1Nl
Y3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1l
KCksIHRydWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBh
cmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICByZXR1cm4gY29udmVydEJh
c2U2NChzdHIsIGZhbHNlKTsKKyAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKIH0KIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpidG9hQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYnRvYSgpIik7
CiAKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKICAgICBpZiAo
YXJnc1swXS0+SXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB2OFN0cmluZygiIik7Ci0gICAgU3Ry
aW5nIHN0ciA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIERPTVdpbmRvdyogaW1w
ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXAtPmJ0b2EodG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pLCBlYyk7CisgICAgdGhyb3dFcnJvcihlYyk7CiAKLSAgICBpZiAoIVY4QmluZGlu
Z1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZy
YW1lKCksIHRydWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3Vn
aCBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICByZXR1cm4gY29udmVy
dEJhc2U2NChzdHIsIHRydWUpOworICAgIHJldHVybiB2OFN0cmluZyhyZXN1bHQpOwogfQogCiAv
LyBGSVhNRShmcWlhbik6IHJldHVybmluZyBzdHJpbmcgaXMgY2hlYXRpbmcsIGFuZCB3ZSBzaG91
bGQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggN2UwYWQyMy4uZWNhYjA4MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKIAorI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkJhckluZm8uaCIKICNpbmNsdWRl
ICJCZWZvcmVVbmxvYWRFdmVudC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oIgpAQCAtODI2LDYgKzgyNyw1OCBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBib29sIGhhc011bHRpYnl0ZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgZm9yICh1bnNpZ25lZCBpPTA7IGk8c3RyaW5nLmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKHN0cmluZ1tpXSA+IDB4RkYpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBE
T01XaW5kb3c6OmJ0b2EoY29uc3QgU3RyaW5nJiBzdHJpbmdUb0VuY29kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKGhhc011bHRpYnl0ZUNoYXJhY3RlcnMoc3RyaW5nVG9FbmNvZGUp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgfQorCisgICAgVmVjdG9yPGNoYXI+IGluKHN0cmluZ1RvRW5jb2RlLmxl
bmd0aCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nVG9FbmNvZGUubGVu
Z3RoKCk7ICsraSkKKyAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzdHJpbmdUb0Vu
Y29kZVtpXSk7CisgICAgVmVjdG9yPGNoYXI+IG91dDsKKworICAgIGJhc2U2NEVuY29kZShpbiwg
b3V0KTsKKworICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7Cit9CisK
K1N0cmluZyBET01XaW5kb3c6OmF0b2IoY29uc3QgU3RyaW5nJiBlbmNvZGVkU3RyaW5nLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoaGFzTXVsdGlieXRlQ2hhcmFjdGVycyhlbmNvZGVk
U3RyaW5nKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworICAgIH0KKworI2lmIDEKKyAgICBWZWN0b3I8Y2hhcj4gaW4oZW5j
b2RlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVuY29k
ZWRTdHJpbmcubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFy
PihlbmNvZGVkU3RyaW5nW2ldKTsKKyNlbHNlCisgICAgVmVjdG9yPGNoYXI+IGluOworICAgIGlu
LmFwcGVuZChlbmNvZGVkU3RyaW5nLmNoYXJhY3RlcnMoKSwgZW5jb2RlZFN0cmluZy5sZW5ndGgo
KSk7CisjZW5kaWYKKyAgICBWZWN0b3I8Y2hhcj4gb3V0OworCisgICAgaWYgKCFiYXNlNjREZWNv
ZGUoaW4sIG91dCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKG91dC5kYXRh
KCksIG91dC5zaXplKCkpOworfQorCiBib29sIERPTVdpbmRvdzo6ZmluZChjb25zdCBTdHJpbmcm
IHN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJhY2t3YXJkcywgYm9vbCB3cmFwLCBi
b29sIC8qd2hvbGVXb3JkKi8sIGJvb2wgLypzZWFyY2hJbkZyYW1lcyovLCBib29sIC8qc2hvd0Rp
YWxvZyovKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0NDUyZGJi
Li5lYTRlMTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0xMzksNyArMTM5LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIGFsZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAg
IGJvb2wgY29uZmlybShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICBTdHJpbmcgcHJv
bXB0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpOwot
CisgICAgICAgIFN0cmluZyBidG9hKGNvbnN0IFN0cmluZyYgc3RyaW5nVG9FbmNvZGUsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICAgICAgU3RyaW5nIGF0b2IoY29uc3QgU3RyaW5nJiBlbmNvZGVkU3Ry
aW5nLCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIGJvb2wgZmluZChjb25zdCBTdHJpbmcmLCBi
b29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBib29sIHdyYXAsIGJvb2wgd2hvbGVX
b3JkLCBib29sIHNlYXJjaEluRnJhbWVzLCBib29sIHNob3dEaWFsb2cpIGNvbnN0OwogCiAgICAg
ICAgIGJvb2wgb2Zmc2NyZWVuQnVmZmVyaW5nKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49998</attachid>
            <date>2010-03-04 02:06:23 -0800</date>
            <delta_ts>2010-03-04 18:04:17 -0800</delta_ts>
            <desc>v1; fix style violations</desc>
            <filename>bug-35723-20100304190621.patch</filename>
            <type>text/plain</type>
            <size>13151</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2E4YmE0Li40MWI1ZWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisgICAgICAgIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBpbXBsZW1lbnRh
dGlvbnMgb2Ygd2luZG93LmJ0b2EoKSBhbmQgd2luZG93LmF0b2IoKSBmcm9tCisgICAgICAgIEpT
RE9NV2luZG93IHRvIERPTVdpbmRvdywgYW5kIG1ha2UgVjhET01XaW5kb3cgdXNlIERPTVdpbmRv
dworICAgICAgICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBpbXBsZW1l
bnRhdGlvbi4gQXMgYSBzaWRlIGVmZmVjdCwgdGhlCisgICAgICAgIGVycm9yIG1lc3NhZ2UgaGFz
IGNoYW5nZWQgZnJvbSAiQ2Fubm90IGRlY29kZSBiYXNlNjQiIHRvIG9uZSB0aGF0CisgICAgICAg
IGluZGljYXRlcyBET00gRXhjZXB0aW9uLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvIEZpcmVmb3gu
CisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZzogd2luZG93LmJ0b2EoKSBhbmQgd2luZG93
LmF0b2IoKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gRE9NV2luZG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcyMworCisgICAgICAgICogZmFz
dC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQ6CisgICAgICAgICAgUmViYXNlbGlu
ZWQgZXhwZWN0YXRpb24gZHVlIHRvIGNoYW5nZSBvZiBlcnJvciBtZXNzYWdlLgorICAgICAgICAK
IDIwMTAtMDMtMDMgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQK
aW5kZXggM2M4MDZkMS4uYTJiYjMxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKQEAgLTI0LDIyICsyNCwyMiBAQCBQQVNTIHR5
cGVvZiB3aW5kb3cuYXRvYiBpcyAiZnVuY3Rpb24iCiBQQVNTIHdpbmRvdy5hdG9iKCkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgd2luZG93
LmF0b2IoIiIpIGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKG51bGwpIGlzICIiCi1QQVNTIHdpbmRv
dy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogQ2Fubm90IGRlY29kZSBiYXNl
NjQuCi1QQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09IikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4K
K1BBU1Mgd2luZG93LmF0b2IoIllRPT1cdTAwMGEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3aW5kb3cuYXRvYigi
NmVrPSIpIGlzICLDqcOpIgogUEFTUyB3aW5kb3cuYXRvYigiNmVrIikgaXMgIsOpw6kiCiBQQVNT
IHdpbmRvdy5hdG9iKCJnSUU9IikgaXMgIsKAwoEiCiBQQVNTIHdpbmRvdy5hdG9iKCLRgtC10YHR
giIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCJ6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBD
YW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoInoiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3
aW5kb3cuYXRvYigienoiKSBpcyAiw48iCiBQQVNTIHdpbmRvdy5hdG9iKCJ6enoiKSBpcyAiw488
IgogUEFTUyB3aW5kb3cuYXRvYigienp6eiIpIGlzICLDjzzDsyIKLVBBU1Mgd2luZG93LmF0b2Io
Inp6enp6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBB
U1Mgd2luZG93LmF0b2IoIj0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUg
YmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENh
bm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT09IikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBBU1Mgd2luZG93LmF0b2IoIj09PT0i
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5k
b3cuYXRvYigiPT09PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFz
ZTY0LgorUEFTUyB3aW5kb3cuYXRvYigienp6enoiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigi
PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCI9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9i
KCI9PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9N
IEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigiPT09PSIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRv
dy5hdG9iKCI9PT09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJf
RVJSOiBET00gRXhjZXB0aW9uIDUuCiBQQVNTIHdpbmRvdy5hdG9iIGlzIDAKIFBBU1MgdHlwZW9m
IHdpbmRvdy5hdG9iIGlzICJudW1iZXIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDFlOTMzZGYuLjk1ODNhOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMDQgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZWQgaW1wbGVtZW50YXRpb25zIG9mIHdpbmRvdy5idG9hKCkg
YW5kIHdpbmRvdy5hdG9iKCkgZnJvbQorICAgICAgICBKU0RPTVdpbmRvdyB0byBET01XaW5kb3cs
IGFuZCBtYWtlIFY4RE9NV2luZG93IHVzZSBET01XaW5kb3cKKyAgICAgICAgZnVuY3Rpb25zIGlu
c3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgaW1wbGVtZW50YXRpb24uIEFzIGEgc2lkZSBlZmZl
Y3QsIHRoZQorICAgICAgICBlcnJvciBtZXNzYWdlIGhhcyBjaGFuZ2VkIGZyb20gIkNhbm5vdCBk
ZWNvZGUgYmFzZTY0IiB0byBvbmUgdGhhdAorICAgICAgICBpbmRpY2F0ZXMgRE9NIEV4Y2VwdGlv
biwgd2hpY2ggaXMgY29tcGF0aWJsZSB0byBGaXJlZm94LgorICAgICAgICAKKyAgICAgICAgUmVm
YWN0b3Jpbmc6IHdpbmRvdy5idG9hKCkgYW5kIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIG9uIERPTVdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU3MjMKKworICAgICAgICBObyBuZXcgdGVzdC4gTm8gbmV3IGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YXRvYik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6YnRvYSk6CisgICAgICAgIE1vdmVkIGNvbnZlcnNpb24gY29kZSB0byBET01X
aW5kb3cgYW5kIGludm9rZSBpdC4gQXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBo
ZXJlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmF0b2JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YnRvYUNhbGxiYWNrKToKKyAgICAgICAg
UmVtb3ZlIGNvbnZlcnNpb24gY29kZSBhbmQgY2FsbCBET01XaW5kb3cgQVBJcy4gQWx0aG91Z2gg
YXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBoZXJlLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNNdWx0aWJ5dGVD
aGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmF0b2IpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgIE1vdmVkIENvbnZlcnNpb24gY29kZSBmcm9tIEpTRE9NV2luZG93LCBtb2RpZmlu
ZyB0byBmaXQgSlNDIGluZGVwZW5kZW50LgorCiAyMDEwLTAzLTA0ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBjNzE3NjFjLi5mNzJm
Nzk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtOTQy
LDUxICs5NDIsMjggQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YXRvYihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAodi5pc051bGwo
KSkKKyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMpOwotICAgIGlm
ICghcy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9D
SEFSQUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0g
ICAgVmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRh
dGEoKVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGlmICghYmFzZTY0RGVjb2Rl
KGluLCBvdXQpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3Is
ICJDYW5ub3QgZGVjb2RlIGJhc2U2NCIpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFN0cmluZyByZXN1bHQgPSBpbXBsKCktPmF0b2IoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwg
ZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgU3RyaW5nKHJlc3VsdC5jaGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSkp
OwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpidG9hKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKIHsKICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7
Ci0KLSAgICBKU1ZhbHVlIHYgPSBhcmdzLmF0KDApOwotICAgIGlmICh2LmlzTnVsbCgpKQorICAg
IGlmIChhcmdzLmF0KDApLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhl
eGVjKTsKIAotICAgIFVTdHJpbmcgcyA9IHYudG9TdHJpbmcoZXhlYyk7Ci0gICAgaWYgKCFzLmlz
OEJpdCgpKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBJTlZBTElEX0NIQVJBQ1RF
Ul9FUlIpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8Y2hhcj4gaW4ocy5zaXplKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzLnNp
emUoKTsgKytpKQotICAgICAgICBpbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ld
KTsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0OwotCi0gICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXBsKCktPmJ0
b2EoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nKG91dC5kYXRhKCks
IG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nKHJlc3VsdC5j
aGFyYWN0ZXJzKCksIHJlc3VsdC5sZW5ndGgoKSkpOwogfQogCiBKU1ZhbHVlIEpTRE9NV2luZG93
OjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCBlOWY3Y2E4Li5mOGE4NzAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKIAotI2luY2x1ZGUgIkJhc2U2NC5oIgog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRE9N
VGltZXIuaCIKQEAgLTE0NiwzNyArMTQ1LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdpbmRv
d1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAg
ICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyhpZCk7CiB9CiAKLXN0YXRpYyBib29sIGlzQXNjaWko
Y29uc3QgU3RyaW5nJiBzdHIpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHIubGVu
Z3RoKCk7IGkrKykgewotICAgICAgICBpZiAoc3RyW2ldID4gMHhGRikKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydEJhc2U2NChjb25zdCBTdHJpbmcmIHN0ciwgYm9vbCBlbmNv
ZGUpCi17Ci0gICAgaWYgKCFpc0FzY2lpKHN0cikpIHsKLSAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKElOVkFMSURfQ0hBUkFDVEVSX0VSUik7Ci0gICAgICAgIHJldHVybiBub3RIYW5k
bGVkQnlJbnRlcmNlcHRvcigpOwotICAgIH0KLQotICAgIFZlY3RvcjxjaGFyPiBpbnB1dENoYXJh
Y3RlcnMoc3RyLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5sZW5n
dGgoKTsgaSsrKQotICAgICAgICBpbnB1dENoYXJhY3RlcnNbaV0gPSBzdGF0aWNfY2FzdDxjaGFy
PihzdHJbaV0pOwotICAgIFZlY3RvcjxjaGFyPiBvdXRwdXRDaGFyYWN0ZXJzOwotCi0gICAgaWYg
KGVuY29kZSkKLSAgICAgICAgYmFzZTY0RW5jb2RlKGlucHV0Q2hhcmFjdGVycywgb3V0cHV0Q2hh
cmFjdGVycyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICghYmFzZTY0RGVjb2RlKGlucHV0Q2hh
cmFjdGVycywgb3V0cHV0Q2hhcmFjdGVycykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cigiQ2Fubm90IGRlY29kZSBiYXNlNjQiLCBWOFByb3h5OjpHZW5lcmFsRXJyb3IpOwotICAgIH0K
LQotICAgIHJldHVybiB2OFN0cmluZyhTdHJpbmcob3V0cHV0Q2hhcmFjdGVycy5kYXRhKCksIG91
dHB1dENoYXJhY3RlcnMuc2l6ZSgpKSk7Ci19Ci0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6ZXZlbnRBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6
R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwpAQCAtMzc2LDM4ICszNDQsMzQgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjphdG9iQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYXRvYigpIik7CiAK
KyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJO
b3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKICAgICBpZiAoYXJn
c1swXS0+SXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB2OFN0cmluZygiIik7Ci0gICAgU3RyaW5n
IHN0ciA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIERPTVdpbmRvdyogaW1wID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXAtPmF0b2IodG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pLCBlYyk7CisgICAgdGhyb3dFcnJvcihlYyk7CiAKLSAgICBpZiAoIVY4QmluZGluZ1Nl
Y3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1l
KCksIHRydWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBh
cmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICByZXR1cm4gY29udmVydEJh
c2U2NChzdHIsIGZhbHNlKTsKKyAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0KTsKIH0KIAogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpidG9hQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5ET01XaW5kb3cuYnRvYSgpIik7
CiAKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKICAgICBpZiAo
YXJnc1swXS0+SXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB2OFN0cmluZygiIik7Ci0gICAgU3Ry
aW5nIHN0ciA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKIAogICAgIERPTVdpbmRvdyogaW1w
ID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFN0cmluZyByZXN1bHQgPSBpbXAtPmJ0b2EodG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pLCBlYyk7CisgICAgdGhyb3dFcnJvcihlYyk7CiAKLSAgICBpZiAoIVY4QmluZGlu
Z1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZy
YW1lKCksIHRydWUpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3Vn
aCBhcmd1bWVudHMiLCBWOFByb3h5OjpTeW50YXhFcnJvcik7Ci0KLSAgICByZXR1cm4gY29udmVy
dEJhc2U2NChzdHIsIHRydWUpOworICAgIHJldHVybiB2OFN0cmluZyhyZXN1bHQpOwogfQogCiAv
LyBGSVhNRShmcWlhbik6IHJldHVybmluZyBzdHJpbmcgaXMgY2hlYXRpbmcsIGFuZCB3ZSBzaG91
bGQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggN2UwYWQyMy4uYjc4YmIxNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKIAorI2luY2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkJhckluZm8uaCIKICNpbmNsdWRl
ICJCZWZvcmVVbmxvYWRFdmVudC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oIgpAQCAtODI2LDYgKzgyNyw1OCBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBib29sIGhhc011bHRpYnl0ZUNoYXJhY3RlcnMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmlu
Zy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgIGlmIChzdHJpbmdbaV0gPiAweEZGKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJp
bmcgRE9NV2luZG93OjpidG9hKGNvbnN0IFN0cmluZyYgc3RyaW5nVG9FbmNvZGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChoYXNNdWx0aWJ5dGVDaGFyYWN0ZXJzKHN0cmluZ1RvRW5j
b2RlKSkgeworICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgIH0KKworICAgIFZlY3RvcjxjaGFyPiBpbihzdHJpbmdUb0VuY29k
ZS5sZW5ndGgoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZ1RvRW5jb2Rl
Lmxlbmd0aCgpOyArK2kpCisgICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3RyaW5n
VG9FbmNvZGVbaV0pOworICAgIFZlY3RvcjxjaGFyPiBvdXQ7CisKKyAgICBiYXNlNjRFbmNvZGUo
aW4sIG91dCk7CisKKyAgICByZXR1cm4gU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpOwor
fQorCitTdHJpbmcgRE9NV2luZG93OjphdG9iKGNvbnN0IFN0cmluZyYgZW5jb2RlZFN0cmluZywg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKGhhc011bHRpYnl0ZUNoYXJhY3RlcnMoZW5j
b2RlZFN0cmluZykpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyNpZiAxCisgICAgVmVjdG9yPGNoYXI+IGlu
KGVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBl
bmNvZGVkU3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oZW5jb2RlZFN0cmluZ1tpXSk7CisjZWxzZQorICAgIFZlY3RvcjxjaGFyPiBpbjsKKyAg
ICBpbi5hcHBlbmQoZW5jb2RlZFN0cmluZy5jaGFyYWN0ZXJzKCksIGVuY29kZWRTdHJpbmcubGVu
Z3RoKCkpOworI2VuZGlmCisgICAgVmVjdG9yPGNoYXI+IG91dDsKKworICAgIGlmICghYmFzZTY0
RGVjb2RlKGluLCBvdXQpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhvdXQu
ZGF0YSgpLCBvdXQuc2l6ZSgpKTsKK30KKwogYm9vbCBET01XaW5kb3c6OmZpbmQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBiYWNrd2FyZHMsIGJvb2wgd3Jh
cCwgYm9vbCAvKndob2xlV29yZCovLCBib29sIC8qc2VhcmNoSW5GcmFtZXMqLywgYm9vbCAvKnNo
b3dEaWFsb2cqLykgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggNDQ1
MmRiYi4uZWE0ZTE3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTM5LDcgKzEzOSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBhbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
ICAgICBib29sIGNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgU3RyaW5n
IHByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVl
KTsKLQorICAgICAgICBTdHJpbmcgYnRvYShjb25zdCBTdHJpbmcmIHN0cmluZ1RvRW5jb2RlLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIFN0cmluZyBhdG9iKGNvbnN0IFN0cmluZyYgZW5jb2Rl
ZFN0cmluZywgRXhjZXB0aW9uQ29kZSYpOwogICAgICAgICBib29sIGZpbmQoY29uc3QgU3RyaW5n
JiwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJhY2t3YXJkcywgYm9vbCB3cmFwLCBib29sIHdo
b2xlV29yZCwgYm9vbCBzZWFyY2hJbkZyYW1lcywgYm9vbCBzaG93RGlhbG9nKSBjb25zdDsKIAog
ICAgICAgICBib29sIG9mZnNjcmVlbkJ1ZmZlcmluZygpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50075</attachid>
            <date>2010-03-04 18:04:22 -0800</date>
            <delta_ts>2010-03-04 19:58:53 -0800</delta_ts>
            <desc>v2; follow the feedback, cleanup a little</desc>
            <filename>bug-35723-20100305110420.patch</filename>
            <type>text/plain</type>
            <size>12950</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2E4YmE0Li40MWI1ZWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisgICAgICAgIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBpbXBsZW1lbnRh
dGlvbnMgb2Ygd2luZG93LmJ0b2EoKSBhbmQgd2luZG93LmF0b2IoKSBmcm9tCisgICAgICAgIEpT
RE9NV2luZG93IHRvIERPTVdpbmRvdywgYW5kIG1ha2UgVjhET01XaW5kb3cgdXNlIERPTVdpbmRv
dworICAgICAgICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBpbXBsZW1l
bnRhdGlvbi4gQXMgYSBzaWRlIGVmZmVjdCwgdGhlCisgICAgICAgIGVycm9yIG1lc3NhZ2UgaGFz
IGNoYW5nZWQgZnJvbSAiQ2Fubm90IGRlY29kZSBiYXNlNjQiIHRvIG9uZSB0aGF0CisgICAgICAg
IGluZGljYXRlcyBET00gRXhjZXB0aW9uLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvIEZpcmVmb3gu
CisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZzogd2luZG93LmJ0b2EoKSBhbmQgd2luZG93
LmF0b2IoKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gRE9NV2luZG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcyMworCisgICAgICAgICogZmFz
dC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQ6CisgICAgICAgICAgUmViYXNlbGlu
ZWQgZXhwZWN0YXRpb24gZHVlIHRvIGNoYW5nZSBvZiBlcnJvciBtZXNzYWdlLgorICAgICAgICAK
IDIwMTAtMDMtMDMgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQK
aW5kZXggM2M4MDZkMS4uYTJiYjMxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKQEAgLTI0LDIyICsyNCwyMiBAQCBQQVNTIHR5
cGVvZiB3aW5kb3cuYXRvYiBpcyAiZnVuY3Rpb24iCiBQQVNTIHdpbmRvdy5hdG9iKCkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgd2luZG93
LmF0b2IoIiIpIGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKG51bGwpIGlzICIiCi1QQVNTIHdpbmRv
dy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogQ2Fubm90IGRlY29kZSBiYXNl
NjQuCi1QQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09IikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4K
K1BBU1Mgd2luZG93LmF0b2IoIllRPT1cdTAwMGEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3aW5kb3cuYXRvYigi
NmVrPSIpIGlzICLDqcOpIgogUEFTUyB3aW5kb3cuYXRvYigiNmVrIikgaXMgIsOpw6kiCiBQQVNT
IHdpbmRvdy5hdG9iKCJnSUU9IikgaXMgIsKAwoEiCiBQQVNTIHdpbmRvdy5hdG9iKCLRgtC10YHR
giIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCJ6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBD
YW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoInoiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3
aW5kb3cuYXRvYigienoiKSBpcyAiw48iCiBQQVNTIHdpbmRvdy5hdG9iKCJ6enoiKSBpcyAiw488
IgogUEFTUyB3aW5kb3cuYXRvYigienp6eiIpIGlzICLDjzzDsyIKLVBBU1Mgd2luZG93LmF0b2Io
Inp6enp6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBB
U1Mgd2luZG93LmF0b2IoIj0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUg
YmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENh
bm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT09IikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBBU1Mgd2luZG93LmF0b2IoIj09PT0i
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5k
b3cuYXRvYigiPT09PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFz
ZTY0LgorUEFTUyB3aW5kb3cuYXRvYigienp6enoiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigi
PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCI9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9i
KCI9PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9N
IEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigiPT09PSIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRv
dy5hdG9iKCI9PT09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJf
RVJSOiBET00gRXhjZXB0aW9uIDUuCiBQQVNTIHdpbmRvdy5hdG9iIGlzIDAKIFBBU1MgdHlwZW9m
IHdpbmRvdy5hdG9iIGlzICJudW1iZXIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDFlOTMzZGYuLjk1ODNhOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMDQgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZWQgaW1wbGVtZW50YXRpb25zIG9mIHdpbmRvdy5idG9hKCkg
YW5kIHdpbmRvdy5hdG9iKCkgZnJvbQorICAgICAgICBKU0RPTVdpbmRvdyB0byBET01XaW5kb3cs
IGFuZCBtYWtlIFY4RE9NV2luZG93IHVzZSBET01XaW5kb3cKKyAgICAgICAgZnVuY3Rpb25zIGlu
c3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgaW1wbGVtZW50YXRpb24uIEFzIGEgc2lkZSBlZmZl
Y3QsIHRoZQorICAgICAgICBlcnJvciBtZXNzYWdlIGhhcyBjaGFuZ2VkIGZyb20gIkNhbm5vdCBk
ZWNvZGUgYmFzZTY0IiB0byBvbmUgdGhhdAorICAgICAgICBpbmRpY2F0ZXMgRE9NIEV4Y2VwdGlv
biwgd2hpY2ggaXMgY29tcGF0aWJsZSB0byBGaXJlZm94LgorICAgICAgICAKKyAgICAgICAgUmVm
YWN0b3Jpbmc6IHdpbmRvdy5idG9hKCkgYW5kIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIG9uIERPTVdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU3MjMKKworICAgICAgICBObyBuZXcgdGVzdC4gTm8gbmV3IGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YXRvYik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6YnRvYSk6CisgICAgICAgIE1vdmVkIGNvbnZlcnNpb24gY29kZSB0byBET01X
aW5kb3cgYW5kIGludm9rZSBpdC4gQXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBo
ZXJlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmF0b2JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YnRvYUNhbGxiYWNrKToKKyAgICAgICAg
UmVtb3ZlIGNvbnZlcnNpb24gY29kZSBhbmQgY2FsbCBET01XaW5kb3cgQVBJcy4gQWx0aG91Z2gg
YXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBoZXJlLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNNdWx0aWJ5dGVD
aGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmF0b2IpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgIE1vdmVkIENvbnZlcnNpb24gY29kZSBmcm9tIEpTRE9NV2luZG93LCBtb2RpZmlu
ZyB0byBmaXQgSlNDIGluZGVwZW5kZW50LgorCiAyMDEwLTAzLTA0ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBjNzE3NjFjLi4xMjJi
OTJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMjEs
NyArMjEsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAKICNpbmNsdWRlICJB
dG9taWNTdHJpbmcuaCIKLSNpbmNsdWRlICJCYXNlNjQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtOTQyLDUx
ICs5NDEsMjggQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YXRvYihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAodi5pc051bGwoKSkK
KyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJp
bmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmICgh
cy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9DSEFS
QUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAg
VmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEo
KVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGlmICghYmFzZTY0RGVjb2RlKGlu
LCBvdXQpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsICJD
YW5ub3QgZGVjb2RlIGJhc2U2NCIpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0
cmluZyByZXN1bHQgPSBpbXBsKCktPmF0b2IoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgZWMp
OworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgcmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YnRvYShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAo
di5pc051bGwoKSkKKyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMp
OwotICAgIGlmICghcy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
SU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzLmRhdGEoKVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGJhc2U2NEVu
Y29kZShpbiwgb3V0KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcmVz
dWx0ID0gaW1wbCgpLT5idG9hKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGVjKTsKKyAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0
cmluZyhvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGU5ZjdjYTguLmY4YTg3MDAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOERP
TVdpbmRvdy5oIgogCi0jaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgpAQCAtMTQ2LDM3ICsx
NDUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHJldHVybiB2ODo6SW50ZWdlcjo6
TmV3KGlkKTsKIH0KIAotc3RhdGljIGJvb2wgaXNBc2NpaShjb25zdCBTdHJpbmcmIHN0cikKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAg
IGlmIChzdHJbaV0gPiAweEZGKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
QmFzZTY0KGNvbnN0IFN0cmluZyYgc3RyLCBib29sIGVuY29kZSkKLXsKLSAgICBpZiAoIWlzQXNj
aWkoc3RyKSkgewotICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oSU5WQUxJRF9DSEFS
QUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IGlucHV0Q2hhcmFjdGVycyhzdHIubGVuZ3RoKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspCi0gICAgICAgIGlu
cHV0Q2hhcmFjdGVyc1tpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHN0cltpXSk7Ci0gICAgVmVjdG9y
PGNoYXI+IG91dHB1dENoYXJhY3RlcnM7Ci0KLSAgICBpZiAoZW5jb2RlKQotICAgICAgICBiYXNl
NjRFbmNvZGUoaW5wdXRDaGFyYWN0ZXJzLCBvdXRwdXRDaGFyYWN0ZXJzKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoaW5wdXRDaGFyYWN0ZXJzLCBvdXRwdXRDaGFyYWN0
ZXJzKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJDYW5ub3QgZGVjb2RlIGJhc2U2
NCIsIFY4UHJveHk6OkdlbmVyYWxFcnJvcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4U3RyaW5n
KFN0cmluZyhvdXRwdXRDaGFyYWN0ZXJzLmRhdGEoKSwgb3V0cHV0Q2hhcmFjdGVycy5zaXplKCkp
KTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CkBAIC0zNzYsMzggKzM0NCwzNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6OmF0b2JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLkRPTVdpbmRvdy5hdG9iKCkiKTsKIAorICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwg
VjhQcm94eTo6U3ludGF4RXJyb3IpOwogICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIHY4U3RyaW5nKCIiKTsKLSAgICBTdHJpbmcgc3RyID0gdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pOwogCiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHJl
c3VsdCA9IGltcC0+YXRvYih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGVjKTsKKyAgICB0aHJv
d0Vycm9yKGVjKTsKIAotICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1l
KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5
bnRheEVycm9yKTsKLQotICAgIHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgZmFsc2UpOworICAg
IHJldHVybiB2OFN0cmluZyhyZXN1bHQpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OmJ0b2FDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5idG9hKCkiKTsKIAorICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRz
IiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwogICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHY4U3RyaW5nKCIiKTsKLSAgICBTdHJpbmcgc3RyID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOwogCiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5n
IHJlc3VsdCA9IGltcC0+YnRvYSh0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGVjKTsKKyAgICB0
aHJvd0Vycm9yKGVjKTsKIAotICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0Zy
YW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKLQotICAgIHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIHY4U3RyaW5nKHJlc3VsdCk7CiB9CiAKIC8vIEZJWE1FKGZxaWFuKTogcmV0dXJu
aW5nIHN0cmluZyBpcyBjaGVhdGluZywgYW5kIHdlIHNob3VsZApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA3
ZTBhZDIzLi4wNzI5M2QzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogCisjaW5jbHVkZSAiQmFzZTY0
LmgiCiAjaW5jbHVkZSAiQmFySW5mby5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC04MjYsNiArODI3
LDUxIEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorc3Rh
dGljIGJvb2wgaGFzTXVsdGlieXRlQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyBpKyspIHsKKyAg
ICAgICAgaWYgKHN0cmluZ1tpXSA+IDB4RkYpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBET01XaW5kb3c6OmJ0b2EoY29u
c3QgU3RyaW5nJiBzdHJpbmdUb0VuY29kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYg
KGhhc011bHRpYnl0ZUNoYXJhY3RlcnMoc3RyaW5nVG9FbmNvZGUpKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQor
CisgICAgVmVjdG9yPGNoYXI+IGluOworICAgIGluLmFwcGVuZChzdHJpbmdUb0VuY29kZS5jaGFy
YWN0ZXJzKCksIHN0cmluZ1RvRW5jb2RlLmxlbmd0aCgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gb3V0
OworCisgICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOworCisgICAgcmV0dXJuIFN0cmluZyhvdXQu
ZGF0YSgpLCBvdXQuc2l6ZSgpKTsKK30KKworU3RyaW5nIERPTVdpbmRvdzo6YXRvYihjb25zdCBT
dHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChoYXNN
dWx0aWJ5dGVDaGFyYWN0ZXJzKGVuY29kZWRTdHJpbmcpKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAg
VmVjdG9yPGNoYXI+IGluOworICAgIGluLmFwcGVuZChlbmNvZGVkU3RyaW5nLmNoYXJhY3RlcnMo
KSwgZW5jb2RlZFN0cmluZy5sZW5ndGgoKSk7CisgICAgVmVjdG9yPGNoYXI+IG91dDsKKworICAg
IGlmICghYmFzZTY0RGVjb2RlKGluLCBvdXQpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9DSEFS
QUNURVJfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJu
IFN0cmluZyhvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKTsKK30KKwogYm9vbCBET01XaW5kb3c6OmZp
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBiYWNrd2Fy
ZHMsIGJvb2wgd3JhcCwgYm9vbCAvKndob2xlV29yZCovLCBib29sIC8qc2VhcmNoSW5GcmFtZXMq
LywgYm9vbCAvKnNob3dEaWFsb2cqLykgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgKaW5kZXggNDQ1MmRiYi4uNWRlZTU0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTM5LDYgKzEzOSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhbGVydChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogICAgICAgICBib29sIGNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAg
ICAgICAgU3RyaW5nIHByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgU3RyaW5nIGJ0b2EoY29uc3QgU3RyaW5nJiBzdHJpbmdU
b0VuY29kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBTdHJpbmcgYXRvYihjb25zdCBTdHJp
bmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBib29sIGZpbmQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJhY2t3YXJkcywgYm9vbCB3
cmFwLCBib29sIHdob2xlV29yZCwgYm9vbCBzZWFyY2hJbkZyYW1lcywgYm9vbCBzaG93RGlhbG9n
KSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50083</attachid>
            <date>2010-03-04 19:58:59 -0800</date>
            <delta_ts>2010-03-06 05:03:57 -0800</delta_ts>
            <desc>v3; rename hasMultibyteCharacters to isSafeToConvertCharList</desc>
            <filename>bug-35723-20100305125857.patch</filename>
            <type>text/plain</type>
            <size>12955</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4M2E4YmE0Li40MWI1ZWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MDQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisgICAgICAgIAorICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBpbXBsZW1lbnRh
dGlvbnMgb2Ygd2luZG93LmJ0b2EoKSBhbmQgd2luZG93LmF0b2IoKSBmcm9tCisgICAgICAgIEpT
RE9NV2luZG93IHRvIERPTVdpbmRvdywgYW5kIG1ha2UgVjhET01XaW5kb3cgdXNlIERPTVdpbmRv
dworICAgICAgICBmdW5jdGlvbnMgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBpbXBsZW1l
bnRhdGlvbi4gQXMgYSBzaWRlIGVmZmVjdCwgdGhlCisgICAgICAgIGVycm9yIG1lc3NhZ2UgaGFz
IGNoYW5nZWQgZnJvbSAiQ2Fubm90IGRlY29kZSBiYXNlNjQiIHRvIG9uZSB0aGF0CisgICAgICAg
IGluZGljYXRlcyBET00gRXhjZXB0aW9uLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvIEZpcmVmb3gu
CisgICAgICAgIAorICAgICAgICBSZWZhY3RvcmluZzogd2luZG93LmJ0b2EoKSBhbmQgd2luZG93
LmF0b2IoKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gRE9NV2luZG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcyMworCisgICAgICAgICogZmFz
dC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQ6CisgICAgICAgICAgUmViYXNlbGlu
ZWQgZXhwZWN0YXRpb24gZHVlIHRvIGNoYW5nZSBvZiBlcnJvciBtZXNzYWdlLgorICAgICAgICAK
IDIwMTAtMDMtMDMgIERpZWdvIEdvbnphbGV6ICA8ZGllZ28uZ29uemFsZXpAb3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9hdG9iLWJ0b2EtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQK
aW5kZXggM2M4MDZkMS4uYTJiYjMxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L2F0b2ItYnRvYS1leHBlY3RlZC50eHQKQEAgLTI0LDIyICsyNCwyMiBAQCBQQVNTIHR5
cGVvZiB3aW5kb3cuYXRvYiBpcyAiZnVuY3Rpb24iCiBQQVNTIHdpbmRvdy5hdG9iKCkgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1Mgd2luZG93
LmF0b2IoIiIpIGlzICIiCiBQQVNTIHdpbmRvdy5hdG9iKG51bGwpIGlzICIiCi1QQVNTIHdpbmRv
dy5hdG9iKCIgWVE9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogQ2Fubm90IGRlY29kZSBiYXNl
NjQuCi1QQVNTIHdpbmRvdy5hdG9iKCJZUT09XHUwMDBhIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoIiBZUT09IikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX0NIQVJBQ1RFUl9FUlI6IERPTSBFeGNlcHRpb24gNS4K
K1BBU1Mgd2luZG93LmF0b2IoIllRPT1cdTAwMGEiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3aW5kb3cuYXRvYigi
NmVrPSIpIGlzICLDqcOpIgogUEFTUyB3aW5kb3cuYXRvYigiNmVrIikgaXMgIsOpw6kiCiBQQVNT
IHdpbmRvdy5hdG9iKCJnSUU9IikgaXMgIsKAwoEiCiBQQVNTIHdpbmRvdy5hdG9iKCLRgtC10YHR
giIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCi1QQVNTIHdpbmRvdy5hdG9iKCJ6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBD
YW5ub3QgZGVjb2RlIGJhc2U2NC4KK1BBU1Mgd2luZG93LmF0b2IoInoiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgogUEFTUyB3
aW5kb3cuYXRvYigienoiKSBpcyAiw48iCiBQQVNTIHdpbmRvdy5hdG9iKCJ6enoiKSBpcyAiw488
IgogUEFTUyB3aW5kb3cuYXRvYigienp6eiIpIGlzICLDjzzDsyIKLVBBU1Mgd2luZG93LmF0b2Io
Inp6enp6IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBB
U1Mgd2luZG93LmF0b2IoIj0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUg
YmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENh
bm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5kb3cuYXRvYigiPT09IikgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBDYW5ub3QgZGVjb2RlIGJhc2U2NC4KLVBBU1Mgd2luZG93LmF0b2IoIj09PT0i
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFzZTY0LgotUEFTUyB3aW5k
b3cuYXRvYigiPT09PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IENhbm5vdCBkZWNvZGUgYmFz
ZTY0LgorUEFTUyB3aW5kb3cuYXRvYigienp6enoiKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElO
VkFMSURfQ0hBUkFDVEVSX0VSUjogRE9NIEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigi
PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhj
ZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9iKCI9PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRvdy5hdG9i
KCI9PT0iKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfQ0hBUkFDVEVSX0VSUjogRE9N
IEV4Y2VwdGlvbiA1LgorUEFTUyB3aW5kb3cuYXRvYigiPT09PSIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSU5WQUxJRF9DSEFSQUNURVJfRVJSOiBET00gRXhjZXB0aW9uIDUuCitQQVNTIHdpbmRv
dy5hdG9iKCI9PT09PSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSU5WQUxJRF9DSEFSQUNURVJf
RVJSOiBET00gRXhjZXB0aW9uIDUuCiBQQVNTIHdpbmRvdy5hdG9iIGlzIDAKIFBBU1MgdHlwZW9m
IHdpbmRvdy5hdG9iIGlzICJudW1iZXIiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDFlOTMzZGYuLjk1ODNhOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMDMtMDQgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZWQgaW1wbGVtZW50YXRpb25zIG9mIHdpbmRvdy5idG9hKCkg
YW5kIHdpbmRvdy5hdG9iKCkgZnJvbQorICAgICAgICBKU0RPTVdpbmRvdyB0byBET01XaW5kb3cs
IGFuZCBtYWtlIFY4RE9NV2luZG93IHVzZSBET01XaW5kb3cKKyAgICAgICAgZnVuY3Rpb25zIGlu
c3RlYWQgb2YgaGF2aW5nIGEgc2VwYXJhdGUgaW1wbGVtZW50YXRpb24uIEFzIGEgc2lkZSBlZmZl
Y3QsIHRoZQorICAgICAgICBlcnJvciBtZXNzYWdlIGhhcyBjaGFuZ2VkIGZyb20gIkNhbm5vdCBk
ZWNvZGUgYmFzZTY0IiB0byBvbmUgdGhhdAorICAgICAgICBpbmRpY2F0ZXMgRE9NIEV4Y2VwdGlv
biwgd2hpY2ggaXMgY29tcGF0aWJsZSB0byBGaXJlZm94LgorICAgICAgICAKKyAgICAgICAgUmVm
YWN0b3Jpbmc6IHdpbmRvdy5idG9hKCkgYW5kIHdpbmRvdy5hdG9iKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIG9uIERPTVdpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzU3MjMKKworICAgICAgICBObyBuZXcgdGVzdC4gTm8gbmV3IGZ1bmN0aW9u
YWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6YXRvYik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvdzo6YnRvYSk6CisgICAgICAgIE1vdmVkIGNvbnZlcnNpb24gY29kZSB0byBET01X
aW5kb3cgYW5kIGludm9rZSBpdC4gQXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBo
ZXJlLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmF0b2JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6YnRvYUNhbGxiYWNrKToKKyAgICAgICAg
UmVtb3ZlIGNvbnZlcnNpb24gY29kZSBhbmQgY2FsbCBET01XaW5kb3cgQVBJcy4gQWx0aG91Z2gg
YXJndW1lbnQKKyAgICAgICAgY2hlY2tpbmcgcmVtYWlucyBoZXJlLgorICAgICAgICAKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNNdWx0aWJ5dGVD
aGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OmF0b2IpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6
CisgICAgICAgIE1vdmVkIENvbnZlcnNpb24gY29kZSBmcm9tIEpTRE9NV2luZG93LCBtb2RpZmlu
ZyB0byBmaXQgSlNDIGluZGVwZW5kZW50LgorCiAyMDEwLTAzLTA0ICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBjNzE3NjFjLi4xMjJi
OTJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtMjEs
NyArMjEsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCiAKICNpbmNsdWRlICJB
dG9taWNTdHJpbmcuaCIKLSNpbmNsdWRlICJCYXNlNjQuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtOTQyLDUx
ICs5NDEsMjggQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YXRvYihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAodi5pc051bGwoKSkK
KyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJp
bmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMpOwotICAgIGlmICgh
cy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgSU5WQUxJRF9DSEFS
QUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgfQotCi0gICAg
VmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEo
KVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGlmICghYmFzZTY0RGVjb2RlKGlu
LCBvdXQpKQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBHZW5lcmFsRXJyb3IsICJD
YW5ub3QgZGVjb2RlIGJhc2U2NCIpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0
cmluZyByZXN1bHQgPSBpbXBsKCktPmF0b2IoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgZWMp
OworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmco
ZXhlYywgU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpKTsKKyAgICByZXR1cm4ganNTdHJp
bmcoZXhlYywgcmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6YnRvYShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIpOwotCi0gICAgSlNWYWx1ZSB2ID0gYXJncy5hdCgwKTsKLSAgICBpZiAo
di5pc051bGwoKSkKKyAgICBpZiAoYXJncy5hdCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IGpzRW1wdHlTdHJpbmcoZXhlYyk7CiAKLSAgICBVU3RyaW5nIHMgPSB2LnRvU3RyaW5nKGV4ZWMp
OwotICAgIGlmICghcy5pczhCaXQoKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
SU5WQUxJRF9DSEFSQUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxj
aGFyPihzLmRhdGEoKVtpXSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGJhc2U2NEVu
Y29kZShpbiwgb3V0KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTdHJpbmcgcmVz
dWx0ID0gaW1wbCgpLT5idG9hKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIGVjKTsKKyAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIFN0
cmluZyhvdXQuZGF0YSgpLCBvdXQuc2l6ZSgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IHJlc3VsdCk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGU5ZjdjYTguLmY4YTg3MDAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOERP
TVdpbmRvdy5oIgogCi0jaW5jbHVkZSAiQmFzZTY0LmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJET01UaW1lci5oIgpAQCAtMTQ2LDM3ICsx
NDUsNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHJldHVybiB2ODo6SW50ZWdlcjo6
TmV3KGlkKTsKIH0KIAotc3RhdGljIGJvb2wgaXNBc2NpaShjb25zdCBTdHJpbmcmIHN0cikKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ci5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAg
IGlmIChzdHJbaV0gPiAweEZGKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0
QmFzZTY0KGNvbnN0IFN0cmluZyYgc3RyLCBib29sIGVuY29kZSkKLXsKLSAgICBpZiAoIWlzQXNj
aWkoc3RyKSkgewotICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oSU5WQUxJRF9DSEFS
QUNURVJfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0g
ICAgfQotCi0gICAgVmVjdG9yPGNoYXI+IGlucHV0Q2hhcmFjdGVycyhzdHIubGVuZ3RoKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyBpKyspCi0gICAgICAgIGlu
cHV0Q2hhcmFjdGVyc1tpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHN0cltpXSk7Ci0gICAgVmVjdG9y
PGNoYXI+IG91dHB1dENoYXJhY3RlcnM7Ci0KLSAgICBpZiAoZW5jb2RlKQotICAgICAgICBiYXNl
NjRFbmNvZGUoaW5wdXRDaGFyYWN0ZXJzLCBvdXRwdXRDaGFyYWN0ZXJzKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgaWYgKCFiYXNlNjREZWNvZGUoaW5wdXRDaGFyYWN0ZXJzLCBvdXRwdXRDaGFyYWN0
ZXJzKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJDYW5ub3QgZGVjb2RlIGJhc2U2
NCIsIFY4UHJveHk6OkdlbmVyYWxFcnJvcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHY4U3RyaW5n
KFN0cmluZyhvdXRwdXRDaGFyYWN0ZXJzLmRhdGEoKSwgb3V0cHV0Q2hhcmFjdGVycy5zaXplKCkp
KTsKLX0KLQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpldmVudEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CkBAIC0zNzYsMzggKzM0NCwzNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01X
aW5kb3c6OmF0b2JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElO
Q19TVEFUUygiRE9NLkRPTVdpbmRvdy5hdG9iKCkiKTsKIAorICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIiwg
VjhQcm94eTo6U3ludGF4RXJyb3IpOwogICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIHY4U3RyaW5nKCIiKTsKLSAgICBTdHJpbmcgc3RyID0gdG9XZWJDb3JlU3RyaW5n
KGFyZ3NbMF0pOwogCiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHJl
c3VsdCA9IGltcC0+YXRvYih0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGVjKTsKKyAgICB0aHJv
d0Vycm9yKGVjKTsKIAotICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1l
KFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlN5
bnRheEVycm9yKTsKLQotICAgIHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgZmFsc2UpOworICAg
IHJldHVybiB2OFN0cmluZyhyZXN1bHQpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
T01XaW5kb3c6OmJ0b2FDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLkRPTVdpbmRvdy5idG9hKCkiKTsKIAorICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRz
IiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOwogICAgIGlmIChhcmdzWzBdLT5Jc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHY4U3RyaW5nKCIiKTsKLSAgICBTdHJpbmcgc3RyID0gdG9XZWJDb3JlU3Ry
aW5nKGFyZ3NbMF0pOwogCiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5n
IHJlc3VsdCA9IGltcC0+YnRvYSh0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGVjKTsKKyAgICB0
aHJvd0Vycm9yKGVjKTsKIAotICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0Zy
YW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKLQotICAgIHJldHVybiBjb252ZXJ0QmFzZTY0KHN0ciwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIHY4U3RyaW5nKHJlc3VsdCk7CiB9CiAKIC8vIEZJWE1FKGZxaWFuKTogcmV0dXJu
aW5nIHN0cmluZyBpcyBjaGVhdGluZywgYW5kIHdlIHNob3VsZApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA3
ZTBhZDIzLi44M2ViOGQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAor
KysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogCisjaW5jbHVkZSAiQmFzZTY0
LmgiCiAjaW5jbHVkZSAiQmFySW5mby5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC04MjYsNiArODI3
LDUxIEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorc3Rh
dGljIGJvb2wgaXNTYWZlVG9Db252ZXJ0Q2hhckxpc3QoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgaSsrKSB7Cisg
ICAgICAgIGlmIChzdHJpbmdbaV0gPiAweEZGKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgRE9NV2luZG93OjpidG9hKGNv
bnN0IFN0cmluZyYgc3RyaW5nVG9FbmNvZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
ICghaXNTYWZlVG9Db252ZXJ0Q2hhckxpc3Qoc3RyaW5nVG9FbmNvZGUpKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorCisgICAgVmVjdG9yPGNoYXI+IGluOworICAgIGluLmFwcGVuZChzdHJpbmdUb0VuY29kZS5j
aGFyYWN0ZXJzKCksIHN0cmluZ1RvRW5jb2RlLmxlbmd0aCgpKTsKKyAgICBWZWN0b3I8Y2hhcj4g
b3V0OworCisgICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOworCisgICAgcmV0dXJuIFN0cmluZyhv
dXQuZGF0YSgpLCBvdXQuc2l6ZSgpKTsKK30KKworU3RyaW5nIERPTVdpbmRvdzo6YXRvYihjb25z
dCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
aXNTYWZlVG9Db252ZXJ0Q2hhckxpc3QoZW5jb2RlZFN0cmluZykpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisK
KyAgICBWZWN0b3I8Y2hhcj4gaW47CisgICAgaW4uYXBwZW5kKGVuY29kZWRTdHJpbmcuY2hhcmFj
dGVycygpLCBlbmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBWZWN0b3I8Y2hhcj4gb3V0Owor
CisgICAgaWYgKCFiYXNlNjREZWNvZGUoaW4sIG91dCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0NIQVJBQ1RFUl9FUlI7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpOworfQorCiBib29sIERPTVdpbmRv
dzo6ZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJh
Y2t3YXJkcywgYm9vbCB3cmFwLCBib29sIC8qd2hvbGVXb3JkKi8sIGJvb2wgLypzZWFyY2hJbkZy
YW1lcyovLCBib29sIC8qc2hvd0RpYWxvZyovKSBjb25zdAogewogICAgIGlmICghbV9mcmFtZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAppbmRleCA0NDUyZGJiLi41ZGVlNTQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0xMzksNiArMTM5
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFsZXJ0KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgICAgIGJvb2wgY29uZmlybShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OwogICAgICAgICBTdHJpbmcgcHJvbXB0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZWZhdWx0VmFsdWUpOworICAgICAgICBTdHJpbmcgYnRvYShjb25zdCBTdHJpbmcmIHN0
cmluZ1RvRW5jb2RlLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIFN0cmluZyBhdG9iKGNvbnN0
IFN0cmluZyYgZW5jb2RlZFN0cmluZywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIGJvb2wg
ZmluZChjb25zdCBTdHJpbmcmLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBi
b29sIHdyYXAsIGJvb2wgd2hvbGVXb3JkLCBib29sIHNlYXJjaEluRnJhbWVzLCBib29sIHNob3dE
aWFsb2cpIGNvbnN0OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>