<?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>110644</bug_id>
          
          <creation_ts>2013-02-22 14:11:18 -0800</creation_ts>
          <short_desc>Add descriptive names for different addMidpoint use cases</short_desc>
          <delta_ts>2013-02-22 16:02:20 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839945</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 14:11:18 -0800</bug_when>
    <thetext>Midpoints are used to delineate ranges where we don&apos;t add line boxes for contents (collapsed spaces), but we also use them to split a text paragraph separator into a different line box from text before it. I came up with four helper functions to try and make it clearer what we&apos;re doing when we add midpoints during line layout. It also allows us to add an assertion for midpoints to be balanced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839983</commentid>
    <comment_count>1</comment_count>
      <attachid>189830</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 14:30:59 -0800</bug_when>
    <thetext>Created attachment 189830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839995</commentid>
    <comment_count>2</comment_count>
      <attachid>189830</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-22 14:38:12 -0800</bug_when>
    <thetext>Comment on attachment 189830
Patch

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

You are my hero.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:-2662
&gt; -                    ignoreStart.m_obj = current.m_obj;
&gt; -                    ignoreStart.m_pos = 0;

We&apos;re just re-using the iterator here?  Is it OK to remove this?

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2940
&gt; -                            if (ignoringSpaces || !currentStyle-&gt;collapseWhiteSpace() || !currentCharacterIsSpace || !previousCharacterIsSpace)
&gt; +                            if (ignoringSpaces || !collapseWhiteSpace || !currentCharacterIsSpace || !previousCharacterIsSpace)

I assume these are equivalent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839996</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-22 14:38:29 -0800</bug_when>
    <thetext>Please answer my qeustions before settign cq+. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840024</commentid>
    <comment_count>4</comment_count>
      <attachid>189830</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 14:56:28 -0800</bug_when>
    <thetext>Comment on attachment 189830
Patch

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

Thanks for the kind words! I&apos;ll update as per our conversation.

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:-2662
&gt;&gt; -                    ignoreStart.m_pos = 0;
&gt; 
&gt; We&apos;re just re-using the iterator here?  Is it OK to remove this?

Yessir!

&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:2940
&gt;&gt; +                            if (ignoringSpaces || !collapseWhiteSpace || !currentCharacterIsSpace || !previousCharacterIsSpace)
&gt; 
&gt; I assume these are equivalent?

Correct. We explicitly store this value earlier and this is the one place we failed to use the saved value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840026</commentid>
    <comment_count>5</comment_count>
      <attachid>189840</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 14:58:58 -0800</bug_when>
    <thetext>Created attachment 189840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840043</commentid>
    <comment_count>6</comment_count>
      <attachid>189840</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-22 15:14:00 -0800</bug_when>
    <thetext>Comment on attachment 189840
Patch

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

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:379
&gt; +// When ignoring spaces, this needs to be called for objects that need line boxes such as RenderInlines or
&gt; +// hard line breaks to ensure that they&apos;re not ignored.
&gt; +static inline void ensureLineBox(LineMidpointState&amp; lineMidpointState, RenderObject* renderer)

How about renaming the function to something like ensureLineBoxWhileIgnoringSpaces? Though this name seems to suggest as if the function itself is going to ignore spaces :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840058</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 15:26:46 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 189840 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189840&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:379
&gt; &gt; +// When ignoring spaces, this needs to be called for objects that need line boxes such as RenderInlines or
&gt; &gt; +// hard line breaks to ensure that they&apos;re not ignored.
&gt; &gt; +static inline void ensureLineBox(LineMidpointState&amp; lineMidpointState, RenderObject* renderer)
&gt; 
&gt; How about renaming the function to something like ensureLineBoxWhileIgnoringSpaces? Though this name seems to suggest as if the function itself is going to ignore spaces :(

Either name is an improvement over what we have now. If you prefer that one I&apos;m happy to change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840075</commentid>
    <comment_count>8</comment_count>
      <attachid>189840</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-22 15:41:39 -0800</bug_when>
    <thetext>Comment on attachment 189840
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:379
&gt;&gt;&gt; +static inline void ensureLineBox(LineMidpointState&amp; lineMidpointState, RenderObject* renderer)
&gt;&gt; 
&gt;&gt; How about renaming the function to something like ensureLineBoxWhileIgnoringSpaces? Though this name seems to suggest as if the function itself is going to ignore spaces :(
&gt; 
&gt; Either name is an improvement over what we have now. If you prefer that one I&apos;m happy to change it.

Per IRC discussion, I&apos;d prefer ensureLineBoxInsideIgnoredSpaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840077</commentid>
    <comment_count>9</comment_count>
      <attachid>189851</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2013-02-22 15:43:40 -0800</bug_when>
    <thetext>Created attachment 189851
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840086</commentid>
    <comment_count>10</comment_count>
      <attachid>189851</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 16:02:14 -0800</bug_when>
    <thetext>Comment on attachment 189851
Patch for landing

Clearing flags on attachment: 189851

Committed r143812: &lt;http://trac.webkit.org/changeset/143812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840087</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 16:02:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189830</attachid>
            <date>2013-02-22 14:30:59 -0800</date>
            <delta_ts>2013-02-22 14:58:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110644-20130222142718.patch</filename>
            <type>text/plain</type>
            <size>14297</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAyLTIyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZGVzY3JpcHRpdmUg
bmFtZXMgZm9yIGRpZmZlcmVudCBhZGRNaWRwb2ludCB1c2UgY2FzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pZHBvaW50cyBhcmUgdXNlZCB0byBk
ZWxpbmVhdGUgcmFuZ2VzIHdoZXJlIHdlIGRvbid0IGFkZCBsaW5lIGJveGVzIGZvciBjb250ZW50
cyAoY29sbGFwc2VkIHNwYWNlcyksCisgICAgICAgIGFuZCB0byBleHBsaWNpdGx5IHNwbGl0IGEg
UmVuZGVyVGV4dCBpbnRvIG11bHRpcGxlIHRleHQgcnVucyBzbyB0aGF0IHRleHQgcGFyYWdyYXBo
IHNlcGVyYXRvcnMgZ2V0CisgICAgICAgIHRoZWlyIG93biBsaW5lIGJveGVzLiBUaGlzIHBhdGNo
IGVuY2Fwc3VsYXRlcyB0aGUgZGlmZmVyZW50IGNhc2VzIHdoZXJlIG1pZHBvaW50cyBhcmUgYWRk
ZWQgdG8KKyAgICAgICAgbGluZU1pZHBvaW50U3RhdGUgaW50byA0IGhlbHBlciBmdW5jdGlvbnMg
dG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQncyBnb2luZyBvbiBpbiBlYWNoIGNhc2UuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWRkTWlkcG9pbnQpOiBPcmlnaW5hbCBmdW5jdGlvbiBzaW1wbHkgYWRkcyBhIG1pZHBvaW50IHRv
IHRoZSBsaW5lTWlkcG9pbnRTdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0SWdub3JpbmdT
cGFjZXMpOiBBZGRzIGEgbWlkcG9pbnQgdG8gc3RhcnQgY29sbGFwc2luZyBzdWJzZXF1ZW50IHNw
YWNlcy4gQXNzZXJ0cyB0aGF0CisgICAgICAgIHdlIGhhdmUgYW4gZXZlbiBudW1iZXIgb2YgbWlk
cG9pbnRzLgorICAgICAgICAoV2ViQ29yZTo6c3RvcElnbm9yaW5nU3BhY2VzKTogQWRkcyB0aGUg
Y29ycmVzcG9uZGluZyBtaWRwb2ludCBmcm9tIHN0YXJ0SWdub3JpbmdTcGFjZXMgYW5kIGFzc2Vy
dHMKKyAgICAgICAgdGhhdCBpdCdzIGFuIG9kZCBudW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpl
bnN1cmVMaW5lQm94KTogV2hlbiBpZ25vcmluZyBzcGFjZXMgYW5kIHdlIGNvbWUgYWNyb3NzIGEg
UmVuZGVySW5saW5lIHRoYXQgbmVlZHMgYSBsaW5lCisgICAgICAgIGJveCwgdGhpcyBmdW5jdGlv
biBhZGRzIGEgcGFpciBvZiBtaWRwb2ludHMgd2hpY2ggZW5zdXJlcyB3ZSdsbCBsYXRlciBhZGQg
YSBsaW5lIGJveCBmb3IgaXQuCisgICAgICAgIChXZWJDb3JlOjplbnN1cmVDaGFyYWN0ZXJHZXRz
TGluZUJveCk6IEFkZHMgYSBwYWlyIG9mIG1pZHBvaW50cyBpbiBhIHRleHQgcmVuZGVyZXIgdG8g
bWFyayB0aGF0CisgICAgICAgIHRoZSBjdXJyZW50IGNoYXJhY3RlciBuZWVkcyBpdHMgb3duIGxp
bmUgYm94LiBUaGlzIGlzIHVzZWQgYnkgc3ZnIGZvciBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQKKyAg
ICAgICAgY2hhcmFjdGVycywgb3IgZm9yIHRleHQgcGFyYWdyYXBoIHNlcGVyYXRvcnMuCisKIDIw
MTMtMDItMjEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBdXRv
Z2VuZXJhdGUgU2V0dGluZ3MgdGhhdCBjYWxsIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1l
cyB3aGVuIHNldApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTIsNiArMzUyLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tNaWRwb2ludHMoTGluZU1pZHBvaW50Uwog
ICAgIH0KIH0KIAorLy8gRG9uJ3QgY2FsbCB0aGlzIGRpcmVjdGx5LiBVc2Ugb25lIG9mIHRoZSBk
ZXNjcmlwdGl2ZSBoZWxwZXIgZnVuY3Rpb25zIGJlbG93Lgogc3RhdGljIHZvaWQgYWRkTWlkcG9p
bnQoTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlLCBjb25zdCBJbmxpbmVJdGVy
YXRvciYgbWlkcG9pbnQpCiB7CiAgICAgaWYgKGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50cy5z
aXplKCkgPD0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzKQpAQCAtMzYxLDYgKzM2Miwz
NSBAQCBzdGF0aWMgdm9pZCBhZGRNaWRwb2ludChMaW5lTWlkcG9pbnRTdGF0CiAgICAgbWlkcG9p
bnRzW2xpbmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cysrXSA9IG1pZHBvaW50OwogfQogCitz
dGF0aWMgaW5saW5lIHZvaWQgc3RhcnRJZ25vcmluZ1NwYWNlcyhMaW5lTWlkcG9pbnRTdGF0ZSYg
bGluZU1pZHBvaW50U3RhdGUsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBtaWRwb2ludCkKK3sKKyAg
ICBBU1NFUlQoIShsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMgJSAyKSk7CisgICAgYWRk
TWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIG1pZHBvaW50KTsKK30KKworc3RhdGljIGlubGlu
ZSB2b2lkIHN0b3BJZ25vcmluZ1NwYWNlcyhMaW5lTWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBvaW50
U3RhdGUsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBtaWRwb2ludCkKK3sKKyAgICBBU1NFUlQobGlu
ZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzICUgMik7CisgICAgYWRkTWlkcG9pbnQobGluZU1p
ZHBvaW50U3RhdGUsIG1pZHBvaW50KTsKK30KKworLy8gV2hlbiBpZ25vcmluZyBzcGFjZXMsIHRo
aXMgbmVlZHMgdG8gYmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgbmVlZCBsaW5lIGJveGVzIHN1
Y2ggYXMgUmVuZGVySW5saW5lcyBvcgorLy8gaGFyZCBsaW5lIGJyZWFrcyB0byBlbnN1cmUgdGhh
dCB0aGV5J3JlIG5vdCBpZ25vcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGVuc3VyZUxpbmVCb3go
TGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlLCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQoreworICAgIElubGluZUl0ZXJhdG9yIG1pZHBvaW50KDAsIHJlbmRlcmVyLCAwKTsKKyAg
ICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIG1pZHBvaW50KTsKKyAgICBz
dGFydElnbm9yaW5nU3BhY2VzKGxpbmVNaWRwb2ludFN0YXRlLCBtaWRwb2ludCk7Cit9CisKKy8v
IEFkZGluZyBhIHBhaXIgb2YgbWlkcG9pbnRzIGJlZm9yZSBhIGNoYXJhY3RlciB3aWxsIHNwbGl0
IGl0IG91dCBpbnRvIGEgbmV3IGxpbmUgYm94Lgorc3RhdGljIGlubGluZSB2b2lkIGVuc3VyZUNo
YXJhY3RlckdldHNMaW5lQm94KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwg
SW5saW5lSXRlcmF0b3ImIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IpCit7CisgICAgSW5saW5lSXRl
cmF0b3IgbWlkcG9pbnQoMCwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX29iaiwgdGV4dFBhcmFn
cmFwaFNlcGFyYXRvci5tX3Bvcyk7CisgICAgc3RhcnRJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9p
bnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX29iaiwg
dGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX3BvcyAtIDEpKTsKKyAgICBzdG9wSWdub3JpbmdTcGFj
ZXMobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIHRleHRQYXJhZ3JhcGhTZXBh
cmF0b3IubV9vYmosIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IubV9wb3MpKTsKK30KKwogc3RhdGlj
IGlubGluZSBCaWRpUnVuKiBjcmVhdGVSdW4oaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmpl
Y3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKIHsKICAgICByZXR1cm4gbmV3
IChvYmotPnJlbmRlckFyZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5j
b250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKQEAgLTIzMTQsNyArMjM0NCw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZFNraXBXaGl0ZXNwYWNlQWZ0ZXJTdGEKICAgICAgICAgUmVuZGVyVGV4dCogbmV4
dFRleHQgPSB0b1JlbmRlclRleHQobmV4dCk7CiAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4
dFRleHQtPmNoYXJhY3RlckF0KDApOwogICAgICAgICBpZiAobmV4dFRleHQtPnN0eWxlKCktPmlz
Q29sbGFwc2libGVXaGl0ZVNwYWNlKG5leHRDaGFyKSkgewotICAgICAgICAgICAgYWRkTWlkcG9p
bnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8sIDApKTsKKyAgICAgICAg
ICAgIHN0YXJ0SWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9y
KDAsIG8sIDApKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjQ2Nyw5ICsyNDk3LDcgQEAgdm9pZCBUcmFpbGluZ09iamVjdHM6OnVwZGF0ZU1pZHBvaW50
c0ZvcgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGlmIChjdXJyZW50TWlkcG9pbnQgPj0gbGluZU1pZHBvaW50U3RhdGUu
bnVtTWlkcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1pZHBv
aW50IGZvciB0aGlzIGJveCB5ZXQuCi0gICAgICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdu
b3JlU3RhcnQoMCwgbV9ib3hlc1tpXSwgMCk7Ci0gICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQo
bGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KLSAgICAg
ICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAv
LyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBlbnN1cmVMaW5lQm94KGxp
bmVNaWRwb2ludFN0YXRlLCBtX2JveGVzW2ldKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlk
cG9pbnRdLm1fb2JqID09IG1fYm94ZXNbaV0pOwogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5l
TWlkcG9pbnRTdGF0ZS5taWRwb2ludHNbY3VycmVudE1pZHBvaW50ICsgMV0ubV9vYmogPT0gbV9i
b3hlc1tpXSk7CkBAIC0yNDgzLDExICsyNTExLDkgQEAgdm9pZCBUcmFpbGluZ09iamVjdHM6OnVw
ZGF0ZU1pZHBvaW50c0ZvcgogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRlc3BhY2Ut
PnRleHRMZW5ndGgoKTsKICAgICAgICAgdW5zaWduZWQgcG9zID0gbGVuZ3RoID49IDIgPyBsZW5n
dGggLSAyIDogVUlOVF9NQVg7CiAgICAgICAgIElubGluZUl0ZXJhdG9yIGVuZE1pZCgwLCBtX3do
aXRlc3BhY2UsIHBvcyk7Ci0gICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBl
bmRNaWQpOworICAgICAgICBzdGFydElnbm9yaW5nU3BhY2VzKGxpbmVNaWRwb2ludFN0YXRlLCBl
bmRNaWQpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIElubGluZUl0ZXJhdG9yIGlnbm9yZVN0YXJ0KDAsIG1fYm94ZXNb
aV0sIDApOwotICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9y
ZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZyBzcGFjZXMuCi0gICAgICAgICAgICBhZGRNaWRwb2lu
dChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fp
bi4KKyAgICAgICAgICAgIGVuc3VyZUxpbmVCb3gobGluZU1pZHBvaW50U3RhdGUsIG1fYm94ZXNb
aV0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjYzMSw4ICsyNjU3LDcgQEAgSW5saW5lSXRl
cmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAgICAgIC8vIG5lZWQg
dG8gY2hlY2sgZm9yIGZsb2F0cyB0byBjbGVhciAtIHNvIGlmIHdlJ3JlIGlnbm9yaW5nIHNwYWNl
cywgc3RvcCBpZ25vcmluZyB0aGVtIGFuZCBhZGQgYQogICAgICAgICAgICAgICAgIC8vIHJ1biBm
b3IgdGhpcyBvYmplY3QuCiAgICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzICYmIGN1
cnJlbnRTdHlsZS0+Y2xlYXIoKSAhPSBDTk9ORSkgewotICAgICAgICAgICAgICAgICAgICBhZGRN
aWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29i
aiwgMCkpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KLSAgICAgICAgICAgICAgICAgICAgYWRk
TWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9v
YmosIDApKTsgLy8gU3RhcnQgaWdub3JpbmcgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIGVu
c3VyZUxpbmVCb3gobGluZU1pZHBvaW50U3RhdGUsIGN1cnJlbnQubV9vYmopOwogICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghbGluZUluZm8uaXNFbXB0eSgpKQpAQCAt
MjY1NywxMiArMjY4Miw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtl
cjoKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGlnbm9yaW5nIHNwYWNlcywgd2UgaGF2ZSB0byBz
dG9wIGFuZCBpbmNsdWRlIHRoaXMgb2JqZWN0IGFuZAogICAgICAgICAgICAgLy8gdGhlbiBzdGFy
dCBpZ25vcmluZyBzcGFjZXMgYWdhaW4uCiAgICAgICAgICAgICBpZiAoaXNJbmxpbmVUeXBlIHx8
IGN1cnJlbnQubV9vYmotPmNvbnRhaW5lcigpLT5pc1JlbmRlcklubGluZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlnbm9y
ZVN0YXJ0Lm1fb2JqID0gY3VycmVudC5tX29iajsKLSAgICAgICAgICAgICAgICAgICAgaWdub3Jl
U3RhcnQubV9wb3MgPSAwOwotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlk
cG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KLSAgICAg
ICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0
KTsgLy8gU3RhcnQgaWdub3JpbmcgYWdhaW4uCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcykKKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlTGlu
ZUJveChsaW5lTWlkcG9pbnRTdGF0ZSwgY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAg
dHJhaWxpbmdPYmplY3RzLmFwcGVuZEJveElmTmVlZGVkKGJveCk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLmFwcGVuZChib3gpOwpAQCAt
MjY5OSw4ICsyNzIwLDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2Vy
OgogICAgICAgICAgICAgICAgICAgICBsaW5lSW5mby5zZXRFbXB0eShmYWxzZSwgbV9ibG9jaywg
JndpZHRoKTsKICAgICAgICAgICAgICAgICBpZiAoaWdub3JpbmdTcGFjZXMpIHsKICAgICAgICAg
ICAgICAgICAgICAgdHJhaWxpbmdPYmplY3RzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBJbmxpbmVJdGVyYXRvcigwLCBjdXJyZW50
Lm1fb2JqLCAwKSk7IC8vIFN0b3AgaWdub3Jpbmcgc3BhY2VzLgotICAgICAgICAgICAgICAgICAg
ICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVu
dC5tX29iaiwgMCkpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAg
ICAgZW5zdXJlTGluZUJveChsaW5lTWlkcG9pbnRTdGF0ZSwgY3VycmVudC5tX29iaik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja1N0eWxlLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSAm
JiByZXNvbHZlci5wb3NpdGlvbigpLm1fb2JqID09IGN1cnJlbnQubV9vYmoKICAgICAgICAgICAg
ICAgICAgICAgJiYgc2hvdWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KG1fYmxvY2ss
IGN1cnJlbnQubV9vYmosIGxpbmVNaWRwb2ludFN0YXRlKSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBMaWtlIHdpdGggbGlzdCBtYXJrZXJzLCB3ZSBzdGFydCBpZ25vcmluZyBzcGFjZXMgdG8g
bWFrZSBzdXJlIHRoYXQgYW55CkBAIC0yNzI1LDcgKzI3NDUsNyBAQCBJbmxpbmVJdGVyYXRvciBS
ZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChpZ25vcmluZ1NwYWNlcykKLSAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9p
bnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOworICAgICAgICAg
ICAgICAgIHN0b3BJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0
b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOwogCiAgICAgICAgICAgICBsaW5lSW5mby5zZXRFbXB0
eShmYWxzZSwgbV9ibG9jaywgJndpZHRoKTsKICAgICAgICAgICAgIGlnbm9yaW5nU3BhY2VzID0g
ZmFsc2U7CkBAIC0yODQ0LDcgKzI4NjQsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6
TGluZUJyZWFrZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JpbmdTcGFjZXMg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkU3BhY2luZ0ZvcldvcmRN
ZWFzdXJlbWVudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNwYWNlID0g
Y3VycmVudC5tX3BvczsgLy8gZS5nLiwgIkZvbyAgICBnb28iLCBkb24ndCBhZGQgaW4gYW55IG9m
IHRoZSBpZ25vcmVkIHNwYWNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRw
b2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwg
Y3VycmVudC5tX3BvcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BJZ25vcmlu
Z1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29i
aiwgY3VycmVudC5tX3BvcykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BwZWRJ
Z25vcmluZ1NwYWNlcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qga2VlcCBpZ25vcmluZyB0aGVzZSBz
cGFjZXMuCkBAIC0yOTAyLDExICsyOTIyLDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6
OkxpbmVCcmVha2VyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBl
bmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChsQnJlYWsuYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wcGVkSWdub3JpbmdTcGFjZXMgJiYgY3Vy
cmVudC5tX3BvcyA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gc3RvcCByaWdodCBiZWZvcmUgdGhlIG5ld2xpbmUgYW5kIHRoZW4gc3RhcnQg
dXAgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2lu
dChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3Vy
cmVudC5tX3BvcyAtIDEpKTsgLy8gU3RvcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1
cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MpKTsgLy8gU3RhcnQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0
b3BwZWRJZ25vcmluZ1NwYWNlcyAmJiBjdXJyZW50Lm1fcG9zID4gMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KGxpbmVNaWRw
b2ludFN0YXRlLCBjdXJyZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEJy
ZWFrLmluY3JlbWVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSW5m
by5zZXRQcmV2aW91c0xpbmVCcm9rZUNsZWFubHkodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5lbmRPZmZzZXQgPSBsQnJlYWsubV9wb3M7CkBA
IC0yOTIwLDcgKzI5MzcsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFr
ZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlkbid0IGZpdC4g
SnVtcCB0byB0aGUgZW5kIHVubGVzcyB0aGVyZSdzIHN0aWxsIGFuIG9wcG9ydHVuaXR5IHRvIGNv
bGxhcHNlIHdoaXRlc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9y
aW5nU3BhY2VzIHx8ICFjdXJyZW50U3R5bGUtPmNvbGxhcHNlV2hpdGVTcGFjZSgpIHx8ICFjdXJy
ZW50Q2hhcmFjdGVySXNTcGFjZSB8fCAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcyB8fCAhY29sbGFwc2VXaGl0
ZVNwYWNlIHx8ICFjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSB8fCAhcHJldmlvdXNDaGFyYWN0ZXJJ
c1NwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFiZXR3ZWVuV29yZHMgfHwgKG1pZFdvcmRCcmVhayAmJiAhYXV0b1dyYXApKQpAQCAtMjkz
NCwxMSArMjk1MSw4IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoK
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdc
bicgJiYgcHJlc2VydmVOZXdsaW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0
b3BwZWRJZ25vcmluZ1NwYWNlcyAmJiBjdXJyZW50Lm1fcG9zID4gMCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3RvcCByaWdodCBiZWZvcmUgdGhlIG5ld2xp
bmUgYW5kIHRoZW4gc3RhcnQgdXAgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQu
bV9vYmosIGN1cnJlbnQubV9wb3MgLSAxKSk7IC8vIFN0b3AKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwg
Y3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOyAvLyBTdGFydAotICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wcGVkSWdub3JpbmdT
cGFjZXMgJiYgY3VycmVudC5tX3BvcyA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZW5zdXJlQ2hhcmFjdGVyR2V0c0xpbmVCb3gobGluZU1pZHBvaW50U3RhdGUsIGN1cnJlbnQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLm1vdmVUbyhjdXJyZW50Lm1fb2JqLCBjdXJy
ZW50Lm1fcG9zLCBjdXJyZW50Lm1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxCcmVhay5pbmNyZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGxpbmVJbmZvLnNldFByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSh0cnVlKTsKQEAgLTI5NzcsNyAr
Mjk5MSw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IGVudGVyZWQgYSBtb2RlIHdoZXJlIHdl
IGFyZSBpZ25vcmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYWNlcy4gQ3Jl
YXRlIGEgbWlkcG9pbnQgdG8gdGVybWluYXRlIHRoZSBydW4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBiZWZvcmUgdGhlIHNlY29uZCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50
U3RhdGUsIGlnbm9yZVN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGlu
Z09iamVjdHMudXBkYXRlTWlkcG9pbnRzRm9yVHJhaWxpbmdCb3hlcyhsaW5lTWlkcG9pbnRTdGF0
ZSwgSW5saW5lSXRlcmF0b3IoKSwgVHJhaWxpbmdPYmplY3RzOjpEb05vdENvbGxhcHNlRmlyc3RT
cGFjZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTI5ODgsMTYgKzMwMDIsMTQgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVC
cmVha2VyOgogICAgICAgICAgICAgICAgICAgICBsYXN0U3BhY2VXb3JkU3BhY2luZyA9IGFwcGx5
V29yZFNwYWNpbmcgPyB3b3JkU3BhY2luZyA6IDA7CiAgICAgICAgICAgICAgICAgICAgIHdvcmRT
cGFjaW5nRm9yV29yZE1lYXN1cmVtZW50ID0gKGFwcGx5V29yZFNwYWNpbmcgJiYgd29yZE1lYXN1
cmVtZW50cy5sYXN0KCkud2lkdGgpID8gd29yZFNwYWNpbmcgOiAwOwogICAgICAgICAgICAgICAg
ICAgICBsYXN0U3BhY2UgPSBjdXJyZW50Lm1fcG9zOyAvLyBlLmcuLCAiRm9vICAgIGdvbyIsIGRv
bid0IGFkZCBpbiBhbnkgb2YgdGhlIGlnbm9yZWQgc3BhY2VzLgotICAgICAgICAgICAgICAgICAg
ICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVu
dC5tX29iaiwgY3VycmVudC5tX3BvcykpOworICAgICAgICAgICAgICAgICAgICBzdG9wSWdub3Jp
bmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9v
YmosIGN1cnJlbnQubV9wb3MpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoU1ZH
KQogICAgICAgICAgICAgICAgIGlmIChpc1NWR1RleHQgJiYgY3VycmVudC5tX3BvcyA+IDApIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgY3JlYXRpb24gb2YgbmV3IElubGluZUJveGVz
IGZvciBlYWNoIGFic29sdXRlIHBvc2l0aW9uZWQgY2hhcmFjdGVyICh0aG9zZSB0aGF0IHN0YXJ0
IG5ldyB0ZXh0IGNodW5rcykuCi0gICAgICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlclNWR0lu
bGluZVRleHQodCktPmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhjdXJyZW50Lm1fcG9zKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUs
IElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MgLSAxKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5s
aW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOwotICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlclNWR0lubGluZVRl
eHQodCktPmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhjdXJyZW50Lm1fcG9zKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KGxpbmVNaWRwb2lu
dFN0YXRlLCBjdXJyZW50KTsKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189840</attachid>
            <date>2013-02-22 14:58:58 -0800</date>
            <delta_ts>2013-02-22 15:43:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110644-20130222145517.patch</filename>
            <type>text/plain</type>
            <size>14567</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTIyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZGVzY3JpcHRpdmUg
bmFtZXMgZm9yIGRpZmZlcmVudCBhZGRNaWRwb2ludCB1c2UgY2FzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pZHBvaW50cyBhcmUgdXNlZCB0byBk
ZWxpbmVhdGUgcmFuZ2VzIHdoZXJlIHdlIGRvbid0IGFkZCBsaW5lIGJveGVzIGZvciBjb250ZW50
cyAoY29sbGFwc2VkIHNwYWNlcyksCisgICAgICAgIGFuZCB0byBleHBsaWNpdGx5IHNwbGl0IGEg
UmVuZGVyVGV4dCBpbnRvIG11bHRpcGxlIHRleHQgcnVucyBzbyB0aGF0IHRleHQgcGFyYWdyYXBo
IHNlcGVyYXRvcnMgZ2V0CisgICAgICAgIHRoZWlyIG93biBsaW5lIGJveGVzLiBUaGlzIHBhdGNo
IGVuY2Fwc3VsYXRlcyB0aGUgZGlmZmVyZW50IGNhc2VzIHdoZXJlIG1pZHBvaW50cyBhcmUgYWRk
ZWQgdG8KKyAgICAgICAgbGluZU1pZHBvaW50U3RhdGUgaW50byA0IGhlbHBlciBmdW5jdGlvbnMg
dG8gbWFrZSBpdCBjbGVhcmVyIHdoYXQncyBnb2luZyBvbiBpbiBlYWNoIGNhc2UuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVwcmVjYXRlZEFkZE1pZHBvaW50KTogT3JpZ2luYWwgZnVuY3Rpb24gc2ltcGx5IGFkZHMgYSBt
aWRwb2ludCB0byB0aGUgbGluZU1pZHBvaW50U3RhdGUuCisgICAgICAgIFJlbmFtaW5nIHRvIGRl
cHJlY2F0ZWQgdG8gZGlzY291cmFnZSBjYWxsZXJzLgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRJ
Z25vcmluZ1NwYWNlcyk6IEFkZHMgYSBtaWRwb2ludCB0byBzdGFydCBjb2xsYXBzaW5nIHN1YnNl
cXVlbnQgc3BhY2VzLiBBc3NlcnRzIHRoYXQKKyAgICAgICAgd2UgaGF2ZSBhbiBldmVuIG51bWJl
ciBvZiBtaWRwb2ludHMuCisgICAgICAgIChXZWJDb3JlOjpzdG9wSWdub3JpbmdTcGFjZXMpOiBB
ZGRzIHRoZSBjb3JyZXNwb25kaW5nIG1pZHBvaW50IGZyb20gc3RhcnRJZ25vcmluZ1NwYWNlcyBh
bmQgYXNzZXJ0cworICAgICAgICB0aGF0IGl0J3MgYW4gb2RkIG51bWJlci4KKyAgICAgICAgKFdl
YkNvcmU6OmVuc3VyZUxpbmVCb3gpOiBXaGVuIGlnbm9yaW5nIHNwYWNlcyBhbmQgd2UgY29tZSBh
Y3Jvc3MgYSBSZW5kZXJJbmxpbmUgdGhhdCBuZWVkcyBhIGxpbmUKKyAgICAgICAgYm94LCB0aGlz
IGZ1bmN0aW9uIGFkZHMgYSBwYWlyIG9mIG1pZHBvaW50cyB3aGljaCBlbnN1cmVzIHdlJ2xsIGxh
dGVyIGFkZCBhIGxpbmUgYm94IGZvciBpdC4KKyAgICAgICAgKFdlYkNvcmU6OmVuc3VyZUNoYXJh
Y3RlckdldHNMaW5lQm94KTogQWRkcyBhIHBhaXIgb2YgbWlkcG9pbnRzIGluIGEgdGV4dCByZW5k
ZXJlciB0byBtYXJrIHRoYXQKKyAgICAgICAgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIG5lZWRzIGl0
cyBvd24gbGluZSBib3guIFRoaXMgaXMgdXNlZCBieSBzdmcgZm9yIGFic29sdXRlbHkgcG9zaXRp
b25lZAorICAgICAgICBjaGFyYWN0ZXJzLCBvciBmb3IgdGV4dCBwYXJhZ3JhcGggc2VwZXJhdG9y
cy4KKwogMjAxMy0wMi0yMSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEF1dG9nZW5lcmF0ZSBTZXR0aW5ncyB0aGF0IGNhbGwgc2V0TmVlZHNSZWNhbGNTdHlsZUlu
QWxsRnJhbWVzIHdoZW4gc2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMTQzNjU0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1Miw3ICszNTIsOCBAQCBzdGF0aWMgdm9pZCBjaGVja01pZHBvaW50cyhMaW5lTWlk
cG9pbnRTCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhZGRNaWRwb2ludChMaW5lTWlkcG9pbnRT
dGF0ZSYgbGluZU1pZHBvaW50U3RhdGUsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBtaWRwb2ludCkK
Ky8vIERvbid0IGNhbGwgdGhpcyBkaXJlY3RseS4gVXNlIG9uZSBvZiB0aGUgZGVzY3JpcHRpdmUg
aGVscGVyIGZ1bmN0aW9ucyBiZWxvdy4KK3N0YXRpYyB2b2lkIGRlcHJlY2F0ZWRBZGRNaWRwb2lu
dChMaW5lTWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBvaW50U3RhdGUsIGNvbnN0IElubGluZUl0ZXJh
dG9yJiBtaWRwb2ludCkKIHsKICAgICBpZiAobGluZU1pZHBvaW50U3RhdGUubWlkcG9pbnRzLnNp
emUoKSA8PSBsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMpCiAgICAgICAgIGxpbmVNaWRw
b2ludFN0YXRlLm1pZHBvaW50cy5ncm93KGxpbmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cyAr
IDEwKTsKQEAgLTM2MSw2ICszNjIsMzUgQEAgc3RhdGljIHZvaWQgYWRkTWlkcG9pbnQoTGluZU1p
ZHBvaW50U3RhdAogICAgIG1pZHBvaW50c1tsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMr
K10gPSBtaWRwb2ludDsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0SWdub3JpbmdTcGFj
ZXMoTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRlLCBjb25zdCBJbmxpbmVJdGVy
YXRvciYgbWlkcG9pbnQpCit7CisgICAgQVNTRVJUKCEobGluZU1pZHBvaW50U3RhdGUubnVtTWlk
cG9pbnRzICUgMikpOworICAgIGRlcHJlY2F0ZWRBZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0
ZSwgbWlkcG9pbnQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3RvcElnbm9yaW5nU3BhY2Vz
KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwgY29uc3QgSW5saW5lSXRlcmF0
b3ImIG1pZHBvaW50KQoreworICAgIEFTU0VSVChsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2lu
dHMgJSAyKTsKKyAgICBkZXByZWNhdGVkQWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIG1p
ZHBvaW50KTsKK30KKworLy8gV2hlbiBpZ25vcmluZyBzcGFjZXMsIHRoaXMgbmVlZHMgdG8gYmUg
Y2FsbGVkIGZvciBvYmplY3RzIHRoYXQgbmVlZCBsaW5lIGJveGVzIHN1Y2ggYXMgUmVuZGVySW5s
aW5lcyBvcgorLy8gaGFyZCBsaW5lIGJyZWFrcyB0byBlbnN1cmUgdGhhdCB0aGV5J3JlIG5vdCBp
Z25vcmVkLgorc3RhdGljIGlubGluZSB2b2lkIGVuc3VyZUxpbmVCb3goTGluZU1pZHBvaW50U3Rh
dGUmIGxpbmVNaWRwb2ludFN0YXRlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIElu
bGluZUl0ZXJhdG9yIG1pZHBvaW50KDAsIHJlbmRlcmVyLCAwKTsKKyAgICBzdG9wSWdub3JpbmdT
cGFjZXMobGluZU1pZHBvaW50U3RhdGUsIG1pZHBvaW50KTsKKyAgICBzdGFydElnbm9yaW5nU3Bh
Y2VzKGxpbmVNaWRwb2ludFN0YXRlLCBtaWRwb2ludCk7Cit9CisKKy8vIEFkZGluZyBhIHBhaXIg
b2YgbWlkcG9pbnRzIGJlZm9yZSBhIGNoYXJhY3RlciB3aWxsIHNwbGl0IGl0IG91dCBpbnRvIGEg
bmV3IGxpbmUgYm94Lgorc3RhdGljIGlubGluZSB2b2lkIGVuc3VyZUNoYXJhY3RlckdldHNMaW5l
Qm94KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3Im
IHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IpCit7CisgICAgSW5saW5lSXRlcmF0b3IgbWlkcG9pbnQo
MCwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX29iaiwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5t
X3Bvcyk7CisgICAgc3RhcnRJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5l
SXRlcmF0b3IoMCwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX29iaiwgdGV4dFBhcmFncmFwaFNl
cGFyYXRvci5tX3BvcyAtIDEpKTsKKyAgICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50
U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IubV9vYmosIHRl
eHRQYXJhZ3JhcGhTZXBhcmF0b3IubV9wb3MpKTsKK30KKwogc3RhdGljIGlubGluZSBCaWRpUnVu
KiBjcmVhdGVSdW4oaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5l
QmlkaVJlc29sdmVyJiByZXNvbHZlcikKIHsKICAgICByZXR1cm4gbmV3IChvYmotPnJlbmRlckFy
ZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29s
dmVyLmRpcigpKTsKQEAgLTIzMTQsNyArMjM0NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFNraXBX
aGl0ZXNwYWNlQWZ0ZXJTdGEKICAgICAgICAgUmVuZGVyVGV4dCogbmV4dFRleHQgPSB0b1JlbmRl
clRleHQobmV4dCk7CiAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4dFRleHQtPmNoYXJhY3Rl
ckF0KDApOwogICAgICAgICBpZiAobmV4dFRleHQtPnN0eWxlKCktPmlzQ29sbGFwc2libGVXaGl0
ZVNwYWNlKG5leHRDaGFyKSkgewotICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50
U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8sIDApKTsKKyAgICAgICAgICAgIHN0YXJ0SWdub3Jp
bmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8sIDApKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ2Nyw5ICsyNDk3
LDcgQEAgdm9pZCBUcmFpbGluZ09iamVjdHM6OnVwZGF0ZU1pZHBvaW50c0ZvcgogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAg
IGlmIChjdXJyZW50TWlkcG9pbnQgPj0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1pZHBvaW50IGZvciB0aGlzIGJv
eCB5ZXQuCi0gICAgICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdub3JlU3RhcnQoMCwgbV9i
b3hlc1tpXSwgMCk7Ci0gICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3Rh
dGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KLSAgICAgICAgICAgICAgICBhZGRN
aWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmlu
ZyBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBlbnN1cmVMaW5lQm94KGxpbmVNaWRwb2ludFN0YXRl
LCBtX2JveGVzW2ldKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGxpbmVNaWRwb2ludFN0YXRlLm1pZHBvaW50c1tjdXJyZW50TWlkcG9pbnRdLm1fb2JqID09
IG1fYm94ZXNbaV0pOwogICAgICAgICAgICAgICAgIEFTU0VSVChsaW5lTWlkcG9pbnRTdGF0ZS5t
aWRwb2ludHNbY3VycmVudE1pZHBvaW50ICsgMV0ubV9vYmogPT0gbV9ib3hlc1tpXSk7CkBAIC0y
NDgzLDExICsyNTExLDkgQEAgdm9pZCBUcmFpbGluZ09iamVjdHM6OnVwZGF0ZU1pZHBvaW50c0Zv
cgogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBtX3doaXRlc3BhY2UtPnRleHRMZW5ndGgoKTsK
ICAgICAgICAgdW5zaWduZWQgcG9zID0gbGVuZ3RoID49IDIgPyBsZW5ndGggLSAyIDogVUlOVF9N
QVg7CiAgICAgICAgIElubGluZUl0ZXJhdG9yIGVuZE1pZCgwLCBtX3doaXRlc3BhY2UsIHBvcyk7
Ci0gICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBlbmRNaWQpOworICAgICAg
ICBzdGFydElnbm9yaW5nU3BhY2VzKGxpbmVNaWRwb2ludFN0YXRlLCBlbmRNaWQpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
ICAgIElubGluZUl0ZXJhdG9yIGlnbm9yZVN0YXJ0KDAsIG1fYm94ZXNbaV0sIDApOwotICAgICAg
ICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3Rv
cCBpZ25vcmluZyBzcGFjZXMuCi0gICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRT
dGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAgICAgICAgICAg
IGVuc3VyZUxpbmVCb3gobGluZU1pZHBvaW50U3RhdGUsIG1fYm94ZXNbaV0pOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtMjYzMSw4ICsyNjU3LDcgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxv
Y2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gY2hlY2sgZm9yIGZs
b2F0cyB0byBjbGVhciAtIHNvIGlmIHdlJ3JlIGlnbm9yaW5nIHNwYWNlcywgc3RvcCBpZ25vcmlu
ZyB0aGVtIGFuZCBhZGQgYQogICAgICAgICAgICAgICAgIC8vIHJ1biBmb3IgdGhpcyBvYmplY3Qu
CiAgICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzICYmIGN1cnJlbnRTdHlsZS0+Y2xl
YXIoKSAhPSBDTk9ORSkgewotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlk
cG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOyAvLyBTdG9w
IGlnbm9yaW5nIHNwYWNlcy4KLSAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1p
ZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIDApKTsgLy8gU3Rh
cnQgaWdub3JpbmcgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZUxpbmVCb3gobGlu
ZU1pZHBvaW50U3RhdGUsIGN1cnJlbnQubV9vYmopOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmICghbGluZUluZm8uaXNFbXB0eSgpKQpAQCAtMjY1NywxMiArMjY4Miw4
IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAg
IC8vIElmIHdlJ3JlIGlnbm9yaW5nIHNwYWNlcywgd2UgaGF2ZSB0byBzdG9wIGFuZCBpbmNsdWRl
IHRoaXMgb2JqZWN0IGFuZAogICAgICAgICAgICAgLy8gdGhlbiBzdGFydCBpZ25vcmluZyBzcGFj
ZXMgYWdhaW4uCiAgICAgICAgICAgICBpZiAoaXNJbmxpbmVUeXBlIHx8IGN1cnJlbnQubV9vYmot
PmNvbnRhaW5lcigpLT5pc1JlbmRlcklubGluZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGln
bm9yaW5nU3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlnbm9yZVN0YXJ0Lm1fb2JqID0g
Y3VycmVudC5tX29iajsKLSAgICAgICAgICAgICAgICAgICAgaWdub3JlU3RhcnQubV9wb3MgPSAw
OwotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdu
b3JlU3RhcnQpOyAvLyBTdG9wIGlnbm9yaW5nIHNwYWNlcy4KLSAgICAgICAgICAgICAgICAgICAg
YWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RhcnQgaWdu
b3JpbmcgYWdhaW4uCi0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpZ25v
cmluZ1NwYWNlcykKKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlTGluZUJveChsaW5lTWlkcG9p
bnRTdGF0ZSwgY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAgdHJhaWxpbmdPYmplY3Rz
LmFwcGVuZEJveElmTmVlZGVkKGJveCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLmFwcGVuZChib3gpOwpAQCAtMjY5OSw4ICsyNzIwLDcg
QEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAg
ICAgICAgICBsaW5lSW5mby5zZXRFbXB0eShmYWxzZSwgbV9ibG9jaywgJndpZHRoKTsKICAgICAg
ICAgICAgICAgICBpZiAoaWdub3JpbmdTcGFjZXMpIHsKICAgICAgICAgICAgICAgICAgICAgdHJh
aWxpbmdPYmplY3RzLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZE1pZHBvaW50KGxp
bmVNaWRwb2ludFN0YXRlLCBJbmxpbmVJdGVyYXRvcigwLCBjdXJyZW50Lm1fb2JqLCAwKSk7IC8v
IFN0b3AgaWdub3Jpbmcgc3BhY2VzLgotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChs
aW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOyAv
LyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlTGluZUJv
eChsaW5lTWlkcG9pbnRTdGF0ZSwgY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChibG9ja1N0eWxlLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSAmJiByZXNvbHZlci5wb3Np
dGlvbigpLm1fb2JqID09IGN1cnJlbnQubV9vYmoKICAgICAgICAgICAgICAgICAgICAgJiYgc2hv
dWxkU2tpcFdoaXRlc3BhY2VBZnRlclN0YXJ0T2JqZWN0KG1fYmxvY2ssIGN1cnJlbnQubV9vYmos
IGxpbmVNaWRwb2ludFN0YXRlKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBMaWtlIHdpdGgg
bGlzdCBtYXJrZXJzLCB3ZSBzdGFydCBpZ25vcmluZyBzcGFjZXMgdG8gbWFrZSBzdXJlIHRoYXQg
YW55CkBAIC0yNzI1LDcgKzI3NDUsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGlu
ZUJyZWFrZXI6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpZ25vcmluZ1NwYWNl
cykKLSAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5l
SXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOworICAgICAgICAgICAgICAgIHN0b3BJZ25v
cmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5t
X29iaiwgMCkpOwogCiAgICAgICAgICAgICBsaW5lSW5mby5zZXRFbXB0eShmYWxzZSwgbV9ibG9j
aywgJndpZHRoKTsKICAgICAgICAgICAgIGlnbm9yaW5nU3BhY2VzID0gZmFsc2U7CkBAIC0yODQ0
LDcgKzI4NjQsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JpbmdTcGFjZXMgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNwYWNlID0gY3VycmVudC5tX3Bvczsg
Ly8gZS5nLiwgIkZvbyAgICBnb28iLCBkb24ndCBhZGQgaW4gYW55IG9mIHRoZSBpZ25vcmVkIHNw
YWNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9p
bnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3Bvcykp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BJZ25vcmluZ1NwYWNlcyhsaW5lTWlk
cG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3Bv
cykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BwZWRJZ25vcmluZ1NwYWNlcyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEp1c3Qga2VlcCBpZ25vcmluZyB0aGVzZSBzcGFjZXMuCkBAIC0yOTAy
LDExICsyOTIyLDggQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsQnJl
YWsuYXRUZXh0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFzdG9wcGVkSWdub3JpbmdTcGFjZXMgJiYgY3VycmVudC5tX3BvcyA+IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3Rv
cCByaWdodCBiZWZvcmUgdGhlIG5ld2xpbmUgYW5kIHRoZW4gc3RhcnQgdXAgYWdhaW4uCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRT
dGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcyAtIDEp
KTsgLy8gU3RvcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9p
bnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1
cnJlbnQubV9wb3MpKTsgLy8gU3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3BwZWRJZ25vcmluZ1Nw
YWNlcyAmJiBjdXJyZW50Lm1fcG9zID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KGxpbmVNaWRwb2ludFN0YXRlLCBjdXJy
ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSW5mby5zZXRQcmV2aW91c0xp
bmVCcm9rZUNsZWFubHkodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdv
cmRNZWFzdXJlbWVudC5lbmRPZmZzZXQgPSBsQnJlYWsubV9wb3M7CkBAIC0yOTIwLDcgKzI5Mzcs
NyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlkbid0IGZpdC4gSnVtcCB0byB0aGUgZW5k
IHVubGVzcyB0aGVyZSdzIHN0aWxsIGFuIG9wcG9ydHVuaXR5IHRvIGNvbGxhcHNlIHdoaXRlc3Bh
Y2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzIHx8ICFj
dXJyZW50U3R5bGUtPmNvbGxhcHNlV2hpdGVTcGFjZSgpIHx8ICFjdXJyZW50Q2hhcmFjdGVySXNT
cGFjZSB8fCAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcyB8fCAhY29sbGFwc2VXaGl0ZVNwYWNlIHx8ICFjdXJy
ZW50Q2hhcmFjdGVySXNTcGFjZSB8fCAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXR3ZWVuV29y
ZHMgfHwgKG1pZFdvcmRCcmVhayAmJiAhYXV0b1dyYXApKQpAQCAtMjkzNCwxMSArMjk1MSw4IEBA
IElubGluZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicgJiYgcHJlc2VydmVO
ZXdsaW5lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3BwZWRJZ25vcmluZ1Nw
YWNlcyAmJiBjdXJyZW50Lm1fcG9zID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gc3RvcCByaWdodCBiZWZvcmUgdGhlIG5ld2xpbmUgYW5kIHRoZW4gc3Rh
cnQgdXAgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGlu
ZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQu
bV9wb3MgLSAxKSk7IC8vIFN0b3AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRw
b2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwg
Y3VycmVudC5tX3BvcykpOyAvLyBTdGFydAotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9wcGVkSWdub3JpbmdTcGFjZXMgJiYgY3VycmVu
dC5tX3BvcyA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlQ2hhcmFjdGVy
R2V0c0xpbmVCb3gobGluZU1pZHBvaW50U3RhdGUsIGN1cnJlbnQpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbEJyZWFrLm1vdmVUbyhjdXJyZW50Lm1fb2JqLCBjdXJyZW50Lm1fcG9zLCBjdXJy
ZW50Lm1fbmV4dEJyZWFrYWJsZVBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxC
cmVhay5pbmNyZW1lbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLnNldFBy
ZXZpb3VzTGluZUJyb2tlQ2xlYW5seSh0cnVlKTsKQEAgLTI5NzcsNyArMjk5MSw3IEBAIElubGlu
ZUl0ZXJhdG9yIFJlbmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBqdXN0IGVudGVyZWQgYSBtb2RlIHdoZXJlIHdlIGFyZSBpZ25vcmluZwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwYWNlcy4gQ3JlYXRlIGEgbWlkcG9pbnQg
dG8gdGVybWluYXRlIHRoZSBydW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWZv
cmUgdGhlIHNlY29uZCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRw
b2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0SWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0
YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMudXBkYXRl
TWlkcG9pbnRzRm9yVHJhaWxpbmdCb3hlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0
b3IoKSwgVHJhaWxpbmdPYmplY3RzOjpEb05vdENvbGxhcHNlRmlyc3RTcGFjZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI5ODgsMTYgKzMw
MDIsMTQgQEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAg
ICAgICAgICAgICAgICBsYXN0U3BhY2VXb3JkU3BhY2luZyA9IGFwcGx5V29yZFNwYWNpbmcgPyB3
b3JkU3BhY2luZyA6IDA7CiAgICAgICAgICAgICAgICAgICAgIHdvcmRTcGFjaW5nRm9yV29yZE1l
YXN1cmVtZW50ID0gKGFwcGx5V29yZFNwYWNpbmcgJiYgd29yZE1lYXN1cmVtZW50cy5sYXN0KCku
d2lkdGgpID8gd29yZFNwYWNpbmcgOiAwOwogICAgICAgICAgICAgICAgICAgICBsYXN0U3BhY2Ug
PSBjdXJyZW50Lm1fcG9zOyAvLyBlLmcuLCAiRm9vICAgIGdvbyIsIGRvbid0IGFkZCBpbiBhbnkg
b2YgdGhlIGlnbm9yZWQgc3BhY2VzLgotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChs
aW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVu
dC5tX3BvcykpOworICAgICAgICAgICAgICAgICAgICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1p
ZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9w
b3MpKTsKICAgICAgICAgICAgICAgICB9CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAgICAg
ICAgIGlmIChpc1NWR1RleHQgJiYgY3VycmVudC5tX3BvcyA+IDApIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gRm9yY2UgY3JlYXRpb24gb2YgbmV3IElubGluZUJveGVzIGZvciBlYWNoIGFic29s
dXRlIHBvc2l0aW9uZWQgY2hhcmFjdGVyICh0aG9zZSB0aGF0IHN0YXJ0IG5ldyB0ZXh0IGNodW5r
cykuCi0gICAgICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlclNWR0lubGluZVRleHQodCktPmNo
YXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhjdXJyZW50Lm1fcG9zKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9y
KDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MgLSAxKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwg
Y3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOwotICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0b1JlbmRlclNWR0lubGluZVRleHQodCktPmNoYXJhY3Rl
clN0YXJ0c05ld1RleHRDaHVuayhjdXJyZW50Lm1fcG9zKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KGxpbmVNaWRwb2ludFN0YXRlLCBjdXJyZW50
KTsKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189851</attachid>
            <date>2013-02-22 15:43:40 -0800</date>
            <delta_ts>2013-02-22 16:02:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-110644-20130222153959.patch</filename>
            <type>text/plain</type>
            <size>14948</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzY1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTIyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgZGVzY3JpcHRpdmUg
bmFtZXMgZm9yIGRpZmZlcmVudCBhZGRNaWRwb2ludCB1c2UgY2FzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDY0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBNaWRwb2ludHMgYXJlIHVzZWQgdG8gZGVs
aW5lYXRlIHJhbmdlcyB3aGVyZSB3ZSBkb24ndCBhZGQgbGluZSBib3hlcyBmb3IgY29udGVudHMg
KGNvbGxhcHNlZCBzcGFjZXMpLAorICAgICAgICBhbmQgdG8gZXhwbGljaXRseSBzcGxpdCBhIFJl
bmRlclRleHQgaW50byBtdWx0aXBsZSB0ZXh0IHJ1bnMgc28gdGhhdCB0ZXh0IHBhcmFncmFwaCBz
ZXBlcmF0b3JzIGdldAorICAgICAgICB0aGVpciBvd24gbGluZSBib3hlcy4gVGhpcyBwYXRjaCBl
bmNhcHN1bGF0ZXMgdGhlIGRpZmZlcmVudCBjYXNlcyB3aGVyZSBtaWRwb2ludHMgYXJlIGFkZGVk
IHRvCisgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlIGludG8gNCBoZWxwZXIgZnVuY3Rpb25zIHRv
IG1ha2UgaXQgY2xlYXJlciB3aGF0J3MgZ29pbmcgb24gaW4gZWFjaCBjYXNlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRl
cHJlY2F0ZWRBZGRNaWRwb2ludCk6IE9yaWdpbmFsIGZ1bmN0aW9uIHNpbXBseSBhZGRzIGEgbWlk
cG9pbnQgdG8gdGhlIGxpbmVNaWRwb2ludFN0YXRlLgorICAgICAgICBSZW5hbWluZyB0byBkZXBy
ZWNhdGVkIHRvIGRpc2NvdXJhZ2UgY2FsbGVycy4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0SWdu
b3JpbmdTcGFjZXMpOiBBZGRzIGEgbWlkcG9pbnQgdG8gc3RhcnQgY29sbGFwc2luZyBzdWJzZXF1
ZW50IHNwYWNlcy4gQXNzZXJ0cyB0aGF0CisgICAgICAgIHdlIGhhdmUgYW4gZXZlbiBudW1iZXIg
b2YgbWlkcG9pbnRzLgorICAgICAgICAoV2ViQ29yZTo6c3RvcElnbm9yaW5nU3BhY2VzKTogQWRk
cyB0aGUgY29ycmVzcG9uZGluZyBtaWRwb2ludCBmcm9tIHN0YXJ0SWdub3JpbmdTcGFjZXMgYW5k
IGFzc2VydHMKKyAgICAgICAgdGhhdCBpdCdzIGFuIG9kZCBudW1iZXIuCisgICAgICAgIChXZWJD
b3JlOjplbnN1cmVMaW5lQm94SW5zaWRlSWdub3JlZFNwYWNlcyk6IFdoZW4gaWdub3Jpbmcgc3Bh
Y2VzIGFuZCB3ZSBjb21lIGFjcm9zcyBhIFJlbmRlcklubGluZQorICAgICAgICB0aGF0IG5lZWRz
IGEgbGluZSBib3gsIHRoaXMgZnVuY3Rpb24gYWRkcyBhIHBhaXIgb2YgbWlkcG9pbnRzIHdoaWNo
IGVuc3VyZXMgd2UnbGwgbGF0ZXIgYWRkIGEgbGluZQorICAgICAgICBib3ggZm9yIGl0LgorICAg
ICAgICAoV2ViQ29yZTo6ZW5zdXJlQ2hhcmFjdGVyR2V0c0xpbmVCb3gpOiBBZGRzIGEgcGFpciBv
ZiBtaWRwb2ludHMgaW4gYSB0ZXh0IHJlbmRlcmVyIHRvIG1hcmsgdGhhdAorICAgICAgICB0aGUg
Y3VycmVudCBjaGFyYWN0ZXIgbmVlZHMgaXRzIG93biBsaW5lIGJveC4gVGhpcyBpcyB1c2VkIGJ5
IHN2ZyBmb3IgYWJzb2x1dGVseSBwb3NpdGlvbmVkCisgICAgICAgIGNoYXJhY3RlcnMsIG9yIGZv
ciB0ZXh0IHBhcmFncmFwaCBzZXBlcmF0b3JzLgorCiAyMDEzLTAyLTIxICBUb255IENoYW5nICA8
dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQXV0b2dlbmVyYXRlIFNldHRpbmdzIHRoYXQg
Y2FsbCBzZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMgd2hlbiBzZXQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShy
ZXZpc2lvbiAxNDM2NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDcgKzM1Miw4IEBAIHN0YXRpYyB2
b2lkIGNoZWNrTWlkcG9pbnRzKExpbmVNaWRwb2ludFMKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGFkZE1pZHBvaW50KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwgY29uc3Qg
SW5saW5lSXRlcmF0b3ImIG1pZHBvaW50KQorLy8gRG9uJ3QgY2FsbCB0aGlzIGRpcmVjdGx5LiBV
c2Ugb25lIG9mIHRoZSBkZXNjcmlwdGl2ZSBoZWxwZXIgZnVuY3Rpb25zIGJlbG93Lgorc3RhdGlj
IHZvaWQgZGVwcmVjYXRlZEFkZE1pZHBvaW50KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9p
bnRTdGF0ZSwgY29uc3QgSW5saW5lSXRlcmF0b3ImIG1pZHBvaW50KQogewogICAgIGlmIChsaW5l
TWlkcG9pbnRTdGF0ZS5taWRwb2ludHMuc2l6ZSgpIDw9IGxpbmVNaWRwb2ludFN0YXRlLm51bU1p
ZHBvaW50cykKICAgICAgICAgbGluZU1pZHBvaW50U3RhdGUubWlkcG9pbnRzLmdyb3cobGluZU1p
ZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzICsgMTApOwpAQCAtMzYxLDYgKzM2MiwzNSBAQCBzdGF0
aWMgdm9pZCBhZGRNaWRwb2ludChMaW5lTWlkcG9pbnRTdGF0CiAgICAgbWlkcG9pbnRzW2xpbmVN
aWRwb2ludFN0YXRlLm51bU1pZHBvaW50cysrXSA9IG1pZHBvaW50OwogfQogCitzdGF0aWMgaW5s
aW5lIHZvaWQgc3RhcnRJZ25vcmluZ1NwYWNlcyhMaW5lTWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBv
aW50U3RhdGUsIGNvbnN0IElubGluZUl0ZXJhdG9yJiBtaWRwb2ludCkKK3sKKyAgICBBU1NFUlQo
IShsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMgJSAyKSk7CisgICAgZGVwcmVjYXRlZEFk
ZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBtaWRwb2ludCk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBzdG9wSWdub3JpbmdTcGFjZXMoTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2lu
dFN0YXRlLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgbWlkcG9pbnQpCit7CisgICAgQVNTRVJUKGxp
bmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cyAlIDIpOworICAgIGRlcHJlY2F0ZWRBZGRNaWRw
b2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgbWlkcG9pbnQpOworfQorCisvLyBXaGVuIGlnbm9yaW5n
IHNwYWNlcywgdGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBuZWVkIGxp
bmUgYm94ZXMgc3VjaCBhcyBSZW5kZXJJbmxpbmVzIG9yCisvLyBoYXJkIGxpbmUgYnJlYWtzIHRv
IGVuc3VyZSB0aGF0IHRoZXkncmUgbm90IGlnbm9yZWQuCitzdGF0aWMgaW5saW5lIHZvaWQgZW5z
dXJlTGluZUJveEluc2lkZUlnbm9yZWRTcGFjZXMoTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRw
b2ludFN0YXRlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIElubGluZUl0ZXJhdG9y
IG1pZHBvaW50KDAsIHJlbmRlcmVyLCAwKTsKKyAgICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1p
ZHBvaW50U3RhdGUsIG1pZHBvaW50KTsKKyAgICBzdGFydElnbm9yaW5nU3BhY2VzKGxpbmVNaWRw
b2ludFN0YXRlLCBtaWRwb2ludCk7Cit9CisKKy8vIEFkZGluZyBhIHBhaXIgb2YgbWlkcG9pbnRz
IGJlZm9yZSBhIGNoYXJhY3RlciB3aWxsIHNwbGl0IGl0IG91dCBpbnRvIGEgbmV3IGxpbmUgYm94
Lgorc3RhdGljIGlubGluZSB2b2lkIGVuc3VyZUNoYXJhY3RlckdldHNMaW5lQm94KExpbmVNaWRw
b2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3ImIHRleHRQYXJhZ3Jh
cGhTZXBhcmF0b3IpCit7CisgICAgSW5saW5lSXRlcmF0b3IgbWlkcG9pbnQoMCwgdGV4dFBhcmFn
cmFwaFNlcGFyYXRvci5tX29iaiwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX3Bvcyk7CisgICAg
c3RhcnRJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwg
dGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX29iaiwgdGV4dFBhcmFncmFwaFNlcGFyYXRvci5tX3Bv
cyAtIDEpKTsKKyAgICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIElubGlu
ZUl0ZXJhdG9yKDAsIHRleHRQYXJhZ3JhcGhTZXBhcmF0b3IubV9vYmosIHRleHRQYXJhZ3JhcGhT
ZXBhcmF0b3IubV9wb3MpKTsKK30KKwogc3RhdGljIGlubGluZSBCaWRpUnVuKiBjcmVhdGVSdW4o
aW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVy
JiByZXNvbHZlcikKIHsKICAgICByZXR1cm4gbmV3IChvYmotPnJlbmRlckFyZW5hKCkpIEJpZGlS
dW4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsK
QEAgLTIzMTQsNyArMjM0NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFNraXBXaGl0ZXNwYWNlQWZ0
ZXJTdGEKICAgICAgICAgUmVuZGVyVGV4dCogbmV4dFRleHQgPSB0b1JlbmRlclRleHQobmV4dCk7
CiAgICAgICAgIFVDaGFyIG5leHRDaGFyID0gbmV4dFRleHQtPmNoYXJhY3RlckF0KDApOwogICAg
ICAgICBpZiAobmV4dFRleHQtPnN0eWxlKCktPmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKG5leHRD
aGFyKSkgewotICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGlu
ZUl0ZXJhdG9yKDAsIG8sIDApKTsKKyAgICAgICAgICAgIHN0YXJ0SWdub3JpbmdTcGFjZXMobGlu
ZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIG8sIDApKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ2Nyw5ICsyNDk3LDcgQEAgdm9pZCBU
cmFpbGluZ09iamVjdHM6OnVwZGF0ZU1pZHBvaW50c0ZvcgogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fYm94ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChjdXJyZW50
TWlkcG9pbnQgPj0gbGluZU1pZHBvaW50U3RhdGUubnVtTWlkcG9pbnRzKSB7CiAgICAgICAgICAg
ICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhIG1pZHBvaW50IGZvciB0aGlzIGJveCB5ZXQuCi0gICAg
ICAgICAgICAgICAgSW5saW5lSXRlcmF0b3IgaWdub3JlU3RhcnQoMCwgbV9ib3hlc1tpXSwgMCk7
Ci0gICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0
YXJ0KTsgLy8gU3RvcCBpZ25vcmluZy4KLSAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5l
TWlkcG9pbnRTdGF0ZSwgaWdub3JlU3RhcnQpOyAvLyBTdGFydCBpZ25vcmluZyBhZ2Fpbi4KKyAg
ICAgICAgICAgICAgICBlbnN1cmVMaW5lQm94SW5zaWRlSWdub3JlZFNwYWNlcyhsaW5lTWlkcG9p
bnRTdGF0ZSwgbV9ib3hlc1tpXSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVChsaW5lTWlkcG9pbnRTdGF0ZS5taWRwb2ludHNbY3VycmVudE1pZHBvaW50XS5t
X29iaiA9PSBtX2JveGVzW2ldKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobGluZU1pZHBvaW50
U3RhdGUubWlkcG9pbnRzW2N1cnJlbnRNaWRwb2ludCArIDFdLm1fb2JqID09IG1fYm94ZXNbaV0p
OwpAQCAtMjQ4MywxMSArMjUxMSw5IEBAIHZvaWQgVHJhaWxpbmdPYmplY3RzOjp1cGRhdGVNaWRw
b2ludHNGb3IKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV93aGl0ZXNwYWNlLT50ZXh0TGVu
Z3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBvcyA9IGxlbmd0aCA+PSAyID8gbGVuZ3RoIC0gMiA6
IFVJTlRfTUFYOwogICAgICAgICBJbmxpbmVJdGVyYXRvciBlbmRNaWQoMCwgbV93aGl0ZXNwYWNl
LCBwb3MpOwotICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgZW5kTWlkKTsK
KyAgICAgICAgc3RhcnRJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgZW5kTWlkKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2JveGVzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICBJbmxpbmVJdGVyYXRvciBpZ25vcmVTdGFydCgwLCBtX2JveGVzW2ldLCAwKTsK
LSAgICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7
IC8vIFN0b3AgaWdub3Jpbmcgc3BhY2VzLgotICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1p
ZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsgLy8gU3RhcnQgaWdub3JpbmcgYWdhaW4uCisgICAg
ICAgICAgICBlbnN1cmVMaW5lQm94SW5zaWRlSWdub3JlZFNwYWNlcyhsaW5lTWlkcG9pbnRTdGF0
ZSwgbV9ib3hlc1tpXSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNjMwLDEwICsyNjU2LDgg
QEAgSW5saW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAg
ICAgIC8vIEEgPGJyPiB3aXRoIGNsZWFyYW5jZSBhbHdheXMgbmVlZHMgYSBsaW5lYm94IGluIGNh
c2UgdGhlIGxpbmVzIGJlbG93IGl0IGdldCBkaXJ0aWVkIGxhdGVyIGFuZCAKICAgICAgICAgICAg
ICAgICAvLyBuZWVkIHRvIGNoZWNrIGZvciBmbG9hdHMgdG8gY2xlYXIgLSBzbyBpZiB3ZSdyZSBp
Z25vcmluZyBzcGFjZXMsIHN0b3AgaWdub3JpbmcgdGhlbSBhbmQgYWRkIGEKICAgICAgICAgICAg
ICAgICAvLyBydW4gZm9yIHRoaXMgb2JqZWN0LgotICAgICAgICAgICAgICAgIGlmIChpZ25vcmlu
Z1NwYWNlcyAmJiBjdXJyZW50U3R5bGUtPmNsZWFyKCkgIT0gQ05PTkUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAs
IGN1cnJlbnQubV9vYmosIDApKTsgLy8gU3RvcCBpZ25vcmluZyBzcGFjZXMuCi0gICAgICAgICAg
ICAgICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBJbmxpbmVJdGVyYXRvcigw
LCBjdXJyZW50Lm1fb2JqLCAwKSk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaWdub3JpbmdTcGFjZXMgJiYgY3VycmVudFN0
eWxlLT5jbGVhcigpICE9IENOT05FKQorICAgICAgICAgICAgICAgICAgICBlbnN1cmVMaW5lQm94
SW5zaWRlSWdub3JlZFNwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgY3VycmVudC5tX29iaik7CiAK
ICAgICAgICAgICAgICAgICBpZiAoIWxpbmVJbmZvLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAg
ICAgICAgbV9jbGVhciA9IGN1cnJlbnRTdHlsZS0+Y2xlYXIoKTsKQEAgLTI2NTcsMTIgKzI2ODEs
OCBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAg
ICAvLyBJZiB3ZSdyZSBpZ25vcmluZyBzcGFjZXMsIHdlIGhhdmUgdG8gc3RvcCBhbmQgaW5jbHVk
ZSB0aGlzIG9iamVjdCBhbmQKICAgICAgICAgICAgIC8vIHRoZW4gc3RhcnQgaWdub3Jpbmcgc3Bh
Y2VzIGFnYWluLgogICAgICAgICAgICAgaWYgKGlzSW5saW5lVHlwZSB8fCBjdXJyZW50Lm1fb2Jq
LT5jb250YWluZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkgewotICAgICAgICAgICAgICAgIGlmIChp
Z25vcmluZ1NwYWNlcykgewotICAgICAgICAgICAgICAgICAgICBpZ25vcmVTdGFydC5tX29iaiA9
IGN1cnJlbnQubV9vYmo7Ci0gICAgICAgICAgICAgICAgICAgIGlnbm9yZVN0YXJ0Lm1fcG9zID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIGln
bm9yZVN0YXJ0KTsgLy8gU3RvcCBpZ25vcmluZyBzcGFjZXMuCi0gICAgICAgICAgICAgICAgICAg
IGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBpZ25vcmVTdGFydCk7IC8vIFN0YXJ0IGln
bm9yaW5nIGFnYWluLgotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaWdu
b3JpbmdTcGFjZXMpCisgICAgICAgICAgICAgICAgICAgIGVuc3VyZUxpbmVCb3hJbnNpZGVJZ25v
cmVkU3BhY2VzKGxpbmVNaWRwb2ludFN0YXRlLCBjdXJyZW50Lm1fb2JqKTsKICAgICAgICAgICAg
ICAgICB0cmFpbGluZ09iamVjdHMuYXBwZW5kQm94SWZOZWVkZWQoYm94KTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMuYXBwZW5kKGJveCk7
CkBAIC0yNjk5LDggKzI3MTksNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJy
ZWFrZXI6CiAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLnNldEVtcHR5KGZhbHNlLCBtX2Js
b2NrLCAmd2lkdGgpOwogICAgICAgICAgICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcykgewogICAg
ICAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMuY2xlYXIoKTsKLSAgICAgICAgICAgICAg
ICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1
cnJlbnQubV9vYmosIDApKTsgLy8gU3RvcCBpZ25vcmluZyBzcGFjZXMuCi0gICAgICAgICAgICAg
ICAgICAgIGFkZE1pZHBvaW50KGxpbmVNaWRwb2ludFN0YXRlLCBJbmxpbmVJdGVyYXRvcigwLCBj
dXJyZW50Lm1fb2JqLCAwKSk7IC8vIFN0YXJ0IGlnbm9yaW5nIGFnYWluLgorICAgICAgICAgICAg
ICAgICAgICBlbnN1cmVMaW5lQm94SW5zaWRlSWdub3JlZFNwYWNlcyhsaW5lTWlkcG9pbnRTdGF0
ZSwgY3VycmVudC5tX29iaik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja1N0eWxl
LT5jb2xsYXBzZVdoaXRlU3BhY2UoKSAmJiByZXNvbHZlci5wb3NpdGlvbigpLm1fb2JqID09IGN1
cnJlbnQubV9vYmoKICAgICAgICAgICAgICAgICAgICAgJiYgc2hvdWxkU2tpcFdoaXRlc3BhY2VB
ZnRlclN0YXJ0T2JqZWN0KG1fYmxvY2ssIGN1cnJlbnQubV9vYmosIGxpbmVNaWRwb2ludFN0YXRl
KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBMaWtlIHdpdGggbGlzdCBtYXJrZXJzLCB3ZSBz
dGFydCBpZ25vcmluZyBzcGFjZXMgdG8gbWFrZSBzdXJlIHRoYXQgYW55CkBAIC0yNzI1LDcgKzI3
NDQsNyBAQCBJbmxpbmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChpZ25vcmluZ1NwYWNlcykKLSAgICAgICAgICAgICAg
ICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVu
dC5tX29iaiwgMCkpOworICAgICAgICAgICAgICAgIHN0b3BJZ25vcmluZ1NwYWNlcyhsaW5lTWlk
cG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgMCkpOwogCiAgICAg
ICAgICAgICBsaW5lSW5mby5zZXRFbXB0eShmYWxzZSwgbV9ibG9jaywgJndpZHRoKTsKICAgICAg
ICAgICAgIGlnbm9yaW5nU3BhY2VzID0gZmFsc2U7CkBAIC0yODQ0LDcgKzI4NjMsNyBAQCBJbmxp
bmVJdGVyYXRvciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWdub3JpbmdTcGFjZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3b3JkU3BhY2luZ0ZvcldvcmRNZWFzdXJlbWVudCA9IDA7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGFzdFNwYWNlID0gY3VycmVudC5tX3BvczsgLy8gZS5nLiwgIkZvbyAgICBn
b28iLCBkb24ndCBhZGQgaW4gYW55IG9mIHRoZSBpZ25vcmVkIHNwYWNlcy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRl
cmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0b3BJZ25vcmluZ1NwYWNlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5l
SXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0b3BwZWRJZ25vcmluZ1NwYWNlcyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1
c3Qga2VlcCBpZ25vcmluZyB0aGVzZSBzcGFjZXMuCkBAIC0yOTAyLDExICsyOTIxLDggQEAgSW5s
aW5lSXRlcmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsQnJlYWsuYXRUZXh0UGFyYWdyYXBo
U2VwYXJhdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9w
cGVkSWdub3JpbmdTcGFjZXMgJiYgY3VycmVudC5tX3BvcyA+IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3RvcCByaWdodCBiZWZvcmUgdGhl
IG5ld2xpbmUgYW5kIHRoZW4gc3RhcnQgdXAgYWdhaW4uCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0
b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcyAtIDEpKTsgLy8gU3RvcAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3Rh
dGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MpKTsgLy8g
U3RhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXN0b3BwZWRJZ25vcmluZ1NwYWNlcyAmJiBjdXJyZW50Lm1f
cG9zID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZUNoYXJh
Y3RlckdldHNMaW5lQm94KGxpbmVNaWRwb2ludFN0YXRlLCBjdXJyZW50KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLmluY3JlbWVudCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lSW5mby5zZXRQcmV2aW91c0xpbmVCcm9rZUNsZWFubHkodHJ1
ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRNZWFzdXJlbWVudC5lbmRP
ZmZzZXQgPSBsQnJlYWsubV9wb3M7CkBAIC0yOTIwLDcgKzI5MzYsNyBAQCBJbmxpbmVJdGVyYXRv
ciBSZW5kZXJCbG9jazo6TGluZUJyZWFrZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRGlkbid0IGZpdC4gSnVtcCB0byB0aGUgZW5kIHVubGVzcyB0aGVyZSdzIHN0
aWxsIGFuIG9wcG9ydHVuaXR5IHRvIGNvbGxhcHNlIHdoaXRlc3BhY2UuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlnbm9yaW5nU3BhY2VzIHx8ICFjdXJyZW50U3R5bGUtPmNvbGxh
cHNlV2hpdGVTcGFjZSgpIHx8ICFjdXJyZW50Q2hhcmFjdGVySXNTcGFjZSB8fCAhcHJldmlvdXND
aGFyYWN0ZXJJc1NwYWNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmlu
Z1NwYWNlcyB8fCAhY29sbGFwc2VXaGl0ZVNwYWNlIHx8ICFjdXJyZW50Q2hhcmFjdGVySXNTcGFj
ZSB8fCAhcHJldmlvdXNDaGFyYWN0ZXJJc1NwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZXR3ZWVuV29yZHMgfHwgKG1pZFdvcmRCcmVh
ayAmJiAhYXV0b1dyYXApKQpAQCAtMjkzNCwxMSArMjk1MCw4IEBAIElubGluZUl0ZXJhdG9yIFJl
bmRlckJsb2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChjID09ICdcbicgJiYgcHJlc2VydmVOZXdsaW5lKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIXN0b3BwZWRJZ25vcmluZ1NwYWNlcyAmJiBjdXJyZW50Lm1f
cG9zID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gc3Rv
cCByaWdodCBiZWZvcmUgdGhlIG5ld2xpbmUgYW5kIHRoZW4gc3RhcnQgdXAgYWdhaW4uCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlkcG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElu
bGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MgLSAxKSk7IC8vIFN0
b3AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRT
dGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOyAv
LyBTdGFydAotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzdG9wcGVkSWdub3JpbmdTcGFjZXMgJiYgY3VycmVudC5tX3BvcyA+IDApCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5zdXJlQ2hhcmFjdGVyR2V0c0xpbmVCb3gobGluZU1p
ZHBvaW50U3RhdGUsIGN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgbEJyZWFrLm1v
dmVUbyhjdXJyZW50Lm1fb2JqLCBjdXJyZW50Lm1fcG9zLCBjdXJyZW50Lm1fbmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxCcmVhay5pbmNyZW1lbnQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLnNldFByZXZpb3VzTGluZUJyb2tlQ2xl
YW5seSh0cnVlKTsKQEAgLTI5NzcsNyArMjk5MCw3IEBAIElubGluZUl0ZXJhdG9yIFJlbmRlckJs
b2NrOjpMaW5lQnJlYWtlcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0
IGVudGVyZWQgYSBtb2RlIHdoZXJlIHdlIGFyZSBpZ25vcmluZwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHNwYWNlcy4gQ3JlYXRlIGEgbWlkcG9pbnQgdG8gdGVybWluYXRlIHRoZSBy
dW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWZvcmUgdGhlIHNlY29uZCBzcGFj
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRT
dGF0ZSwgaWdub3JlU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWdu
b3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIGlnbm9yZVN0YXJ0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFpbGluZ09iamVjdHMudXBkYXRlTWlkcG9pbnRzRm9yVHJhaWxp
bmdCb3hlcyhsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoKSwgVHJhaWxpbmdPYmpl
Y3RzOjpEb05vdENvbGxhcHNlRmlyc3RTcGFjZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI5ODgsMTYgKzMwMDEsMTQgQEAgSW5saW5lSXRl
cmF0b3IgUmVuZGVyQmxvY2s6OkxpbmVCcmVha2VyOgogICAgICAgICAgICAgICAgICAgICBsYXN0
U3BhY2VXb3JkU3BhY2luZyA9IGFwcGx5V29yZFNwYWNpbmcgPyB3b3JkU3BhY2luZyA6IDA7CiAg
ICAgICAgICAgICAgICAgICAgIHdvcmRTcGFjaW5nRm9yV29yZE1lYXN1cmVtZW50ID0gKGFwcGx5
V29yZFNwYWNpbmcgJiYgd29yZE1lYXN1cmVtZW50cy5sYXN0KCkud2lkdGgpID8gd29yZFNwYWNp
bmcgOiAwOwogICAgICAgICAgICAgICAgICAgICBsYXN0U3BhY2UgPSBjdXJyZW50Lm1fcG9zOyAv
LyBlLmcuLCAiRm9vICAgIGdvbyIsIGRvbid0IGFkZCBpbiBhbnkgb2YgdGhlIGlnbm9yZWQgc3Bh
Y2VzLgotICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2ludChsaW5lTWlkcG9pbnRTdGF0ZSwg
SW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3VycmVudC5tX3BvcykpOworICAgICAg
ICAgICAgICAgICAgICBzdG9wSWdub3JpbmdTcGFjZXMobGluZU1pZHBvaW50U3RhdGUsIElubGlu
ZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmosIGN1cnJlbnQubV9wb3MpKTsKICAgICAgICAgICAg
ICAgICB9CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAgICAgICAgIGlmIChpc1NWR1RleHQg
JiYgY3VycmVudC5tX3BvcyA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgY3Jl
YXRpb24gb2YgbmV3IElubGluZUJveGVzIGZvciBlYWNoIGFic29sdXRlIHBvc2l0aW9uZWQgY2hh
cmFjdGVyICh0aG9zZSB0aGF0IHN0YXJ0IG5ldyB0ZXh0IGNodW5rcykuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICh0b1JlbmRlclNWR0lubGluZVRleHQodCktPmNoYXJhY3RlclN0YXJ0c05ld1Rl
eHRDaHVuayhjdXJyZW50Lm1fcG9zKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWlk
cG9pbnQobGluZU1pZHBvaW50U3RhdGUsIElubGluZUl0ZXJhdG9yKDAsIGN1cnJlbnQubV9vYmos
IGN1cnJlbnQubV9wb3MgLSAxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRNaWRwb2lu
dChsaW5lTWlkcG9pbnRTdGF0ZSwgSW5saW5lSXRlcmF0b3IoMCwgY3VycmVudC5tX29iaiwgY3Vy
cmVudC5tX3BvcykpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmICh0b1JlbmRlclNWR0lubGluZVRleHQodCktPmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVu
ayhjdXJyZW50Lm1fcG9zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZUNoYXJhY3Rl
ckdldHNMaW5lQm94KGxpbmVNaWRwb2ludFN0YXRlLCBjdXJyZW50KTsKICAgICAgICAgICAgICAg
ICB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>