<?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>54144</bug_id>
          
          <creation_ts>2011-02-09 14:22:15 -0800</creation_ts>
          <short_desc>IndexedDB event targets need to ensure their wrappers arent garbage collected</short_desc>
          <delta_ts>2011-02-10 21:10:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>abarth</cc>
    
    <cc>ager</cc>
    
    <cc>andreip</cc>
    
    <cc>antonm</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>japhet</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>348566</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:22:15 -0800</bug_when>
    <thetext>IndexedDB event targets need to ensure their wrappers arent garbage collected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348572</commentid>
    <comment_count>1</comment_count>
      <attachid>81875</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:25:52 -0800</bug_when>
    <thetext>Created attachment 81875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348575</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:26:51 -0800</bug_when>
    <thetext>Please take a look</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348589</commentid>
    <comment_count>3</comment_count>
      <attachid>81878</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:40:05 -0800</bug_when>
    <thetext>Created attachment 81878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348590</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:40:46 -0800</bug_when>
    <thetext>New version.  Pro: only blocks gc if we have event listeners.  Con: has to use const_cast to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348604</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 14:56:36 -0800</bug_when>
    <thetext>Actually, the second version of the patch is less correct.  If we check for event listeners, we need to check whether the parents have them as well.  It&apos;s probably best to just go with this for now.

I&apos;ll add FIXMEs before landing though since we could make it a bit better if we wanted to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348720</commentid>
    <comment_count>6</comment_count>
      <attachid>81896</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-09 17:14:10 -0800</bug_when>
    <thetext>Created attachment 81896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349025</commentid>
    <comment_count>7</comment_count>
      <attachid>81896</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-02-10 06:29:33 -0800</bug_when>
    <thetext>Comment on attachment 81896
Patch

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

LGTM, but I know nothing of indexed dbs

&gt; Source/WebCore/ChangeLog:5
&gt; +        IndexedDB event targets need to ensure their wrappers arent garbage collected

nit: arent =&gt; aren&apos;t

&gt; Source/WebCore/storage/IDBDatabase.cpp:145
&gt; +    // FIXME: In an ideal world, we should return true as long as anyone has a or can

nit: do you need &apos;a&apos; between has and or?

&gt; Source/WebCore/storage/IDBDatabase.cpp:155
&gt; +    close();

Just curious: what if I just call close()?  Is it fine meaning you don&apos;t set m_stopped to false (I know nothing of indexed dbs, so, please, bear with me?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349245</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-10 11:51:47 -0800</bug_when>
    <thetext>Nate can you please give me a final review?

(In reply to comment #7)
&gt; (From update of attachment 81896 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81896&amp;action=review
&gt; 
&gt; LGTM, but I know nothing of indexed dbs
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:5
&gt; &gt; +        IndexedDB event targets need to ensure their wrappers arent garbage collected
&gt; 
&gt; nit: arent =&gt; aren&apos;t

done
 
&gt; &gt; Source/WebCore/storage/IDBDatabase.cpp:145
&gt; &gt; +    // FIXME: In an ideal world, we should return true as long as anyone has a or can
&gt; 
&gt; nit: do you need &apos;a&apos; between has and or?

done
 
&gt; &gt; Source/WebCore/storage/IDBDatabase.cpp:155
&gt; &gt; +    close();
&gt; 
&gt; Just curious: what if I just call close()?  Is it fine meaning you don&apos;t set m_stopped to false (I know nothing of indexed dbs, so, please, bear with me?)

Even after a close, events can still fire, so we still need to keep it alive.  If we kept track of all pending requests, then we could stop returning true when it goes to 0.  Right now the way the objects relate to each other is already a mess though, so I want to leave such a thing alone for now.  (There shouldn&apos;t be too many IDBDatabases open, so it&apos;s OK to not let them be collected until the document navigates in the mean time, I think.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349246</commentid>
    <comment_count>9</comment_count>
      <attachid>82018</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-10 11:52:27 -0800</bug_when>
    <thetext>Created attachment 82018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349365</commentid>
    <comment_count>10</comment_count>
      <attachid>82018</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-02-10 14:10:34 -0800</bug_when>
    <thetext>Comment on attachment 82018
Patch

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

Code LGTM

&gt; Source/WebCore/storage/IDBDatabase.cpp:146
&gt; +    //        get a handle to us or any deritivive transaction/request object and any

Nit: deritivive -&gt; derivative?

&gt; Source/WebCore/storage/IDBRequest.cpp:172
&gt; +    // fire again (unless the transaction completes

Nit: += &apos;).&apos;

&gt; Source/WebCore/storage/IDBRequest.h:100
&gt; +    bool m_finished; // Is it possible that we&apos;ll fire any more events? If not, we&apos;re finished.

Is there some significance to IDBRequest and IDBTransaction using m_finished and IDBDatabase using m_stopped?  I assume there&apos;s a good reason that these variables don&apos;t have the same name for a similar concept?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349452</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-10 15:42:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 82018 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82018&amp;action=review
&gt; 
&gt; Code LGTM
&gt; 
&gt; &gt; Source/WebCore/storage/IDBDatabase.cpp:146
&gt; &gt; +    //        get a handle to us or any deritivive transaction/request object and any
&gt; 
&gt; Nit: deritivive -&gt; derivative?

thanks.  fixed

&gt; &gt; Source/WebCore/storage/IDBRequest.cpp:172
&gt; &gt; +    // fire again (unless the transaction completes
&gt; 
&gt; Nit: += &apos;).&apos;

thanks.  fixed
 
&gt; &gt; Source/WebCore/storage/IDBRequest.h:100
&gt; &gt; +    bool m_finished; // Is it possible that we&apos;ll fire any more events? If not, we&apos;re finished.
&gt; 
&gt; Is there some significance to IDBRequest and IDBTransaction using m_finished and IDBDatabase using m_stopped?  I assume there&apos;s a good reason that these variables don&apos;t have the same name for a similar concept?

For IDBRequest and IDBTransaction, we know when it&apos;s done doing anything.  With IDBDatabase, we only know when the page is going away.  It&apos;d be ideal if we know know when all outstanding requests are done (and thus when it&apos;s finished), but it&apos;s not worth the time at the moment I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349461</commentid>
    <comment_count>12</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-10 15:49:33 -0800</bug_when>
    <thetext>Committed r78280: &lt;http://trac.webkit.org/changeset/78280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349617</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-10 21:10:00 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78280 might have broken GTK Linux 32-bit Release
The following tests are not passing:
http/tests/misc/acid2-pixel.html
http/tests/misc/acid2.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81875</attachid>
            <date>2011-02-09 14:25:52 -0800</date>
            <delta_ts>2011-02-09 17:14:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54144-20110209142551.patch</filename>
            <type>text/plain</type>
            <size>11702</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGIxMzdlODA4Y2IxZGNk
YWMxMjI1ZmZlNWZhZDQ2OGRlYTY5MDkwLi5iNTcwZDU2NjI3MzA3MjNkNWFmMGMxOGIyMTg5YzE1
ZjUyNDQ2NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDItMDkgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERCIGV2ZW50IHRhcmdldHMgbmVlZCB0byBl
bnN1cmUgdGhlaXIgd3JhcHBlcnMgYXJlbnQgZ2FyYmFnZSBjb2xsZWN0ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MTQ0CisKKyAgICAgICAgaGFz
QWN0aXZpdHlQZW5kaW5nIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGl0J3MgcG9zc2li
bGUgdGhhdCB3ZSdsbAorICAgICAgICBmaXJlIG1vcmUgZXZlbnQgbGlzdGVuZXJzIG9uIG91ciBl
dmVudCB0YXJnZXRzLiBJdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKKyAgICAgICAgdXNlciBnZW5l
cmF0ZWQgZXZlbnRzIHRvIHJ1biBpbnRvIHByb2JsZW1zLCBidXQgSSdtIG5vdCBzdXJlIGhvdyB0
byBhZGRyZXNzCisgICAgICAgIHRoYXQgeWV0IChvciBob3cgYmlnIG9mIGEgZGVhbCBpdCBpcyku
CisKKyAgICAgICAgVGhlcmUncyByZWFsbHkgbm8gd2F5IHRvIHRlc3QgdGhpcyBkZXRlcm1pbmlz
dGljYWxseS4gVGVzdGluZyBieSBoYW5kIG1ha2VzCisgICAgICAgIGl0IHNlZW0gbGlrZSB0aGlz
IHBhdGNoIHdvcmtzIGFzIGV4cGVjdGVkIHRob3VnaC4KKworICAgICAgICAqIHN0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6c3RvcCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICog
c3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
Lmg6CisKIDIwMTEtMDItMDkgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAwZTcyNDQ5MGMwMWVm
ZjRiYzMzOTg0ZDJkYTgyNmUxYzNlYjM4MGFmLi4wODliYjY3MjNkMTU5ODE4YzU3MWY3YzJhYTBi
MzkyMjRkZjAyNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIGJvb2wgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmN1cnJlbnRSb3dFeGlzdHMoKQogICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpID09IFNR
TFJlc3VsdFJvdzsKIH0KIAorLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkgZmlyZXMgYW4g
J2Vycm9yJyBldmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3RoZXIgZXZlbnQg
YWZ0ZXJ3YXJkcywKKy8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgUGFz
c1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDIyMDdjMzhhNTFh
NGUxOGM0YWQ5OTRhN2MxMjcwMDNhZjkwZDgwNC4uYWI2NGYwZTJhNWQyZWE0MTY4ODdkMTIwMzZi
NDRjYWJiZjM5ZTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX25v
TmV3VHJhbnNhY3Rpb25zKGZhbHNlKQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQogewogICAgIC8v
IFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9w
dGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtNTcsNiArNTgsNyBAQCBJ
REJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsK
KyAgICBBU1NFUlQobV9zdG9wcGVkKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6c2V0U2V0VmVy
c2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTEzNyw2ICsx
MzksMjAgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogICAgIG1fbm9OZXdUcmFuc2FjdGlv
bnMgPSB0cnVlOwogfQogCitib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUcnkgdG8gZmluZCBzb21lIHdheSBub3QgdG8ganVzdCBs
ZWFrIHRoaXMgb2JqZWN0IHVudGlsIHBhZ2UgbmF2aWdhdGlvbi4KKyAgICByZXR1cm4gIW1fc3Rv
cHBlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lk
IElEQkRhdGFiYXNlOjpzdG9wKCkKK3sKKyAgICAvLyBTdG9wIGZpcmVzIGF0IGEgZGV0ZXJtaW5p
c3RpYyB0aW1lLCBzbyB3ZSBuZWVkIHRvIGNhbGwgY2xvc2UgaW4gaXQuCisgICAgY2xvc2UoKTsK
KworICAgIG1fc3RvcHBlZCA9IHRydWU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElE
QkRhdGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggMzNlYjRiMDgyOWJmYzdjZTRhNTMwYjNjNWJjYWQ5YjNl
NDQ2Y2YxZi4uZjkwZGRkMzhiZmY1MDI1ZGZjN2EwNTMwYTUzMTBkMzg3NTIxZDUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtNzIsNiArNzIsMTAgQEAgcHVibGljOgog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBzdG9wKCk7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgSURCRGF0
YWJhc2UqIHRvSURCRGF0YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkBAIC05
Miw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3NldFZl
cnNpb25UcmFuc2FjdGlvbjsKIAogICAgIGJvb2wgbV9ub05ld1RyYW5zYWN0aW9uczsKKyAgICBi
b29sIG1fc3RvcHBlZDsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBlMjU0NjRhZmRlMzlm
YzBjZDIyYTNkMGRjZDVkYmE2NGQ4YWM4MTE5Li5hYWVkZjM5ODg3YWRkZWQ3MWVkZDEzYzc5Y2Ew
OWJlY2FlZDUwMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTU2
LDYgKzU2LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3JlYWR5U3RhdGUo
TE9BRElORykKKyAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiB7CiAgICAgaWYgKG1fdHJhbnNhY3Rp
b24pCiAgICAgICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92ZVBlbmRpbmdU
cmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkpOwpAQCAtMTMxLDYgKzEzMiwxNiBA
QCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogICAgIGVucXVldWVFdmVudChJREJTdWNjZXNzRXZl
bnQ6OmNyZWF0ZShtX3NvdXJjZSwgSURCQW55OjpjcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZhbHVl
KSkpOwogfQogCitib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Cit7
CisgICAgLy8gSWYgdGhlIHRyYW5zYWN0aW9uIGhhcyBmaW5pc2hlZCwgdGhlbiB3ZSdyZSBub3Qg
Z29pbmcgdG8gZ2V0IGFueSBtb3JlIGV2ZW50cy4KKyAgICBib29sIGZpbmlzaGVkID0gbV9maW5p
c2hlZDsKKyAgICBpZiAobV90cmFuc2FjdGlvbiAmJiBtX3RyYW5zYWN0aW9uLT5maW5pc2hlZCgp
KQorICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisKKyAgICByZXR1cm4gIWZpbmlzaGVkIHx8IEFj
dGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAg
LTEzOCw2ICsxNDksNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CkBA
IC0xNTUsNiArMTY3LDE1IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpIHx8
IGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVs
dCA9IHN0YXRpY19jYXN0PElEQkV2ZW50Kj4oZXZlbnQuZ2V0KCkpLT5kaXNwYXRjaCh0YXJnZXRz
KTsKIAorICAgIC8vIElmIHRoZSBldmVudCdzIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3Is
IHRoZW4gaXQncyBwb3NzaWJsZSBmb3IgdXMgdG8KKyAgICAvLyBmaXJlIGFnYWluICh1bmxlc3Mg
dGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlcworICAgIGlmIChldmVudC0+aXNJREJTdWNjZXNzRXZl
bnQoKSkgeworICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBzdGF0aWNfY2FzdDxJREJTdWNj
ZXNzRXZlbnQqPihldmVudC5nZXQoKSktPnJlc3VsdCgpOworICAgICAgICBpZiAoYW55LT50eXBl
KCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgbV9maW5pc2hlZCA9IHRy
dWU7CisgICAgfSBlbHNlCisgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOworCiAgICAgaWYgKG1f
dHJhbnNhY3Rpb24pIHsKICAgICAgICAgaWYgKGRvbnRQcmV2ZW50RGVmYXVsdCAmJiBldmVudC0+
aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkt
PmFib3J0KCk7CkBAIC0xNjUsNiArMTg2LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQp
OwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05FKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaAppbmRleCAyYzVmNDU0NWEzOGNjMWEzZTQyMjY5ODY1NjkwZDM5YjQ4ZDJkY2Q1Li41YzMx
MzE4YWJhNDU2YmRiMmVmZjlmNjBlNTE1NjQ1OTQxMmY3N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuaApAQCAtNzAsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJ
REJSZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkBA
IC05NCw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3Ry
YW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgYm9vbCBtX2Zp
bmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRz
PyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggMjZhZjIxNzNjNDkwM2JlNGEzYmQ2NjI0MDk3NWQ5MzQ4MGY4ZGQ1Zi4uYTgyZjEyZWE3
OTYzODExOTYyZTZiOTljY2MzYWEwMDhhODlhMDgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTY3LDYgKzY3LDExIEBAIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogSURCVHJhbnNhY3Rpb246OmJhY2tlbmQoKSBjb25zdAogICAgIHJldHVy
biBtX2JhY2tlbmQuZ2V0KCk7CiB9CiAKK2Jvb2wgSURCVHJhbnNhY3Rpb246OmZpbmlzaGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9maW5pc2hlZDsKK30KKwogdW5zaWduZWQgc2hvcnQgSURC
VHJhbnNhY3Rpb246Om1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX21vZGU7CkBAIC0xMDks
NiArMTE0LDExIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIGVucXVl
dWVFdmVudChJREJDb21wbGV0ZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVhdGUodGhpcykpKTsK
IH0KIAorYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gIW1fZmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0
aXZpdHkoKTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTExNiw2ICsxMjYsNyBAQCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CiAKIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCiB7CisgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKICAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRo
aXMpOwogICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CkBAIC0xMzEsMTMgKzE0MiwxNyBAQCBib29s
IElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
CiBib29sIElEQlRyYW5zYWN0aW9uOjpjYW5TdXNwZW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
IW1fYmFja2VuZDsKKyAgICAvLyBGSVhNRTogVGVjaG5pY2FsbHkgd2UgY2FuIHN1c3BlbmQgYmVm
b3JlIHRoZSBmaXJzdCByZXF1ZXN0IGlzIHNjaGVkdWxlCisgICAgLy8gICAgICAgIGFuZCBhZnRl
ciB0aGUgY29tcGxldGUvYWJvcnQgZXZlbnQgaXMgZW5xdWV1ZWQuCisgICAgcmV0dXJuIG1fZmlu
aXNoZWQ7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbnRleHREZXN0cm95ZWQoKQogewog
ICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogCisgICAgLy8gTXVzdCBo
YXBwZW4gaW4gY29udGV4dERlc3Ryb3llZCBzaW5jZSBpdCBjYW4gcmVzdWx0IGluIEFjdGl2ZURP
TU9iamVjdHMgYmVpbmcgZGVzdHJ1Y3RlZAorICAgIC8vIChhbmQgY29udGV4dERlc3Ryb3llZCBp
cyB0aGUgb25seSBvbmUgcmVzaWxpZW50IGFnYWluc3QgdGhpcykuCiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBzZWxmUmVmID0gdGhpczsKICAgICBpZiAobV9iYWNrZW5kKQogICAgICAgICBt
X2JhY2tlbmQtPmFib3J0KCk7CkBAIC0xNDcsNiArMTYyLDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6Y29udGV4dERlc3Ryb3llZCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmVucXVldWVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQpOwog
ICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAppbmRleCBhMWFlODRhMGJmMGY4NzVk
NWI2YjYzNzBjYzQxMzA1MDhlMmU3NzJhLi5mZjRmZWI2MTIzMTFjYWJiM2ZmMGEzNjA4NDVjMzVi
OWRiZTRlM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCkBAIC01
NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiBiYWNrZW5kKCkgY29uc3Q7CisgICAgYm9vbCBmaW5pc2hlZCgpIGNvbnN0Owog
CiAgICAgdW5zaWduZWQgc2hvcnQgbW9kZSgpIGNvbnN0OwogICAgIElEQkRhdGFiYXNlKiBkYigp
IGNvbnN0OwpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZl
bnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKIApAQCAtOTYsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURC
RGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgdW5zaWduZWQgc2hvcnQgbV9tb2RlOwotICAgIGJv
b2wgbV9maW5pc2hlZDsKKyAgICBib29sIG1fZmluaXNoZWQ7IC8vIElzIGl0IHBvc3NpYmxlIHRo
YXQgd2UnbGwgZmlyZSBhbnkgbW9yZSBldmVudHMgb3IgYWxsb3cgYW55IG5ldyB0cmFuc2FjdGlv
bnM/IElmIG5vdCwgd2UncmUgZmluaXNoZWQuCiAKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVu
dFRhcmdldERhdGE7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81878</attachid>
            <date>2011-02-09 14:40:05 -0800</date>
            <delta_ts>2011-02-09 14:55:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54144-20110209144004.patch</filename>
            <type>text/plain</type>
            <size>11962</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGIxMzdlODA4Y2IxZGNk
YWMxMjI1ZmZlNWZhZDQ2OGRlYTY5MDkwLi5iNTcwZDU2NjI3MzA3MjNkNWFmMGMxOGIyMTg5YzE1
ZjUyNDQ2NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDItMDkgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERCIGV2ZW50IHRhcmdldHMgbmVlZCB0byBl
bnN1cmUgdGhlaXIgd3JhcHBlcnMgYXJlbnQgZ2FyYmFnZSBjb2xsZWN0ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MTQ0CisKKyAgICAgICAgaGFz
QWN0aXZpdHlQZW5kaW5nIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGl0J3MgcG9zc2li
bGUgdGhhdCB3ZSdsbAorICAgICAgICBmaXJlIG1vcmUgZXZlbnQgbGlzdGVuZXJzIG9uIG91ciBl
dmVudCB0YXJnZXRzLiBJdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKKyAgICAgICAgdXNlciBnZW5l
cmF0ZWQgZXZlbnRzIHRvIHJ1biBpbnRvIHByb2JsZW1zLCBidXQgSSdtIG5vdCBzdXJlIGhvdyB0
byBhZGRyZXNzCisgICAgICAgIHRoYXQgeWV0IChvciBob3cgYmlnIG9mIGEgZGVhbCBpdCBpcyku
CisKKyAgICAgICAgVGhlcmUncyByZWFsbHkgbm8gd2F5IHRvIHRlc3QgdGhpcyBkZXRlcm1pbmlz
dGljYWxseS4gVGVzdGluZyBieSBoYW5kIG1ha2VzCisgICAgICAgIGl0IHNlZW0gbGlrZSB0aGlz
IHBhdGNoIHdvcmtzIGFzIGV4cGVjdGVkIHRob3VnaC4KKworICAgICAgICAqIHN0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6c3RvcCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICog
c3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
Lmg6CisKIDIwMTEtMDItMDkgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAwZTcyNDQ5MGMwMWVm
ZjRiYzMzOTg0ZDJkYTgyNmUxYzNlYjM4MGFmLi4wODliYjY3MjNkMTU5ODE4YzU3MWY3YzJhYTBi
MzkyMjRkZjAyNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIGJvb2wgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmN1cnJlbnRSb3dFeGlzdHMoKQogICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpID09IFNR
TFJlc3VsdFJvdzsKIH0KIAorLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkgZmlyZXMgYW4g
J2Vycm9yJyBldmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3RoZXIgZXZlbnQg
YWZ0ZXJ3YXJkcywKKy8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgUGFz
c1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDIyMDdjMzhhNTFh
NGUxOGM0YWQ5OTRhN2MxMjcwMDNhZjkwZDgwNC4uZjZjNTRiMTY5YjhiZjRiNWUzYTExNDMwMmI1
MWExOWQ2NzQ4NzE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX25v
TmV3VHJhbnNhY3Rpb25zKGZhbHNlKQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQogewogICAgIC8v
IFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9w
dGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtNTcsNiArNTgsNyBAQCBJ
REJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsK
KyAgICBBU1NFUlQobV9zdG9wcGVkKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6c2V0U2V0VmVy
c2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTEzNyw2ICsx
MzksMjMgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogICAgIG1fbm9OZXdUcmFuc2FjdGlv
bnMgPSB0cnVlOwogfQogCitib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUcnkgdG8gZmluZCBzb21lIHdheSBub3QgdG8ganVzdCBs
ZWFrIHRoaXMgb2JqZWN0IHVudGlsIHBhZ2UgbmF2aWdhdGlvbi4KKyAgICBpZiAoIW1fc3RvcHBl
ZCAmJiBjb25zdF9jYXN0PElEQkRhdGFiYXNlKj4odGhpcyktPmhhc0V2ZW50TGlzdGVuZXJzKCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQoreworICAg
IC8vIFN0b3AgZmlyZXMgYXQgYSBkZXRlcm1pbmlzdGljIHRpbWUsIHNvIHdlIG5lZWQgdG8gY2Fs
bCBjbG9zZSBpbiBpdC4KKyAgICBjbG9zZSgpOworCisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30K
KwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCRGF0YWJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRleCAzM2Vi
NGIwODI5YmZjN2NlNGE1MzBiM2M1YmNhZDliM2U0NDZjZjFmLi5mOTBkZGQzOGJmZjUwMjVkZmM3
YTA1MzBhNTMxMGQzODc1MjFkNTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5o
CkBAIC03Miw2ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihhYm9ydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJv
cik7CiAKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpIHsgcmV0
dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKQEAgLTkyLDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uOwogCiAgICAgYm9v
bCBtX25vTmV3VHJhbnNhY3Rpb25zOworICAgIGJvb2wgbV9zdG9wcGVkOwogCiAgICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCmluZGV4IGUyNTQ2NGFmZGUzOWZjMGNkMjJhM2QwZGNkNWRiYTY0ZDhhYzgxMTku
LjdkNDQwNmIxMjY5MjQ5NWU4ODUyOTQwYmQ4NWU5NWE2ZDA5YzQ3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtNTYsNiArNTYsNyBAQCBJREJSZXF1ZXN0OjpJREJS
ZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55
PiBzb3VyYwogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFu
c2FjdGlvbikKICAgICAsIG1fcmVhZHlTdGF0ZShMT0FESU5HKQorICAgICwgbV9maW5pc2hlZChm
YWxzZSkKIHsKICAgICBpZiAobV90cmFuc2FjdGlvbikKICAgICAgICAgSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvcjo6cmVtb3ZlUGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSk7CkBAIC0xMzEsNiArMTMyLDE5IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNz
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsCiAg
ICAgZW5xdWV1ZUV2ZW50KElEQlN1Y2Nlc3NFdmVudDo6Y3JlYXRlKG1fc291cmNlLCBJREJBbnk6
OmNyZWF0ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKSk7CiB9CiAKK2Jvb2wgSURCUmVxdWVzdDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24g
aGFzIGZpbmlzaGVkLCB0aGVuIHdlJ3JlIG5vdCBnb2luZyB0byBnZXQgYW55IG1vcmUgZXZlbnRz
LgorICAgIGJvb2wgZmluaXNoZWQgPSBtX2ZpbmlzaGVkOworICAgIGlmIChtX3RyYW5zYWN0aW9u
ICYmIG1fdHJhbnNhY3Rpb24tPmZpbmlzaGVkKCkpCisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsK
KworICAgIGlmICghZmluaXNoZWQgJiYgY29uc3RfY2FzdDxJREJSZXF1ZXN0Kj4odGhpcyktPmhh
c0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAg
LTEzOCw2ICsxNTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQobV9yZWFkeVN0YXRlIDwgRE9ORSk7CkBA
IC0xNTUsNiArMTcwLDE1IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKICAgICBBU1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpIHx8
IGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVs
dCA9IHN0YXRpY19jYXN0PElEQkV2ZW50Kj4oZXZlbnQuZ2V0KCkpLT5kaXNwYXRjaCh0YXJnZXRz
KTsKIAorICAgIC8vIElmIHRoZSBldmVudCdzIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3Is
IHRoZW4gaXQncyBwb3NzaWJsZSBmb3IgdXMgdG8KKyAgICAvLyBmaXJlIGFnYWluICh1bmxlc3Mg
dGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRlcworICAgIGlmIChldmVudC0+aXNJREJTdWNjZXNzRXZl
bnQoKSkgeworICAgICAgICBSZWZQdHI8SURCQW55PiBhbnkgPSBzdGF0aWNfY2FzdDxJREJTdWNj
ZXNzRXZlbnQqPihldmVudC5nZXQoKSktPnJlc3VsdCgpOworICAgICAgICBpZiAoYW55LT50eXBl
KCkgIT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgbV9maW5pc2hlZCA9IHRy
dWU7CisgICAgfSBlbHNlCisgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOworCiAgICAgaWYgKG1f
dHJhbnNhY3Rpb24pIHsKICAgICAgICAgaWYgKGRvbnRQcmV2ZW50RGVmYXVsdCAmJiBldmVudC0+
aXNJREJFcnJvckV2ZW50KCkpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkt
PmFib3J0KCk7CkBAIC0xNjUsNiArMTg5LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2
ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogCiB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVF
dmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQp
OwogICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05FKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaAppbmRleCAyYzVmNDU0NWEzOGNjMWEzZTQyMjY5ODY1NjkwZDM5YjQ4ZDJkY2Q1Li41YzMx
MzE4YWJhNDU2YmRiMmVmZjlmNjBlNTE1NjQ1OTQxMmY3N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuaApAQCAtNzAsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KTsKIAorICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdDsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJ
REJSZXF1ZXN0KiB0b0lEQlJlcXVlc3QoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkBA
IC05NCw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3Ry
YW5zYWN0aW9uOwogCiAgICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgYm9vbCBtX2Zp
bmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRz
PyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggMjZhZjIxNzNjNDkwM2JlNGEzYmQ2NjI0MDk3NWQ5MzQ4MGY4ZGQ1Zi4uZWY2N2RkOGZl
MWUzNTJhN2M1YjQyODQ5NjFhODc4NDRmOGFmOTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTY3LDYgKzY3LDExIEBAIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogSURCVHJhbnNhY3Rpb246OmJhY2tlbmQoKSBjb25zdAogICAgIHJldHVy
biBtX2JhY2tlbmQuZ2V0KCk7CiB9CiAKK2Jvb2wgSURCVHJhbnNhY3Rpb246OmZpbmlzaGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9maW5pc2hlZDsKK30KKwogdW5zaWduZWQgc2hvcnQgSURC
VHJhbnNhY3Rpb246Om1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX21vZGU7CkBAIC0xMDks
NiArMTE0LDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIGVucXVl
dWVFdmVudChJREJDb21wbGV0ZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVhdGUodGhpcykpKTsK
IH0KIAorYm9vbCBJREJUcmFuc2FjdGlvbjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fZmluaXNoZWQgJiYgY29uc3RfY2FzdDxJREJUcmFuc2FjdGlvbio+KHRoaXMp
LT5oYXNFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOworfQorCiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBJREJUcmFuc2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwpAQCAtMTE2LDYgKzEyOSw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlRyYW5z
YWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBJREJUcmFuc2Fj
dGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBBU1NF
UlQoIW1fZmluaXNoZWQpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKCFtX2Zpbmlz
aGVkKTsKQEAgLTEzMSwxMyArMTQ1LDE3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKIGJvb2wgSURCVHJhbnNhY3Rpb246OmNh
blN1c3BlbmQoKSBjb25zdAogewotICAgIHJldHVybiAhbV9iYWNrZW5kOworICAgIC8vIEZJWE1F
OiBUZWNobmljYWxseSB3ZSBjYW4gc3VzcGVuZCBiZWZvcmUgdGhlIGZpcnN0IHJlcXVlc3QgaXMg
c2NoZWR1bGUKKyAgICAvLyAgICAgICAgYW5kIGFmdGVyIHRoZSBjb21wbGV0ZS9hYm9ydCBldmVu
dCBpcyBlbnF1ZXVlZC4KKyAgICByZXR1cm4gbV9maW5pc2hlZDsKIH0KIAogdm9pZCBJREJUcmFu
c2FjdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250
ZXh0RGVzdHJveWVkKCk7CiAKKyAgICAvLyBNdXN0IGhhcHBlbiBpbiBjb250ZXh0RGVzdHJveWVk
IHNpbmNlIGl0IGNhbiByZXN1bHQgaW4gQWN0aXZlRE9NT2JqZWN0cyBiZWluZyBkZXN0cnVjdGVk
CisgICAgLy8gKGFuZCBjb250ZXh0RGVzdHJveWVkIGlzIHRoZSBvbmx5IG9uZSByZXNpbGllbnQg
YWdhaW5zdCB0aGlzKS4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHNlbGZSZWYgPSB0aGlz
OwogICAgIGlmIChtX2JhY2tlbmQpCiAgICAgICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKQEAgLTE0
Nyw2ICsxNjUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQogeworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbi5oCmluZGV4IGExYWU4NGEwYmYwZjg3NWQ1YjZiNjM3MGNjNDEzMDUwOGUyZTc3MmEu
LmZmNGZlYjYxMjMxMWNhYmIzZmYwYTM2MDg0NWMzNWI5ZGJlNGUzYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25z
dDsKKyAgICBib29sIGZpbmlzaGVkKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBtb2Rl
KCkgY29uc3Q7CiAgICAgSURCRGF0YWJhc2UqIGRiKCkgY29uc3Q7CkBAIC03Niw2ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChl
dmVudCwgZWMpOyB9CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQo
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCkBAIC05Niw3
ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX21vZGU7Ci0gICAgYm9vbCBtX2ZpbmlzaGVkOworICAgIGJvb2wg
bV9maW5pc2hlZDsgLy8gSXMgaXQgcG9zc2libGUgdGhhdCB3ZSdsbCBmaXJlIGFueSBtb3JlIGV2
ZW50cyBvciBhbGxvdyBhbnkgbmV3IHRyYW5zYWN0aW9ucz8gSWYgbm90LCB3ZSdyZSBmaW5pc2hl
ZC4KIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81896</attachid>
            <date>2011-02-09 17:14:10 -0800</date>
            <delta_ts>2011-02-10 11:52:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54144-20110209171409.patch</filename>
            <type>text/plain</type>
            <size>12739</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGIxMzdlODA4Y2IxZGNk
YWMxMjI1ZmZlNWZhZDQ2OGRlYTY5MDkwLi5iNTcwZDU2NjI3MzA3MjNkNWFmMGMxOGIyMTg5YzE1
ZjUyNDQ2NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDItMDkgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERCIGV2ZW50IHRhcmdldHMgbmVlZCB0byBl
bnN1cmUgdGhlaXIgd3JhcHBlcnMgYXJlbnQgZ2FyYmFnZSBjb2xsZWN0ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MTQ0CisKKyAgICAgICAgaGFz
QWN0aXZpdHlQZW5kaW5nIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGl0J3MgcG9zc2li
bGUgdGhhdCB3ZSdsbAorICAgICAgICBmaXJlIG1vcmUgZXZlbnQgbGlzdGVuZXJzIG9uIG91ciBl
dmVudCB0YXJnZXRzLiBJdCBpcyBzdGlsbCBwb3NzaWJsZSBmb3IKKyAgICAgICAgdXNlciBnZW5l
cmF0ZWQgZXZlbnRzIHRvIHJ1biBpbnRvIHByb2JsZW1zLCBidXQgSSdtIG5vdCBzdXJlIGhvdyB0
byBhZGRyZXNzCisgICAgICAgIHRoYXQgeWV0IChvciBob3cgYmlnIG9mIGEgZGVhbCBpdCBpcyku
CisKKyAgICAgICAgVGhlcmUncyByZWFsbHkgbm8gd2F5IHRvIHRlc3QgdGhpcyBkZXRlcm1pbmlz
dGljYWxseS4gVGVzdGluZyBieSBoYW5kIG1ha2VzCisgICAgICAgIGl0IHNlZW0gbGlrZSB0aGlz
IHBhdGNoIHdvcmtzIGFzIGV4cGVjdGVkIHRob3VnaC4KKworICAgICAgICAqIHN0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2U6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZTo6c3RvcCk6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5oOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
OjpJREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Omhhc1BlbmRpbmdB
Y3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgICog
c3RvcmFnZS9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
Lmg6CisKIDIwMTEtMDItMDkgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCAwZTcyNDQ5MGMwMWVm
ZjRiYzMzOTg0ZDJkYTgyNmUxYzNlYjM4MGFmLi4wODliYjY3MjNkMTU5ODE4YzU3MWY3YzJhYTBi
MzkyMjRkZjAyNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcApAQCAtMTEwLDYgKzExMCw4IEBAIGJvb2wgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmN1cnJlbnRSb3dFeGlzdHMoKQogICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpID09IFNR
TFJlc3VsdFJvdzsKIH0KIAorLy8gSU1QT1JUQU5UOiBJZiB0aGlzIGV2ZXIgMSkgZmlyZXMgYW4g
J2Vycm9yJyBldmVudCBhbmQgMikgaXQncyBwb3NzaWJsZSB0byBmaXJlIGFub3RoZXIgZXZlbnQg
YWZ0ZXJ3YXJkcywKKy8vICAgICAgICAgICAgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHRvIGhhbmRsZSB0aGlzISEhCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgUGFz
c1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDIyMDdjMzhhNTFh
NGUxOGM0YWQ5OTRhN2MxMjcwMDNhZjkwZDgwNC4uNTZhYmYxMjE2MjNkNmM1NzM1ZDM1YWY5N2Jj
OTljZjE5OTRjZTlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX25v
TmV3VHJhbnNhY3Rpb25zKGZhbHNlKQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQogewogICAgIC8v
IFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9w
dGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwpAQCAtNTcsNiArNTgsNyBAQCBJ
REJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKIHsK
KyAgICBBU1NFUlQobV9zdG9wcGVkKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6c2V0U2V0VmVy
c2lvblRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKQEAgLTEzNyw2ICsx
MzksMjQgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2UoKQogICAgIG1fbm9OZXdUcmFuc2FjdGlv
bnMgPSB0cnVlOwogfQogCitib29sIElEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAoreworICAgIC8vIEZJWE1FOiBUcnkgdG8gZmluZCBzb21lIHdheSBub3QgdG8ganVzdCBs
ZWFrIHRoaXMgb2JqZWN0IHVudGlsIHBhZ2UgbmF2aWdhdGlvbi4KKyAgICAvLyBGSVhNRTogSW4g
YW4gaWRlYWwgd29ybGQsIHdlIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBo
YXMgYSBvciBjYW4KKyAgICAvLyAgICAgICAgZ2V0IGEgaGFuZGxlIHRvIHVzIG9yIGFueSBkZXJp
dGl2aXZlIHRyYW5zYWN0aW9uL3JlcXVlc3Qgb2JqZWN0IGFuZCBhbnkKKyAgICAvLyAgICAgICAg
b2YgdGhvc2UgaGF2ZSBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxl
IHVzZXIgZ2VuZXJhdGVkCisgICAgLy8gICAgICAgIGV2ZW50cyBwcm9wZXJseS4KKyAgICByZXR1
cm4gIW1fc3RvcHBlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpOwor
fQorCit2b2lkIElEQkRhdGFiYXNlOjpzdG9wKCkKK3sKKyAgICAvLyBTdG9wIGZpcmVzIGF0IGEg
ZGV0ZXJtaW5pc3RpYyB0aW1lLCBzbyB3ZSBuZWVkIHRvIGNhbGwgY2xvc2UgaW4gaXQuCisgICAg
Y2xvc2UoKTsKKworICAgIG1fc3RvcHBlZCA9IHRydWU7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIElEQkRhdGFiYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKaW5kZXggMzNlYjRiMDgyOWJmYzdjZTRhNTMwYjNj
NWJjYWQ5YjNlNDQ2Y2YxZi4uZjkwZGRkMzhiZmY1MDI1ZGZjN2EwNTMwYTUzMTBkMzg3NTIxZDUx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaApAQCAtNzIsNiArNzIsMTAgQEAg
cHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZXJyb3IpOwogCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1
YWwgSURCRGF0YWJhc2UqIHRvSURCRGF0YWJhc2UoKSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3Q7CkBAIC05Miw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX3NldFZlcnNpb25UcmFuc2FjdGlvbjsKIAogICAgIGJvb2wgbV9ub05ld1RyYW5zYWN0aW9u
czsKKyAgICBib29sIG1fc3RvcHBlZDsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCBlMjU0
NjRhZmRlMzlmYzBjZDIyYTNkMGRjZDVkYmE2NGQ4YWM4MTE5Li5jMDUwNDRkZGZiZDQ4NTYxODNh
ZjBmMzMxZjMxNmNjZGYyMWY5ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAKQEAgLTU2LDYgKzU2LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmMKICAgICAsIG1fc291
cmNlKHNvdXJjZSkKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX3Jl
YWR5U3RhdGUoTE9BRElORykKKyAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiB7CiAgICAgaWYgKG1f
dHJhbnNhY3Rpb24pCiAgICAgICAgIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3I6OnJlbW92
ZVBlbmRpbmdUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCkpOwpAQCAtMTMxLDYg
KzEzMiwxNCBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogICAgIGVucXVldWVFdmVudChJREJT
dWNjZXNzRXZlbnQ6OmNyZWF0ZShtX3NvdXJjZSwgSURCQW55OjpjcmVhdGUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKSkpOwogfQogCitib29sIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0
dXJuIHRydWUgYXMgbG9uZyBhcyBhbnlvbmUgaGFzIGEgb3IgY2FuCisgICAgLy8gICAgICAgIGdl
dCBhIGhhbmRsZSB0byB1cyBhbmQgd2UgaGF2ZSBldmVudCBsaXN0ZW5lcnMuIFRoaXMgaXMgb3Jk
ZXIgdG8gaGFuZGxlCisgICAgLy8gICAgICAgIHVzZXIgZ2VuZXJhdGVkIGV2ZW50cyBwcm9wZXJs
eS4KKyAgICByZXR1cm4gIW1fZmluaXNoZWQgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkoKTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMTM4LDYgKzE0Nyw3IEBAIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAogCiBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCiB7CisgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZXZlbnQtPnRhcmdldCgpID09IHRoaXMpOwogICAg
IEFTU0VSVChtX3JlYWR5U3RhdGUgPCBET05FKTsKQEAgLTE0OCwxMyArMTU4LDI0IEBAIGJvb2wg
SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBp
ZiAobV90cmFuc2FjdGlvbikgewogICAgICAgICB0YXJnZXRzLmFwcGVuZChtX3RyYW5zYWN0aW9u
KTsKICAgICAgICAgLy8gSWYgdGhlcmUgZXZlciBhcmUgZXZlbnRzIHRoYXQgYXJlIGFzc29jaWF0
ZWQgd2l0aCBhIGRhdGFiYXNlIGJ1dAotICAgICAgICAvLyB0aGF0IGRvIG5vdCBoYXZlIGEgdHJh
bnNhY3Rpb24sIHRoZW4gdGhpcyB3aWxsIG5vdCB3b3JrLgorICAgICAgICAvLyB0aGF0IGRvIG5v
dCBoYXZlIGEgdHJhbnNhY3Rpb24sIHRoZW4gdGhpcyB3aWxsIG5vdCB3b3JrIGFuZCB3ZSBuZWVk
CisgICAgICAgIC8vIHRoaXMgb2JqZWN0IHRvIGFjdHVhbGx5IGhvbGQgYSByZWZlcmVuY2UgdG8g
dGhlIGRhdGFiYXNlICh0byBlbnN1cmUKKyAgICAgICAgLy8gaXQgc3RheXMgYWxpdmUpLgogICAg
ICAgICB0YXJnZXRzLmFwcGVuZChtX3RyYW5zYWN0aW9uLT5kYigpKTsKICAgICB9CiAKICAgICBB
U1NFUlQoZXZlbnQtPmlzSURCRXJyb3JFdmVudCgpIHx8IGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVu
dCgpKTsKICAgICBib29sIGRvbnRQcmV2ZW50RGVmYXVsdCA9IHN0YXRpY19jYXN0PElEQkV2ZW50
Kj4oZXZlbnQuZ2V0KCkpLT5kaXNwYXRjaCh0YXJnZXRzKTsKIAorICAgIC8vIElmIHRoZSBldmVu
dCdzIHJlc3VsdCB3YXMgb2YgdHlwZSBJREJDdXJzb3IsIHRoZW4gaXQncyBwb3NzaWJsZSBmb3Ig
dXMgdG8KKyAgICAvLyBmaXJlIGFnYWluICh1bmxlc3MgdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRl
cworICAgIGlmIChldmVudC0+aXNJREJTdWNjZXNzRXZlbnQoKSkgeworICAgICAgICBSZWZQdHI8
SURCQW55PiBhbnkgPSBzdGF0aWNfY2FzdDxJREJTdWNjZXNzRXZlbnQqPihldmVudC5nZXQoKSkt
PnJlc3VsdCgpOworICAgICAgICBpZiAoYW55LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JU
eXBlKQorICAgICAgICAgICAgbV9maW5pc2hlZCA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAg
IG1fZmluaXNoZWQgPSB0cnVlOworCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAg
aWYgKGRvbnRQcmV2ZW50RGVmYXVsdCAmJiBldmVudC0+aXNJREJFcnJvckV2ZW50KCkpCiAgICAg
ICAgICAgICBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCktPmFib3J0KCk7CkBAIC0xNjUsNiArMTg2
LDcgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogCiB2b2lkIElEQlJlcXVlc3Q6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQpOwogICAgIEFTU0VSVChtX3JlYWR5U3Rh
dGUgPCBET05FKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAppbmRleCAyYzVmNDU0NWEzOGNj
MWEzZTQyMjY5ODY1NjkwZDM5YjQ4ZDJkY2Q1Li41YzMxMzE4YWJhNDU2YmRiMmVmZjlmNjBlNTE1
NjQ1OTQxMmY3N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtNzAsNiAr
NzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKIAorICAgIC8vIEFjdGl2ZURP
TU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKKwog
ICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCBJREJSZXF1ZXN0KiB0b0lEQlJlcXVlc3Qo
KSB7IHJldHVybiB0aGlzOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CkBAIC05NCw2ICs5Nyw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogCiAgICAgUmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgYm9vbCBtX2ZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJs
ZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzPyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVk
LgogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMjZhZjIxNzNjNDkwM2JlNGEz
YmQ2NjI0MDk3NWQ5MzQ4MGY4ZGQ1Zi4uMWY2OTZiM2UwMzg4MDliNmY4ODhhZTcyMGVjNGRlM2Ni
NDk3NzQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAg
LTY3LDYgKzY3LDExIEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogSURCVHJhbnNh
Y3Rpb246OmJhY2tlbmQoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7CiB9CiAK
K2Jvb2wgSURCVHJhbnNhY3Rpb246OmZpbmlzaGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9m
aW5pc2hlZDsKK30KKwogdW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb246Om1vZGUoKSBjb25z
dAogewogICAgIHJldHVybiBtX21vZGU7CkBAIC0xMDksNiArMTE0LDE0IEBAIHZvaWQgSURCVHJh
bnNhY3Rpb246Om9uQ29tcGxldGUoKQogICAgIGVucXVldWVFdmVudChJREJDb21wbGV0ZUV2ZW50
OjpjcmVhdGUoSURCQW55OjpjcmVhdGUodGhpcykpKTsKIH0KIAorYm9vbCBJREJUcmFuc2FjdGlv
bjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4gYW4gaWRl
YWwgd29ybGQsIHdlIHNob3VsZCByZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBoYXMgYSBv
ciBjYW4KKyAgICAvLyAgICAgICAgZ2V0IGEgaGFuZGxlIHRvIHVzIG9yIGFueSBjaGlsZCByZXF1
ZXN0IG9iamVjdCBhbmQgYW55IG9mIHRob3NlIGhhdmUKKyAgICAvLyAgICAgICAgZXZlbnQgbGlz
dGVuZXJzLiBUaGlzIGlzICBpbiBvcmRlciB0byBoYW5kbGUgdXNlciBnZW5lcmF0ZWQgZXZlbnRz
IHByb3Blcmx5LgorICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhh
c1BlbmRpbmdBY3Rpdml0eSgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJUcmFu
c2FjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMTE2LDYgKzEyOSw3
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlRyYW5zYWN0aW9uOjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QKIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQpOwogICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFy
Z2V0KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKCFtX2ZpbmlzaGVkKTsKQEAgLTEzMSwxMyArMTQ1
LDE3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCiAKIGJvb2wgSURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQoKSBjb25zdAogewot
ICAgIHJldHVybiAhbV9iYWNrZW5kOworICAgIC8vIEZJWE1FOiBUZWNobmljYWxseSB3ZSBjYW4g
c3VzcGVuZCBiZWZvcmUgdGhlIGZpcnN0IHJlcXVlc3QgaXMgc2NoZWR1bGUKKyAgICAvLyAgICAg
ICAgYW5kIGFmdGVyIHRoZSBjb21wbGV0ZS9hYm9ydCBldmVudCBpcyBlbnF1ZXVlZC4KKyAgICBy
ZXR1cm4gbV9maW5pc2hlZDsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29udGV4dERlc3Ry
b3llZCgpCiB7CiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7CiAKKyAg
ICAvLyBNdXN0IGhhcHBlbiBpbiBjb250ZXh0RGVzdHJveWVkIHNpbmNlIGl0IGNhbiByZXN1bHQg
aW4gQWN0aXZlRE9NT2JqZWN0cyBiZWluZyBkZXN0cnVjdGVkCisgICAgLy8gKGFuZCBjb250ZXh0
RGVzdHJveWVkIGlzIHRoZSBvbmx5IG9uZSByZXNpbGllbnQgYWdhaW5zdCB0aGlzKS4KICAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IHNlbGZSZWYgPSB0aGlzOwogICAgIGlmIChtX2JhY2tlbmQp
CiAgICAgICAgIG1fYmFja2VuZC0+YWJvcnQoKTsKQEAgLTE0Nyw2ICsxNjUsNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpjb250ZXh0RGVzdHJveWVkKCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6
ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIEFTU0VSVCghbV9m
aW5pc2hlZCk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGExYWU4
NGEwYmYwZjg3NWQ1YjZiNjM3MGNjNDEzMDUwOGUyZTc3MmEuLmZmNGZlYjYxMjMxMWNhYmIzZmYw
YTM2MDg0NWMzNWI5ZGJlNGUzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKKyAgICBib29sIGZpbmlzaGVk
KCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3Q7CiAgICAgSURCRGF0
YWJhc2UqIGRiKCkgY29uc3Q7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7
IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAKICAgICAv
LyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCkBAIC05Niw3ICs5OCw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAg
IFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAgICB1bnNpZ25lZCBzaG9ydCBtX21v
ZGU7Ci0gICAgYm9vbCBtX2ZpbmlzaGVkOworICAgIGJvb2wgbV9maW5pc2hlZDsgLy8gSXMgaXQg
cG9zc2libGUgdGhhdCB3ZSdsbCBmaXJlIGFueSBtb3JlIGV2ZW50cyBvciBhbGxvdyBhbnkgbmV3
IHRyYW5zYWN0aW9ucz8gSWYgbm90LCB3ZSdyZSBmaW5pc2hlZC4KIAogICAgIEV2ZW50VGFyZ2V0
RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82018</attachid>
            <date>2011-02-10 11:52:27 -0800</date>
            <delta_ts>2011-02-10 14:10:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54144-20110210115226.patch</filename>
            <type>text/plain</type>
            <size>12969</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzgxMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGIxMzdlODA4Y2IxZGNk
YWMxMjI1ZmZlNWZhZDQ2OGRlYTY5MDkwLi4yMTNmNzYxYTRiM2RmZmI0ZTFmYjgyNzBiNmI5MGMx
NjZkZmMwOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDItMDkgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5kZXhlZERCIGV2ZW50IHRhcmdldHMgbmVlZCB0byBl
bnN1cmUgdGhlaXIgd3JhcHBlcnMgYXJlbid0IGdhcmJhZ2UgY29sbGVjdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDE0NAorCisgICAgICAgIGhh
c0FjdGl2aXR5UGVuZGluZyBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBpdCdzIHBvc3Np
YmxlIHRoYXQgd2UnbGwKKyAgICAgICAgZmlyZSBtb3JlIGV2ZW50IGxpc3RlbmVycyBvbiBvdXIg
ZXZlbnQgdGFyZ2V0cy4gSXQgaXMgc3RpbGwgcG9zc2libGUgZm9yCisgICAgICAgIHVzZXIgZ2Vu
ZXJhdGVkIGV2ZW50cyB0byBydW4gaW50byBwcm9ibGVtcywgYnV0IEknbSBub3Qgc3VyZSBob3cg
dG8gYWRkcmVzcworICAgICAgICB0aGF0IHlldCAob3IgaG93IGJpZyBvZiBhIGRlYWwgaXQgaXMp
LgorCisgICAgICAgIFRoZXJlJ3MgcmVhbGx5IG5vIHdheSB0byB0ZXN0IHRoaXMgZGV0ZXJtaW5p
c3RpY2FsbHkuIFRlc3RpbmcgYnkgaGFuZCBtYWtlcworICAgICAgICBpdCBzZWVtIGxpa2UgdGhp
cyBwYXRjaCB3b3JrcyBhcyBleHBlY3RlZCB0aG91Z2guCisKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpoYXNQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OnN0b3ApOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuaDoKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5n
QWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb246OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246OmVucXVldWVFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlv
bi5oOgorCiAyMDExLTAyLTA5ICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggMGU3MjQ0OTBjMDFl
ZmY0YmMzMzk4NGQyZGE4MjZlMWMzZWIzODBhZi4uMDg5YmI2NzIzZDE1OTgxOGM1NzFmN2MyYWEw
YjM5MjI0ZGYwMjUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW1wbC5jcHAKQEAgLTExMCw2ICsxMTAsOCBAQCBib29sIElEQkN1cnNvckJhY2tlbmRJ
bXBsOjpjdXJyZW50Um93RXhpc3RzKCkKICAgICByZXR1cm4gc3RhdGVtZW50LnN0ZXAoKSA9PSBT
UUxSZXN1bHRSb3c7CiB9CiAKKy8vIElNUE9SVEFOVDogSWYgdGhpcyBldmVyIDEpIGZpcmVzIGFu
ICdlcnJvcicgZXZlbnQgYW5kIDIpIGl0J3MgcG9zc2libGUgdG8gZmlyZSBhbm90aGVyIGV2ZW50
IGFmdGVyd2FyZHMsCisvLyAgICAgICAgICAgIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIHdpbGwgbmVlZCB0byBiZSBtb2RpZmllZCB0byBoYW5kbGUgdGhpcyEhIQogdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIFBh
c3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJz
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IDQyMjA3YzM4YTUx
YTRlMThjNGFkOTk0YTdjMTI3MDAzYWY5MGQ4MDQuLjc5NTg4N2NhZmE5NjYyNjU0ZTI1ZmRjNWFh
ZDA3MjJlZDIwMzlkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBA
IC01MCw2ICs1MCw3IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9u
b05ld1RyYW5zYWN0aW9ucyhmYWxzZSkKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKIHsKICAgICAv
LyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRv
cHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKQEAgLTU3LDYgKzU4LDcgQEAg
SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKIAogSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCiB7
CisgICAgQVNTRVJUKG1fc3RvcHBlZCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6OnNldFNldFZl
cnNpb25UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCkBAIC0xMzcsNiAr
MTM5LDI0IEBAIHZvaWQgSURCRGF0YWJhc2U6OmNsb3NlKCkKICAgICBtX25vTmV3VHJhbnNhY3Rp
b25zID0gdHJ1ZTsKIH0KIAorYm9vbCBJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogVHJ5IHRvIGZpbmQgc29tZSB3YXkgbm90IHRvIGp1c3Qg
bGVhayB0aGlzIG9iamVjdCB1bnRpbCBwYWdlIG5hdmlnYXRpb24uCisgICAgLy8gRklYTUU6IElu
IGFuIGlkZWFsIHdvcmxkLCB3ZSBzaG91bGQgcmV0dXJuIHRydWUgYXMgbG9uZyBhcyBhbnlvbmUg
aGFzIG9yIGNhbgorICAgIC8vICAgICAgICBnZXQgYSBoYW5kbGUgdG8gdXMgb3IgYW55IGRlcml0
aXZpdmUgdHJhbnNhY3Rpb24vcmVxdWVzdCBvYmplY3QgYW5kIGFueQorICAgIC8vICAgICAgICBv
ZiB0aG9zZSBoYXZlIGV2ZW50IGxpc3RlbmVycy4gVGhpcyBpcyBpbiBvcmRlciB0byBoYW5kbGUg
dXNlciBnZW5lcmF0ZWQKKyAgICAvLyAgICAgICAgZXZlbnRzIHByb3Blcmx5LgorICAgIHJldHVy
biAhbV9zdG9wcGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9
CisKK3ZvaWQgSURCRGF0YWJhc2U6OnN0b3AoKQoreworICAgIC8vIFN0b3AgZmlyZXMgYXQgYSBk
ZXRlcm1pbmlzdGljIHRpbWUsIHNvIHdlIG5lZWQgdG8gY2FsbCBjbG9zZSBpbiBpdC4KKyAgICBj
bG9zZSgpOworCisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogSURCRGF0YWJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaAppbmRleCAzM2ViNGIwODI5YmZjN2NlNGE1MzBiM2M1
YmNhZDliM2U0NDZjZjFmLi5mOTBkZGQzOGJmZjUwMjVkZmM3YTA1MzBhNTMxMGQzODc1MjFkNTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5oCkBAIC03Miw2ICs3MiwxMCBAQCBw
dWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7CiAKKyAgICAvLyBBY3RpdmVE
T01PYmplY3QKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVh
bCBJREJEYXRhYmFzZSogdG9JREJEYXRhYmFzZSgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dDsKQEAgLTkyLDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IG1fc2V0VmVyc2lvblRyYW5zYWN0aW9uOwogCiAgICAgYm9vbCBtX25vTmV3VHJhbnNhY3Rpb25z
OworICAgIGJvb2wgbV9zdG9wcGVkOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGUyNTQ2
NGFmZGUzOWZjMGNkMjJhM2QwZGNkNWRiYTY0ZDhhYzgxMTkuLjY3MmNmYjQyYzU3ZGE4Mzg3OTY4
ZjAwNjZkMzMzZWY5ODNlYjNhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNw
cApAQCAtNTYsNiArNTYsNyBAQCBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyYwogICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fcmVh
ZHlTdGF0ZShMT0FESU5HKQorICAgICwgbV9maW5pc2hlZChmYWxzZSkKIHsKICAgICBpZiAobV90
cmFuc2FjdGlvbikKICAgICAgICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6cmVtb3Zl
UGVuZGluZ1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSk7CkBAIC02Nyw2ICs2
OCw3IEBAIElEQlJlcXVlc3Q6On5JREJSZXF1ZXN0KCkKIAogYm9vbCBJREJSZXF1ZXN0OjpyZXNl
dFJlYWR5U3RhdGUoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogeworICAgIEFTU0VSVCgh
bV9maW5pc2hlZCk7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
aWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzEs
NiArMTMzLDE0IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsCiAgICAgZW5xdWV1ZUV2ZW50KElE
QlN1Y2Nlc3NFdmVudDo6Y3JlYXRlKG1fc291cmNlLCBJREJBbnk6OmNyZWF0ZShzZXJpYWxpemVk
U2NyaXB0VmFsdWUpKSk7CiB9CiAKK2Jvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogSW4gYW4gaWRlYWwgd29ybGQsIHdlIHNob3VsZCBy
ZXR1cm4gdHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBoYXMgYSBvciBjYW4KKyAgICAvLyAgICAgICAg
Z2V0IGEgaGFuZGxlIHRvIHVzIGFuZCB3ZSBoYXZlIGV2ZW50IGxpc3RlbmVycy4gVGhpcyBpcyBv
cmRlciB0byBoYW5kbGUKKyAgICAvLyAgICAgICAgdXNlciBnZW5lcmF0ZWQgZXZlbnRzIHByb3Bl
cmx5LgorICAgIHJldHVybiAhbV9maW5pc2hlZCB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRp
bmdBY3Rpdml0eSgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xMzgsNiArMTQ4LDcgQEAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiAKIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKIHsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWQpOwogICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChldmVudC0+dGFyZ2V0KCkgPT0gdGhpcyk7CiAg
ICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSA8IERPTkUpOwpAQCAtMTQ4LDEzICsxNTksMjQgQEAgYm9v
bCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAg
IGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIHRhcmdldHMuYXBwZW5kKG1fdHJhbnNhY3Rp
b24pOwogICAgICAgICAvLyBJZiB0aGVyZSBldmVyIGFyZSBldmVudHMgdGhhdCBhcmUgYXNzb2Np
YXRlZCB3aXRoIGEgZGF0YWJhc2UgYnV0Ci0gICAgICAgIC8vIHRoYXQgZG8gbm90IGhhdmUgYSB0
cmFuc2FjdGlvbiwgdGhlbiB0aGlzIHdpbGwgbm90IHdvcmsuCisgICAgICAgIC8vIHRoYXQgZG8g
bm90IGhhdmUgYSB0cmFuc2FjdGlvbiwgdGhlbiB0aGlzIHdpbGwgbm90IHdvcmsgYW5kIHdlIG5l
ZWQKKyAgICAgICAgLy8gdGhpcyBvYmplY3QgdG8gYWN0dWFsbHkgaG9sZCBhIHJlZmVyZW5jZSB0
byB0aGUgZGF0YWJhc2UgKHRvIGVuc3VyZQorICAgICAgICAvLyBpdCBzdGF5cyBhbGl2ZSkuCiAg
ICAgICAgIHRhcmdldHMuYXBwZW5kKG1fdHJhbnNhY3Rpb24tPmRiKCkpOwogICAgIH0KIAogICAg
IEFTU0VSVChldmVudC0+aXNJREJFcnJvckV2ZW50KCkgfHwgZXZlbnQtPmlzSURCU3VjY2Vzc0V2
ZW50KCkpOwogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gc3RhdGljX2Nhc3Q8SURCRXZl
bnQqPihldmVudC5nZXQoKSktPmRpc3BhdGNoKHRhcmdldHMpOwogCisgICAgLy8gSWYgdGhlIGV2
ZW50J3MgcmVzdWx0IHdhcyBvZiB0eXBlIElEQkN1cnNvciwgdGhlbiBpdCdzIHBvc3NpYmxlIGZv
ciB1cyB0bworICAgIC8vIGZpcmUgYWdhaW4gKHVubGVzcyB0aGUgdHJhbnNhY3Rpb24gY29tcGxl
dGVzCisgICAgaWYgKGV2ZW50LT5pc0lEQlN1Y2Nlc3NFdmVudCgpKSB7CisgICAgICAgIFJlZlB0
cjxJREJBbnk+IGFueSA9IHN0YXRpY19jYXN0PElEQlN1Y2Nlc3NFdmVudCo+KGV2ZW50LmdldCgp
KS0+cmVzdWx0KCk7CisgICAgICAgIGlmIChhbnktPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNv
clR5cGUpCisgICAgICAgICAgICBtX2ZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgbV9maW5pc2hlZCA9IHRydWU7CisKICAgICBpZiAobV90cmFuc2FjdGlvbikgewogICAgICAg
ICBpZiAoZG9udFByZXZlbnREZWZhdWx0ICYmIGV2ZW50LT5pc0lEQkVycm9yRXZlbnQoKSkKICAg
ICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKS0+YWJvcnQoKTsKQEAgLTE2NSw2ICsx
ODcsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogeworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CiAgICAgQVNTRVJUKG1fcmVhZHlT
dGF0ZSA8IERPTkUpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDJjNWY0NTQ1YTM4
Y2MxYTNlNDIyNjk4NjU2OTBkMzliNDhkMmRjZDUuLjVjMzEzMThhYmE0NTZiZGIyZWZmOWY2MGU1
MTU2NDU5NDEyZjc3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC03MCw2
ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CisgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0Owor
CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIElEQlJlcXVlc3QqIHRvSURCUmVxdWVz
dCgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKQEAgLTk0LDYgKzk3LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CiAKICAgICBSZWFk
eVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBib29sIG1fZmluaXNoZWQ7IC8vIElzIGl0IHBvc3Np
YmxlIHRoYXQgd2UnbGwgZmlyZSBhbnkgbW9yZSBldmVudHM/IElmIG5vdCwgd2UncmUgZmluaXNo
ZWQuCiAKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAyNmFmMjE3M2M0OTAzYmU0
YTNiZDY2MjQwOTc1ZDkzNDgwZjhkZDVmLi4xZjY5NmIzZTAzODgwOWI2Zjg4OGFlNzIwZWM0ZGUz
Y2I0OTc3NDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApA
QCAtNjcsNiArNjcsMTEgQEAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBJREJUcmFu
c2FjdGlvbjo6YmFja2VuZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsKIH0K
IAorYm9vbCBJREJUcmFuc2FjdGlvbjo6ZmluaXNoZWQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2ZpbmlzaGVkOworfQorCiB1bnNpZ25lZCBzaG9ydCBJREJUcmFuc2FjdGlvbjo6bW9kZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fbW9kZTsKQEAgLTEwOSw2ICsxMTQsMTQgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiAgICAgZW5xdWV1ZUV2ZW50KElEQkNvbXBsZXRlRXZl
bnQ6OmNyZWF0ZShJREJBbnk6OmNyZWF0ZSh0aGlzKSkpOwogfQogCitib29sIElEQlRyYW5zYWN0
aW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBJbiBhbiBp
ZGVhbCB3b3JsZCwgd2Ugc2hvdWxkIHJldHVybiB0cnVlIGFzIGxvbmcgYXMgYW55b25lIGhhcyBh
IG9yIGNhbgorICAgIC8vICAgICAgICBnZXQgYSBoYW5kbGUgdG8gdXMgb3IgYW55IGNoaWxkIHJl
cXVlc3Qgb2JqZWN0IGFuZCBhbnkgb2YgdGhvc2UgaGF2ZQorICAgIC8vICAgICAgICBldmVudCBs
aXN0ZW5lcnMuIFRoaXMgaXMgIGluIG9yZGVyIHRvIGhhbmRsZSB1c2VyIGdlbmVyYXRlZCBldmVu
dHMgcHJvcGVybHkuCisgICAgcmV0dXJuICFtX2ZpbmlzaGVkIHx8IEFjdGl2ZURPTU9iamVjdDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIElEQlRy
YW5zYWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xMTYsNiArMTI5
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAogCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIEFTU0VSVCghbV9maW5pc2hlZCk7CiAg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50
YXJnZXQoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQoIW1fZmluaXNoZWQpOwpAQCAtMTMxLDEzICsx
NDUsMTcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50PiBldmVudCkKIAogYm9vbCBJREJUcmFuc2FjdGlvbjo6Y2FuU3VzcGVuZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFtX2JhY2tlbmQ7CisgICAgLy8gRklYTUU6IFRlY2huaWNhbGx5IHdlIGNh
biBzdXNwZW5kIGJlZm9yZSB0aGUgZmlyc3QgcmVxdWVzdCBpcyBzY2hlZHVsZQorICAgIC8vICAg
ICAgICBhbmQgYWZ0ZXIgdGhlIGNvbXBsZXRlL2Fib3J0IGV2ZW50IGlzIGVucXVldWVkLgorICAg
IHJldHVybiBtX2ZpbmlzaGVkOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpjb250ZXh0RGVz
dHJveWVkKCkKIHsKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKIAor
ICAgIC8vIE11c3QgaGFwcGVuIGluIGNvbnRleHREZXN0cm95ZWQgc2luY2UgaXQgY2FuIHJlc3Vs
dCBpbiBBY3RpdmVET01PYmplY3RzIGJlaW5nIGRlc3RydWN0ZWQKKyAgICAvLyAoYW5kIGNvbnRl
eHREZXN0cm95ZWQgaXMgdGhlIG9ubHkgb25lIHJlc2lsaWVudCBhZ2FpbnN0IHRoaXMpLgogICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gc2VsZlJlZiA9IHRoaXM7CiAgICAgaWYgKG1fYmFja2Vu
ZCkKICAgICAgICAgbV9iYWNrZW5kLT5hYm9ydCgpOwpAQCAtMTQ3LDYgKzE2NSw3IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmNvbnRleHREZXN0cm95ZWQoKQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
OjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CisgICAgQVNTRVJUKCFt
X2ZpbmlzaGVkKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggYTFh
ZTg0YTBiZjBmODc1ZDViNmI2MzcwY2M0MTMwNTA4ZTJlNzcyYS4uZmY0ZmViNjEyMzExY2FiYjNm
ZjBhMzYwODQ1YzM1YjlkYmU0ZTNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb24uaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogYmFja2VuZCgpIGNvbnN0OworICAgIGJvb2wgZmluaXNo
ZWQoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIHNob3J0IG1vZGUoKSBjb25zdDsKICAgICBJREJE
YXRhYmFzZSogZGIoKSBjb25zdDsKQEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KIAogICAg
IC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKQEAgLTk2LDcgKzk4LDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIHVuc2lnbmVkIHNob3J0IG1f
bW9kZTsKLSAgICBib29sIG1fZmluaXNoZWQ7CisgICAgYm9vbCBtX2ZpbmlzaGVkOyAvLyBJcyBp
dCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBu
ZXcgdHJhbnNhY3Rpb25zPyBJZiBub3QsIHdlJ3JlIGZpbmlzaGVkLgogCiAgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwogfTsK
</data>
<flag name="review"
          id="73641"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>