<?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>67320</bug_id>
          
          <creation_ts>2011-08-31 14:30:55 -0700</creation_ts>
          <short_desc>Move text() and textWithHardLineBreaks() from RenderTextControl to HTMLTextFormControlElement</short_desc>
          <delta_ts>2011-08-31 18:55:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          
          <blocked>66241</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>adele</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>459925</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 14:30:55 -0700</bug_when>
    <thetext>text() and textWithHardLineBreaks() don&apos;t depend anything in RenderText, and should be moved to HTMLTextFormControlElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459970</commentid>
    <comment_count>1</comment_count>
      <attachid>105838</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 15:03:37 -0700</bug_when>
    <thetext>Created attachment 105838
refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459972</commentid>
    <comment_count>2</comment_count>
      <attachid>105838</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 15:06:38 -0700</bug_when>
    <thetext>Comment on attachment 105838
refactoring

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

&gt; Source/WebCore/html/HTMLTextAreaElement.cpp:-175
&gt; -    // FIXME: It&apos;s not acceptable to ignore the HardWrap setting when there is no renderer.
&gt; -    // While we have no evidence this has ever been a practical problem, it would be best to fix it some day.

This comment is moved into valueWithHardLineBreaks.

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:524
&gt; +        return value();

We call value() instead of emptyString() here (and 2 other places below).  These are only differences between HTMLTextFormControlElement::valueWithHardLineBreaks and RenderTextControl::textWithHardLineBreaks

&gt; Source/WebCore/html/NumberInputType.cpp:321
&gt; +    return element()-&gt;renderer() &amp;&amp; !isAcceptableValue(element()-&gt;innerTextValue());

I bet these input type functions want to call value() instead of innerTextValue() but that can be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459998</commentid>
    <comment_count>3</comment_count>
      <attachid>105838</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-31 15:46:46 -0700</bug_when>
    <thetext>Comment on attachment 105838
refactoring

Attachment 105838 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9563999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460004</commentid>
    <comment_count>4</comment_count>
      <attachid>105838</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-31 15:51:09 -0700</bug_when>
    <thetext>Comment on attachment 105838
refactoring

Attachment 105838 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9578085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460014</commentid>
    <comment_count>5</comment_count>
      <attachid>105848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 16:04:00 -0700</bug_when>
    <thetext>Created attachment 105848
fixed efl build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460030</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 16:14:34 -0700</bug_when>
    <thetext>Any reviewers?  This patch is blocking my work for the bug 66241.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460046</commentid>
    <comment_count>7</comment_count>
      <attachid>105848</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-31 16:27:26 -0700</bug_when>
    <thetext>Comment on attachment 105848
fixed efl build

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

r=me

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1956
&gt; +        return toRenderTextControl(m_renderer)-&gt;textFormControlElement()-&gt;value();

Can textFormControlElement() ever be 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460052</commentid>
    <comment_count>8</comment_count>
      <attachid>105848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 16:30:50 -0700</bug_when>
    <thetext>Comment on attachment 105848
fixed efl build

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1956
&gt;&gt; +        return toRenderTextControl(m_renderer)-&gt;textFormControlElement()-&gt;value();
&gt; 
&gt; Can textFormControlElement() ever be 0?

Only if RenderObject::m_node is 0.  I guess I should check that.  Or that I just need to move this line below the nullity check below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460053</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 16:31:07 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460074</commentid>
    <comment_count>10</comment_count>
      <attachid>105848</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-31 16:47:58 -0700</bug_when>
    <thetext>Comment on attachment 105848
fixed efl build

Attachment 105848 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9572727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460085</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-31 16:59:09 -0700</bug_when>
    <thetext>Committed r94252: &lt;http://trac.webkit.org/changeset/94252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460153</commentid>
    <comment_count>12</comment_count>
      <attachid>105838</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-31 18:55:18 -0700</bug_when>
    <thetext>Comment on attachment 105838
refactoring

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

&gt;&gt; Source/WebCore/html/NumberInputType.cpp:321
&gt;&gt; +    return element()-&gt;renderer() &amp;&amp; !isAcceptableValue(element()-&gt;innerTextValue());
&gt; 
&gt; I bet these input type functions want to call value() instead of innerTextValue() but that can be done in a separate patch.

It should be innerTextValue().
LayoutTests/fast/forms/input-number-unacceptable-style.html tests it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105838</attachid>
            <date>2011-08-31 15:03:37 -0700</date>
            <delta_ts>2011-08-31 18:55:18 -0700</delta_ts>
            <desc>refactoring</desc>
            <filename>bug-67320-20110831150336.patch</filename>
            <type>text/plain</type>
            <size>17948</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MjM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDgtMzEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSB0ZXh0KCkgYW5kIHRleHRX
aXRoSGFyZExpbmVCcmVha3MoKSBmcm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzMyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmVkIGFuZCByZW5hbWVkIFJlbmRlclRleHQ6OnRleHQgYW5kIFJlbmRlclRleHQ6
OnRleHRXaXRoSGFyZExpbmVCcmVha3MgdG8KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OmlubmVyVGV4dFZhbHVlIGFuZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmFs
dWVXaXRoSGFyZExpbmVCcmVha3MuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOiBDYWxscyB2YWx1ZVdpdGhI
YXJkTGluZUJyZWFrcy4gSXQgZG9lc24ndCBoYXZlIHRvIGNoZWNrCisgICAgICAgIHRoZSBleGlz
dGVuY2Ugb2YgcmVuZGVyZXIgYW55bW9yZSBiZWNhdXNlIHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtz
IHJldHVybnMgdmFsdWUoKSB3aGVuIHJlbmRlcmVyIGRvIG5vdAorICAgICAgICBleGlzdCB1bmxp
a2UgUmVuZGVyVGV4dDo6dGV4dFdpdGhIYXJkTGluZUJyZWFrcyByZXR1cm5lZCBlbXB0eVN0cmlu
ZygpIGluIHN1Y2ggY2FzZXMuIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UKKyAgICAgICAgdmFsdWVX
aXRoSGFyZExpbmVCcmVha3MgaXMgZXZlciBjYWxsZWQ7IGJ1dCB3ZSBjYW4ndCBtb3ZlIHZhbHVl
V2l0aEhhcmRMaW5lQnJlYWtzIGJlY2F1c2UgaXQgY2FsbHMKKyAgICAgICAgZmluaXNoVGV4dC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVw
ZGF0ZVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rl
ZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaFRleHQpOiBNb3ZlZCBm
cm9tIFJlbmRlclRleHQuY3BwCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5uZXJUZXh0VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdldE5l
eHRTb2Z0QnJlYWspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcyk6IERpdHRvOyB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgdmFsdWUoKQorICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyByZW5kZXJlcnMgb3Ig
cm9vdCBpbmxpbmUgYm94ZXMgaW5zdGVhZCBvZiBlbXB0eVN0cmluZygpLgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL051bWJlcklu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Omhhc1VuYWNj
ZXB0YWJsZVZhbHVlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2VhcmNoRXZlbnRUaW1lcik6Cisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKwogMjAxMS0wOC0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjk0MTE2LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTEsMTAgKzE5NTEsMTAgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRleHQoKQogICAgIAogICAgIGlmICghaXNUZXh0Q29udHJvbCgp
IHx8IGlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisK
ICAgICBpZiAoaXNOYXRpdmVUZXh0Q29udHJvbCgpKQotICAgICAgICByZXR1cm4gdG9SZW5kZXJU
ZXh0Q29udHJvbChtX3JlbmRlcmVyKS0+dGV4dCgpOwotICAgIAorICAgICAgICByZXR1cm4gdG9S
ZW5kZXJUZXh0Q29udHJvbChtX3JlbmRlcmVyKS0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT52
YWx1ZSgpOworCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gOTQyMjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjgsNyArNjI4
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZAogICAgIC8vIEhU
TUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkgaGFzIGFscmVh
ZHkgY2FsbGVkCiAgICAgLy8gc2FuaXRpemVVc2VySW5wdXRWYWx1ZSgpLgogICAgIC8vIHNhbml0
aXplVmFsdWUoKSBpcyBuZWVkZWQgYmVjYXVzZSBJTUUgaW5wdXQgZG9lc24ndCBkaXNwYXRjaCBC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC4KLSAgICBTdHJpbmcgdmFsdWUgPSB0b1JlbmRlclRleHRD
b250cm9sKHJlbmRlcmVyKCkpLT50ZXh0KCk7CisgICAgU3RyaW5nIHZhbHVlID0gaW5uZXJUZXh0
VmFsdWUoKTsKICAgICBpZiAoaXNBY2NlcHRhYmxlVmFsdWUodmFsdWUpKQogICAgICAgICBzZXRW
YWx1ZUZyb21SZW5kZXJlcihzYW5pdGl6ZVZhbHVlKGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKHZh
bHVlKSkpOwogICAgIC8vIFJlY2FsYyBmb3IgOmludmFsaWQgYW5kIGhhc1VuYWNjZXB0YWJsZVZh
bHVlKCkgY2hhbmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMCArMTcxLDcgQEAgYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YQogCiAgICAgZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBub3QgYWNjZXB0YWJsZSB0byBp
Z25vcmUgdGhlIEhhcmRXcmFwIHNldHRpbmcgd2hlbiB0aGVyZSBpcyBubyByZW5kZXJlci4KLSAg
ICAvLyBXaGlsZSB3ZSBoYXZlIG5vIGV2aWRlbmNlIHRoaXMgaGFzIGV2ZXIgYmVlbiBhIHByYWN0
aWNhbCBwcm9ibGVtLCBpdCB3b3VsZCBiZSBiZXN0IHRvIGZpeCBpdCBzb21lIGRheS4KLSAgICBS
ZW5kZXJUZXh0Q29udHJvbCogY29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIo
KSk7Ci0gICAgY29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCAmJiBjb250
cm9sKSA/IGNvbnRyb2wtPnRleHRXaXRoSGFyZExpbmVCcmVha3MoKSA6IHZhbHVlKCk7CisgICAg
Y29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCkgPyB2YWx1ZVdpdGhIYXJk
TGluZUJyZWFrcygpIDogdmFsdWUoKTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwg
dGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTMsNyArMjUwLDcgQEAgdm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpoYW5kbGVCZWZvcmVUZQogICAgICAgICByZXR1cm47CiAgICAgdW5z
aWduZWQgdW5zaWduZWRNYXhMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2lnbmVkTWF4
TGVuZ3RoKTsKIAotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0
ZXJzKHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnRleHQoKSk7CisgICAgdW5zaWdu
ZWQgY3VycmVudExlbmd0aCA9IG51bUdyYXBoZW1lQ2x1c3RlcnMoaW5uZXJUZXh0VmFsdWUoKSk7
CiAgICAgLy8gc2VsZWN0aW9uTGVuZ3RoIHJlcHJlc2VudHMgdGhlIHNlbGVjdGlvbiBsZW5ndGgg
b2YgdGhpcyB0ZXh0IGZpZWxkIHRvIGJlCiAgICAgLy8gcmVtb3ZlZCBieSB0aGlzIGluc2VydGlv
bi4KICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRvbid0IG5lZWQg
dG8gdGFrZSBhY2NvdW50IG9mIHRoZQpAQCAtMjg5LDcgKzI4Niw3IEBAIHZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6dXBkYXRlVmFsdWUoKSAKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KHJlbmRlcmVyKCkpOwotICAgIG1fdmFsdWUgPSB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVy
KCkpLT50ZXh0KCk7CisgICAgbV92YWx1ZSA9IGlubmVyVGV4dFZhbHVlKCk7CiAgICAgY29uc3Rf
Y2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4odGhpcyktPnNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgY29uc3RfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
dGhpcyktPm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBtX2lzRGlydHkgPSB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAJKHJldmlzaW9uIDk0MjI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNp
bmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTE4
NiwxMiArMTg3LDkgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0KAog
CiBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVjdGVkVGV4dCgpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGV4dHJhY3Qgc2VsZWN0ZWQg
Y29udGVudHMgZXZlbiBpZiB0aGVyZSB3ZXJlIG5vIHJlbmRlcmVyLgotICAgIGlmICghcmVuZGVy
ZXIoKSB8fCByZW5kZXJlcigpLT5pc1RleHRDb250cm9sKCkpCisgICAgaWYgKCFpc1RleHRGb3Jt
Q29udHJvbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBSZW5kZXJUZXh0Q29u
dHJvbCogdGV4dENvbnRyb2wgPSB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpOwotICAg
IHJldHVybiB0ZXh0Q29udHJvbC0+dGV4dCgpLnN1YnN0cmluZyhzZWxlY3Rpb25TdGFydCgpLCBz
ZWxlY3Rpb25FbmQoKSAtIHNlbGVjdGlvblN0YXJ0KCkpOworICAgIHJldHVybiB2YWx1ZSgpLnN1
YnN0cmluZyhzZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25FbmQoKSAtIHNlbGVjdGlvblN0YXJ0
KCkpOwogfQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvcm1D
b250cm9sQ2hhbmdlRXZlbnQoKQpAQCAtNDU0LDE0ICs0NTIsMTMgQEAgYm9vbCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6bGFzdENoYQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXRJbm5lclRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICgh
cmVuZGVyZXIoKSB8fCAhaXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICBpZiAoIWlzVGV4dEZvcm1D
b250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclRleHRDb250cm9sKiB0ZXh0
Q29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSk7Ci0gICAgYm9vbCB0ZXh0
SXNDaGFuZ2VkID0gdmFsdWUgIT0gdGV4dENvbnRyb2wtPnRleHQoKTsKKyAgICBib29sIHRleHRJ
c0NoYW5nZWQgPSB2YWx1ZSAhPSBpbm5lclRleHRWYWx1ZSgpOwogICAgIGlmICh0ZXh0SXNDaGFu
Z2VkIHx8ICFpbm5lclRleHRFbGVtZW50KCktPmhhc0NoaWxkTm9kZXMoKSkgewotICAgICAgICBp
ZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgpICYmIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkpCi0gICAgICAgICAgICBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCkt
PnBvc3ROb3RpZmljYXRpb24odGV4dENvbnRyb2wsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFu
Z2VkLCBmYWxzZSk7CisgICAgICAgIGlmICh0ZXh0SXNDaGFuZ2VkICYmIGRvY3VtZW50KCkgJiYg
cmVuZGVyZXIoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHJl
bmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCBmYWxzZSk7CiAKICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+c2V0
SW5uZXJUZXh0KHZhbHVlLCBlYyk7CkBAIC00NzYsNiArNDczLDkyIEBAIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmUKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKHRydWUpOwogfQogCitzdGF0aWMgU3RyaW5nIGZpbmlzaFRleHQoU3RyaW5nQnVp
bGRlciYgcmVzdWx0KQoreworICAgIC8vIFJlbW92ZSBvbmUgdHJhaWxpbmcgbmV3bGluZTsgdGhl
cmUncyBhbHdheXMgb25lIHRoYXQncyBjb2xsYXBzZWQgb3V0IGJ5IHJlbmRlcmluZy4KKyAgICBz
aXplX3Qgc2l6ZSA9IHJlc3VsdC5sZW5ndGgoKTsKKyAgICBpZiAoc2l6ZSAmJiByZXN1bHRbc2l6
ZSAtIDFdID09ICdcbicpCisgICAgICAgIHJlc3VsdC5yZXNpemUoLS1zaXplKTsKKyAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6aW5uZXJUZXh0VmFsdWUoKSBjb25zdAoreworICAgIEhUTUxFbGVtZW50KiBpbm5lclRl
eHQgPSBpbm5lclRleHRFbGVtZW50KCk7CisgICAgaWYgKCFpbm5lclRleHQgfHwgIWlzVGV4dEZv
cm1Db250cm9sKCkpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworCisgICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7CisgICAgZm9yIChOb2RlKiBub2RlID0gaW5uZXJUZXh0OyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShpbm5lclRleHQpKSB7CisgICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmV3bGlu
ZUNoYXJhY3Rlcik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8VGV4dCo+KG5vZGUpLT5kYXRhKCkpOwor
ICAgIH0KKyAgICByZXR1cm4gZmluaXNoVGV4dChyZXN1bHQpOworfQorCitzdGF0aWMgdm9pZCBn
ZXROZXh0U29mdEJyZWFrKFJvb3RJbmxpbmVCb3gqJiBsaW5lLCBOb2RlKiYgYnJlYWtOb2RlLCB1
bnNpZ25lZCYgYnJlYWtPZmZzZXQpCit7CisgICAgUm9vdElubGluZUJveCogbmV4dDsKKyAgICBm
b3IgKDsgbGluZTsgbGluZSA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGxpbmUtPm5leHRSb290
Qm94KCk7CisgICAgICAgIGlmIChuZXh0ICYmICFsaW5lLT5lbmRzV2l0aEJyZWFrKCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChsaW5lLT5saW5lQnJlYWtPYmooKSk7CisgICAgICAgICAgICBicmVh
a05vZGUgPSBsaW5lLT5saW5lQnJlYWtPYmooKS0+bm9kZSgpOworICAgICAgICAgICAgYnJlYWtP
ZmZzZXQgPSBsaW5lLT5saW5lQnJlYWtQb3MoKTsKKyAgICAgICAgICAgIGxpbmUgPSBuZXh0Owor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGJyZWFrTm9kZSA9IDA7
CisgICAgYnJlYWtPZmZzZXQgPSAwOworfQorCitTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
SXQncyBub3QgYWNjZXB0YWJsZSB0byBpZ25vcmUgdGhlIEhhcmRXcmFwIHNldHRpbmcgd2hlbiB0
aGVyZSBpcyBubyByZW5kZXJlci4KKyAgICAvLyBXaGlsZSB3ZSBoYXZlIG5vIGV2aWRlbmNlIHRo
aXMgaGFzIGV2ZXIgYmVlbiBhIHByYWN0aWNhbCBwcm9ibGVtLCBpdCB3b3VsZCBiZSBiZXN0IHRv
IGZpeCBpdCBzb21lIGRheS4KKyAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOworICAgIGlmICghaW5uZXJUZXh0IHx8ICFpc1RleHRGb3JtQ29udHJvbCgpKQor
ICAgICAgICByZXR1cm4gdmFsdWUoKTsKKworICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IHRv
UmVuZGVyQmxvY2soaW5uZXJUZXh0LT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gdmFsdWUoKTsKKworICAgIE5vZGUqIGJyZWFrTm9kZTsKKyAgICB1bnNp
Z25lZCBicmVha09mZnNldDsKKyAgICBSb290SW5saW5lQm94KiBsaW5lID0gcmVuZGVyZXItPmZp
cnN0Um9vdEJveCgpOworICAgIGlmICghbGluZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlKCk7CisK
KyAgICBnZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOworCisg
ICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgZm9yIChOb2RlKiBub2RlID0gaW5uZXJUZXh0
LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGlubmVy
VGV4dCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKKyAgICAgICAgZWxzZSBpZiAobm9k
ZS0+aXNUZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICBTdHJpbmcgZGF0YSA9IHN0YXRpY19jYXN0
PFRleHQqPihub2RlKS0+ZGF0YSgpOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZGF0
YS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKKyAgICAgICAg
ICAgIHdoaWxlIChicmVha05vZGUgPT0gbm9kZSAmJiBicmVha09mZnNldCA8PSBsZW5ndGgpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYnJlYWtPZmZzZXQgPiBwb3NpdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGEuY2hhcmFjdGVycygpICsgcG9zaXRpb24sIGJy
ZWFrT2Zmc2V0IC0gcG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGJy
ZWFrT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld2xpbmVDaGFy
YWN0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZXROZXh0U29mdEJy
ZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLmNoYXJhY3RlcnMoKSArIHBvc2l0aW9uLCBsZW5ndGgg
LSBwb3NpdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9PSBub2Rl
KQorICAgICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zm
c2V0KTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKK30KKwogSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQqIGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0
aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKCk7CiAgICAgYm9vbCBsYXN0Q2hhbmdl
V2FzVXNlckVkaXQoKSBjb25zdDsKICAgICB2b2lkIHNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0
cmluZyYpOworICAgIFN0cmluZyBpbm5lclRleHRWYWx1ZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CkBAIC0xMDAsNiArMTAxLDggQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpID0gMDsKIAogICAgIHZvaWQg
c2V0TGFzdENoYW5nZVdhc05vdFVzZXJFZGl0KCkgeyBtX2xhc3RDaGFuZ2VXYXNVc2VyRWRpdCA9
IGZhbHNlOyB9CisKKyAgICBTdHJpbmcgdmFsdWVXaXRoSGFyZExpbmVCcmVha3MoKSBjb25zdDsK
IHByaXZhdGU6CiAgICAgaW50IGNvbXB1dGVTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogICAgIGlu
dCBjb21wdXRlU2VsZWN0aW9uRW5kKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvTnVtYmVySW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDcgKzMxOCw3IEBA
IFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY28KIAogYm9vbCBOdW1iZXJJ
bnB1dFR5cGU6Omhhc1VuYWNjZXB0YWJsZVZhbHVlKCkKIHsKLSAgICByZXR1cm4gZWxlbWVudCgp
LT5yZW5kZXJlcigpICYmICFpc0FjY2VwdGFibGVWYWx1ZSh0b1JlbmRlclRleHRDb250cm9sKGVs
ZW1lbnQoKS0+cmVuZGVyZXIoKSktPnRleHQoKSk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS0+cmVu
ZGVyZXIoKSAmJiAhaXNBY2NlcHRhYmxlVmFsdWUoZWxlbWVudCgpLT5pbm5lclRleHRWYWx1ZSgp
KTsKIH0KIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnNob3VsZFJlc3BlY3RTcGVlY2hBdHRyaWJ1
dGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAkocmV2aXNp
b24gOTQyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6ZGVz
dHJveVNoYWRvd1N1YnRyCiB2b2lkIFNlYXJjaElucHV0VHlwZTo6c3RhcnRTZWFyY2hFdmVudFRp
bWVyKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5yZW5kZXJlcigpKTsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50KCktPnJlbmRl
cmVyKCkpLT50ZXh0KCkubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gZWxlbWVudCgp
LT5pbm5lclRleHRWYWx1ZSgpLmxlbmd0aCgpOwogCiAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAg
ICAgc3RvcFNlYXJjaEV2ZW50VGltZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAJKHJldmlzaW9uIDk0MjI1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjky
LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJlZm9yZVRleAogICAgIC8vIFdl
IHVzZSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHQoKSBpbnN0ZWFkIG9mIElucHV0
RWxlbWVudDo6dmFsdWUoKQogICAgIC8vIGJlY2F1c2UgdGhleSBjYW4gYmUgbWlzbWF0Y2hlZCBi
eSBzYW5pdGl6ZVZhbHVlKCkgaW4KICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpzdWJ0cmVlSGFz
Q2hhbmdlZCgpIGluIHNvbWUgY2FzZXMuCi0gICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbnVtR3Jh
cGhlbWVDbHVzdGVycyh0b1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVtZW50KCktPnJl
bmRlcmVyKCkpLT50ZXh0KCkpOworICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IG51bUdyYXBoZW1l
Q2x1c3RlcnMoZWxlbWVudCgpLT5pbm5lclRleHRWYWx1ZSgpKTsKIAogICAgIC8vIHNlbGVjdGlv
bkxlbmd0aCByZXByZXNlbnRzIHRoZSBzZWxlY3Rpb24gbGVuZ3RoIG9mIHRoaXMgdGV4dCBmaWVs
ZCB0byBiZQogICAgIC8vIHJlbW92ZWQgYnkgdGhpcyBpbnNlcnRpb24uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDk0
MjI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYyLDkwICsxNjIsNiBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
VGV4dENvbnRyb2w6OnZpc2liCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgp
LT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZmluaXNoVGV4
dChTdHJpbmdCdWlsZGVyJiByZXN1bHQpCi17Ci0gICAgLy8gUmVtb3ZlIG9uZSB0cmFpbGluZyBu
ZXdsaW5lOyB0aGVyZSdzIGFsd2F5cyBvbmUgdGhhdCdzIGNvbGxhcHNlZCBvdXQgYnkgcmVuZGVy
aW5nLgotICAgIHNpemVfdCBzaXplID0gcmVzdWx0Lmxlbmd0aCgpOwotICAgIGlmIChzaXplICYm
IHJlc3VsdFtzaXplIC0gMV0gPT0gJ1xuJykKLSAgICAgICAgcmVzdWx0LnJlc2l6ZSgtLXNpemUp
OwotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotU3RyaW5nIFJlbmRlclRleHRD
b250cm9sOjp0ZXh0KCkKLXsKLSAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOwotICAgIGlmICghaW5uZXJUZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLSAKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICBmb3IgKE5vZGUqIG5vZGUg
PSBpbm5lclRleHQ7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGlubmVyVGV4
dCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+
aXNUZXh0Tm9kZSgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxUZXh0
Kj4obm9kZSktPmRhdGEoKSk7Ci0gICAgfQotICAgIHJldHVybiBmaW5pc2hUZXh0KHJlc3VsdCk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGdldE5leHRTb2Z0QnJlYWsoUm9vdElubGluZUJveComIGxpbmUs
IE5vZGUqJiBicmVha05vZGUsIHVuc2lnbmVkJiBicmVha09mZnNldCkKLXsKLSAgICBSb290SW5s
aW5lQm94KiBuZXh0OwotICAgIGZvciAoOyBsaW5lOyBsaW5lID0gbmV4dCkgewotICAgICAgICBu
ZXh0ID0gbGluZS0+bmV4dFJvb3RCb3goKTsKLSAgICAgICAgaWYgKG5leHQgJiYgIWxpbmUtPmVu
ZHNXaXRoQnJlYWsoKSkgewotICAgICAgICAgICAgQVNTRVJUKGxpbmUtPmxpbmVCcmVha09iaigp
KTsKLSAgICAgICAgICAgIGJyZWFrTm9kZSA9IGxpbmUtPmxpbmVCcmVha09iaigpLT5ub2RlKCk7
Ci0gICAgICAgICAgICBicmVha09mZnNldCA9IGxpbmUtPmxpbmVCcmVha1BvcygpOwotICAgICAg
ICAgICAgbGluZSA9IG5leHQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgYnJlYWtOb2RlID0gMDsKLSAgICBicmVha09mZnNldCA9IDA7Ci19Ci0KLVN0cmluZyBS
ZW5kZXJUZXh0Q29udHJvbDo6dGV4dFdpdGhIYXJkTGluZUJyZWFrcygpCi17Ci0gICAgSFRNTEVs
ZW1lbnQqIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlubmVyVGV4
dCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBSZW5kZXJCbG9jayogcmVu
ZGVyZXIgPSB0b1JlbmRlckJsb2NrKGlubmVyVGV4dC0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKCFy
ZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBOb2RlKiBicmVh
a05vZGU7Ci0gICAgdW5zaWduZWQgYnJlYWtPZmZzZXQ7Ci0gICAgUm9vdElubGluZUJveCogbGlu
ZSA9IHJlbmRlcmVyLT5maXJzdFJvb3RCb3goKTsKLSAgICBpZiAoIWxpbmUpCi0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05v
ZGUsIGJyZWFrT2Zmc2V0KTsKLQotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIGZvciAo
Tm9kZSogbm9kZSA9IGlubmVyVGV4dC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZShpbm5lclRleHQpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdO
YW1lKGJyVGFnKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmV3bGluZUNoYXJhY3Rlcik7
Ci0gICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgU3Ry
aW5nIGRhdGEgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSktPmRhdGEoKTsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGRhdGEubGVuZ3RoKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBw
b3NpdGlvbiA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoYnJlYWtOb2RlID09IG5vZGUgJiYgYnJl
YWtPZmZzZXQgPD0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJyZWFrT2Zmc2V0ID4g
cG9zaXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLmNoYXJh
Y3RlcnMoKSArIHBvc2l0aW9uLCBicmVha09mZnNldCAtIHBvc2l0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgcG9zaXRpb24gPSBicmVha09mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGF0YS5jaGFyYWN0ZXJz
KCkgKyBwb3NpdGlvbiwgbGVuZ3RoIC0gcG9zaXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIHdo
aWxlIChicmVha05vZGUgPT0gbm9kZSkKLSAgICAgICAgICAgIGdldE5leHRTb2Z0QnJlYWsobGlu
ZSwgYnJlYWtOb2RlLCBicmVha09mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiBmaW5pc2hUZXh0
KHJlc3VsdCk7Ci19Ci0KIGludCBSZW5kZXJUZXh0Q29udHJvbDo6c2Nyb2xsYmFyVGhpY2tuZXNz
KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGdldCB0aGUgc2l6ZSBvZiB0aGUg
c2Nyb2xsYmFyIGZyb20gdGhlIFJlbmRlclRoZW1lIGluc3RlYWQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkocmV2aXNpb24gOTQyMjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsOSArMzUsNiBAQCBwdWJsaWM6CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQqIHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdGFydFN0eWxlKSBjb25zdCA9IDA7CiAKLSAgICBTdHJpbmcgdGV4dCgpOwotICAgIFN0cmlu
ZyB0ZXh0V2l0aEhhcmRMaW5lQnJlYWtzKCk7Ci0KICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdDsKIAogcHJvdGVjdGVkOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105848</attachid>
            <date>2011-08-31 16:04:00 -0700</date>
            <delta_ts>2011-08-31 16:47:58 -0700</delta_ts>
            <desc>fixed efl build</desc>
            <filename>bug-67320-20110831160358.patch</filename>
            <type>text/plain</type>
            <size>18718</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0MjM3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDgtMzEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSB0ZXh0KCkgYW5kIHRleHRX
aXRoSGFyZExpbmVCcmVha3MoKSBmcm9tIFJlbmRlclRleHRDb250cm9sIHRvIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzMyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmVkIGFuZCByZW5hbWVkIFJlbmRlclRleHQ6OnRleHQgYW5kIFJlbmRlclRleHQ6
OnRleHRXaXRoSGFyZExpbmVCcmVha3MgdG8KKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OmlubmVyVGV4dFZhbHVlIGFuZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dmFs
dWVXaXRoSGFyZExpbmVCcmVha3MuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKToK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEpOiBDYWxscyB2YWx1ZVdpdGhI
YXJkTGluZUJyZWFrcy4gSXQgZG9lc24ndCBoYXZlIHRvIGNoZWNrCisgICAgICAgIHRoZSBleGlz
dGVuY2Ugb2YgcmVuZGVyZXIgYW55bW9yZSBiZWNhdXNlIHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtz
IHJldHVybnMgdmFsdWUoKSB3aGVuIHJlbmRlcmVyIGRvIG5vdAorICAgICAgICBleGlzdCB1bmxp
a2UgUmVuZGVyVGV4dDo6dGV4dFdpdGhIYXJkTGluZUJyZWFrcyByZXR1cm5lZCBlbXB0eVN0cmlu
ZygpIGluIHN1Y2ggY2FzZXMuIFRoaXMgaXMgdGhlIG9ubHkgcGxhY2UKKyAgICAgICAgdmFsdWVX
aXRoSGFyZExpbmVCcmVha3MgaXMgZXZlciBjYWxsZWQ7IGJ1dCB3ZSBjYW4ndCBtb3ZlIHZhbHVl
V2l0aEhhcmRMaW5lQnJlYWtzIGJlY2F1c2UgaXQgY2FsbHMKKyAgICAgICAgZmluaXNoVGV4dC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVw
ZGF0ZVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rl
ZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaFRleHQpOiBNb3ZlZCBm
cm9tIFJlbmRlclRleHQuY3BwCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5uZXJUZXh0VmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdldE5l
eHRTb2Z0QnJlYWspOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcyk6IERpdHRvOyB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgdmFsdWUoKQorICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyByZW5kZXJlcnMgb3Ig
cm9vdCBpbmxpbmUgYm94ZXMgaW5zdGVhZCBvZiBlbXB0eVN0cmluZygpLgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL051bWJlcklu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6Omhhc1VuYWNj
ZXB0YWJsZVZhbHVlKToKKyAgICAgICAgKiBodG1sL1NlYXJjaElucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2VhcmNoRXZlbnRUaW1lcik6Cisg
ICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKwogMjAxMS0wOC0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjk0MTE2LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTEsMTAgKzE5NTEsMTAgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRleHQoKQogICAgIAogICAgIGlmICghaXNUZXh0Q29udHJvbCgp
IHx8IGlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisK
ICAgICBpZiAoaXNOYXRpdmVUZXh0Q29udHJvbCgpKQotICAgICAgICByZXR1cm4gdG9SZW5kZXJU
ZXh0Q29udHJvbChtX3JlbmRlcmVyKS0+dGV4dCgpOwotICAgIAorICAgICAgICByZXR1cm4gdG9S
ZW5kZXJUZXh0Q29udHJvbChtX3JlbmRlcmVyKS0+dGV4dEZvcm1Db250cm9sRWxlbWVudCgpLT52
YWx1ZSgpOworCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gOTQyMjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjgsNyArNjI4
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZAogICAgIC8vIEhU
TUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KCkgaGFzIGFscmVh
ZHkgY2FsbGVkCiAgICAgLy8gc2FuaXRpemVVc2VySW5wdXRWYWx1ZSgpLgogICAgIC8vIHNhbml0
aXplVmFsdWUoKSBpcyBuZWVkZWQgYmVjYXVzZSBJTUUgaW5wdXQgZG9lc24ndCBkaXNwYXRjaCBC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC4KLSAgICBTdHJpbmcgdmFsdWUgPSB0b1JlbmRlclRleHRD
b250cm9sKHJlbmRlcmVyKCkpLT50ZXh0KCk7CisgICAgU3RyaW5nIHZhbHVlID0gaW5uZXJUZXh0
VmFsdWUoKTsKICAgICBpZiAoaXNBY2NlcHRhYmxlVmFsdWUodmFsdWUpKQogICAgICAgICBzZXRW
YWx1ZUZyb21SZW5kZXJlcihzYW5pdGl6ZVZhbHVlKGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKHZh
bHVlKSkpOwogICAgIC8vIFJlY2FsYyBmb3IgOmludmFsaWQgYW5kIGhhc1VuYWNjZXB0YWJsZVZh
bHVlKCkgY2hhbmdlLgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSwxMCArMTcxLDcgQEAgYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YQogCiAgICAgZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CiAKLSAgICAvLyBGSVhNRTogSXQncyBub3QgYWNjZXB0YWJsZSB0byBp
Z25vcmUgdGhlIEhhcmRXcmFwIHNldHRpbmcgd2hlbiB0aGVyZSBpcyBubyByZW5kZXJlci4KLSAg
ICAvLyBXaGlsZSB3ZSBoYXZlIG5vIGV2aWRlbmNlIHRoaXMgaGFzIGV2ZXIgYmVlbiBhIHByYWN0
aWNhbCBwcm9ibGVtLCBpdCB3b3VsZCBiZSBiZXN0IHRvIGZpeCBpdCBzb21lIGRheS4KLSAgICBS
ZW5kZXJUZXh0Q29udHJvbCogY29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIo
KSk7Ci0gICAgY29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCAmJiBjb250
cm9sKSA/IGNvbnRyb2wtPnRleHRXaXRoSGFyZExpbmVCcmVha3MoKSA6IHZhbHVlKCk7CisgICAg
Y29uc3QgU3RyaW5nJiB0ZXh0ID0gKG1fd3JhcCA9PSBIYXJkV3JhcCkgPyB2YWx1ZVdpdGhIYXJk
TGluZUJyZWFrcygpIDogdmFsdWUoKTsKICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUoKSwg
dGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTMsNyArMjUwLDcgQEAgdm9pZCBIVE1M
VGV4dEFyZWFFbGVtZW50OjpoYW5kbGVCZWZvcmVUZQogICAgICAgICByZXR1cm47CiAgICAgdW5z
aWduZWQgdW5zaWduZWRNYXhMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2lnbmVkTWF4
TGVuZ3RoKTsKIAotICAgIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGggPSBudW1HcmFwaGVtZUNsdXN0
ZXJzKHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnRleHQoKSk7CisgICAgdW5zaWdu
ZWQgY3VycmVudExlbmd0aCA9IG51bUdyYXBoZW1lQ2x1c3RlcnMoaW5uZXJUZXh0VmFsdWUoKSk7
CiAgICAgLy8gc2VsZWN0aW9uTGVuZ3RoIHJlcHJlc2VudHMgdGhlIHNlbGVjdGlvbiBsZW5ndGgg
b2YgdGhpcyB0ZXh0IGZpZWxkIHRvIGJlCiAgICAgLy8gcmVtb3ZlZCBieSB0aGlzIGluc2VydGlv
bi4KICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRvbid0IG5lZWQg
dG8gdGFrZSBhY2NvdW50IG9mIHRoZQpAQCAtMjg5LDcgKzI4Niw3IEBAIHZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6dXBkYXRlVmFsdWUoKSAKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KHJlbmRlcmVyKCkpOwotICAgIG1fdmFsdWUgPSB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVy
KCkpLT50ZXh0KCk7CisgICAgbV92YWx1ZSA9IGlubmVyVGV4dFZhbHVlKCk7CiAgICAgY29uc3Rf
Y2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4odGhpcyktPnNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgY29uc3RfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
dGhpcyktPm5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoKTsKICAgICBtX2lzRGlydHkgPSB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAJKHJldmlzaW9uIDk0MjI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEwIEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAj
aW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xODYsMTIgKzE4OCw5IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNlbGVj
dCgKIAogU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3RlZFRleHQoKSBj
b25zdAogewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBleHRyYWN0IHNlbGVj
dGVkIGNvbnRlbnRzIGV2ZW4gaWYgdGhlcmUgd2VyZSBubyByZW5kZXJlci4KLSAgICBpZiAoIXJl
bmRlcmVyKCkgfHwgcmVuZGVyZXIoKS0+aXNUZXh0Q29udHJvbCgpKQorICAgIGlmICghaXNUZXh0
Rm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgUmVuZGVyVGV4
dENvbnRyb2wqIHRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKTsK
LSAgICByZXR1cm4gdGV4dENvbnRyb2wtPnRleHQoKS5zdWJzdHJpbmcoc2VsZWN0aW9uU3RhcnQo
KSwgc2VsZWN0aW9uRW5kKCkgLSBzZWxlY3Rpb25TdGFydCgpKTsKKyAgICByZXR1cm4gdmFsdWUo
KS5zdWJzdHJpbmcoc2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKCkgLSBzZWxlY3Rpb25T
dGFydCgpKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hG
b3JtQ29udHJvbENoYW5nZUV2ZW50KCkKQEAgLTQ1NCwxNCArNDUzLDEzIEBAIGJvb2wgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6Omxhc3RDaGEKIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6c2V0SW5uZXJUZXh0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoIXJlbmRlcmVyKCkgfHwgIWlzVGV4dEZvcm1Db250cm9sKCkpCisgICAgaWYgKCFpc1RleHRG
b3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJUZXh0Q29udHJvbCog
dGV4dENvbnRyb2wgPSB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpOwotICAgIGJvb2wg
dGV4dElzQ2hhbmdlZCA9IHZhbHVlICE9IHRleHRDb250cm9sLT50ZXh0KCk7CisgICAgYm9vbCB0
ZXh0SXNDaGFuZ2VkID0gdmFsdWUgIT0gaW5uZXJUZXh0VmFsdWUoKTsKICAgICBpZiAodGV4dElz
Q2hhbmdlZCB8fCAhaW5uZXJUZXh0RWxlbWVudCgpLT5oYXNDaGlsZE5vZGVzKCkpIHsKLSAgICAg
ICAgaWYgKHRleHRJc0NoYW5nZWQgJiYgZG9jdW1lbnQoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNo
ZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRleHRDb250cm9sLCBBWE9iamVjdENhY2hlOjpBWFZhbHVl
Q2hhbmdlZCwgZmFsc2UpOworICAgICAgICBpZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgp
ICYmIHJlbmRlcmVyKCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
KyAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlv
bihyZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFsc2UpOwogCiAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBpbm5lclRleHRFbGVtZW50KCkt
PnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOwpAQCAtNDc2LDYgKzQ3NCw5MiBAQCB2b2lkIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcih0cnVlKTsKIH0KIAorc3RhdGljIFN0cmluZyBmaW5pc2hUZXh0KFN0cmlu
Z0J1aWxkZXImIHJlc3VsdCkKK3sKKyAgICAvLyBSZW1vdmUgb25lIHRyYWlsaW5nIG5ld2xpbmU7
IHRoZXJlJ3MgYWx3YXlzIG9uZSB0aGF0J3MgY29sbGFwc2VkIG91dCBieSByZW5kZXJpbmcuCisg
ICAgc2l6ZV90IHNpemUgPSByZXN1bHQubGVuZ3RoKCk7CisgICAgaWYgKHNpemUgJiYgcmVzdWx0
W3NpemUgLSAxXSA9PSAnXG4nKQorICAgICAgICByZXN1bHQucmVzaXplKC0tc2l6ZSk7CisgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCitTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmlubmVyVGV4dFZhbHVlKCkgY29uc3QKK3sKKyAgICBIVE1MRWxlbWVudCogaW5u
ZXJUZXh0ID0gaW5uZXJUZXh0RWxlbWVudCgpOworICAgIGlmICghaW5uZXJUZXh0IHx8ICFpc1Rl
eHRGb3JtQ29udHJvbCgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKworICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIGZvciAoTm9kZSogbm9kZSA9IGlubmVyVGV4dDsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0KSkgeworICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShiclRhZykpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5l
d2xpbmVDaGFyYWN0ZXIpOworICAgICAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PFRleHQqPihub2RlKS0+ZGF0YSgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKK30KKworc3RhdGljIHZv
aWQgZ2V0TmV4dFNvZnRCcmVhayhSb290SW5saW5lQm94KiYgbGluZSwgTm9kZSomIGJyZWFrTm9k
ZSwgdW5zaWduZWQmIGJyZWFrT2Zmc2V0KQoreworICAgIFJvb3RJbmxpbmVCb3gqIG5leHQ7Cisg
ICAgZm9yICg7IGxpbmU7IGxpbmUgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBsaW5lLT5uZXh0
Um9vdEJveCgpOworICAgICAgICBpZiAobmV4dCAmJiAhbGluZS0+ZW5kc1dpdGhCcmVhaygpKSB7
CisgICAgICAgICAgICBBU1NFUlQobGluZS0+bGluZUJyZWFrT2JqKCkpOworICAgICAgICAgICAg
YnJlYWtOb2RlID0gbGluZS0+bGluZUJyZWFrT2JqKCktPm5vZGUoKTsKKyAgICAgICAgICAgIGJy
ZWFrT2Zmc2V0ID0gbGluZS0+bGluZUJyZWFrUG9zKCk7CisgICAgICAgICAgICBsaW5lID0gbmV4
dDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBicmVha05vZGUg
PSAwOworICAgIGJyZWFrT2Zmc2V0ID0gMDsKK30KKworU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Ojp2YWx1ZVdpdGhIYXJkTGluZUJyZWFrcygpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IEl0J3Mgbm90IGFjY2VwdGFibGUgdG8gaWdub3JlIHRoZSBIYXJkV3JhcCBzZXR0aW5nIHdo
ZW4gdGhlcmUgaXMgbm8gcmVuZGVyZXIuCisgICAgLy8gV2hpbGUgd2UgaGF2ZSBubyBldmlkZW5j
ZSB0aGlzIGhhcyBldmVyIGJlZW4gYSBwcmFjdGljYWwgcHJvYmxlbSwgaXQgd291bGQgYmUgYmVz
dCB0byBmaXggaXQgc29tZSBkYXkuCisgICAgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVy
VGV4dEVsZW1lbnQoKTsKKyAgICBpZiAoIWlubmVyVGV4dCB8fCAhaXNUZXh0Rm9ybUNvbnRyb2wo
KSkKKyAgICAgICAgcmV0dXJuIHZhbHVlKCk7CisKKyAgICBSZW5kZXJCbG9jayogcmVuZGVyZXIg
PSB0b1JlbmRlckJsb2NrKGlubmVyVGV4dC0+cmVuZGVyZXIoKSk7CisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuIHZhbHVlKCk7CisKKyAgICBOb2RlKiBicmVha05vZGU7CisgICAg
dW5zaWduZWQgYnJlYWtPZmZzZXQ7CisgICAgUm9vdElubGluZUJveCogbGluZSA9IHJlbmRlcmVy
LT5maXJzdFJvb3RCb3goKTsKKyAgICBpZiAoIWxpbmUpCisgICAgICAgIHJldHVybiB2YWx1ZSgp
OworCisgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsK
KworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIGZvciAoTm9kZSogbm9kZSA9IGlubmVy
VGV4dC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShp
bm5lclRleHQpKSB7CisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGJyVGFnKSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobmV3bGluZUNoYXJhY3Rlcik7CisgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmlzVGV4dE5vZGUoKSkgeworICAgICAgICAgICAgU3RyaW5nIGRhdGEgPSBzdGF0aWNf
Y2FzdDxUZXh0Kj4obm9kZSktPmRhdGEoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGRhdGEubGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CisgICAg
ICAgICAgICB3aGlsZSAoYnJlYWtOb2RlID09IG5vZGUgJiYgYnJlYWtPZmZzZXQgPD0gbGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgaWYgKGJyZWFrT2Zmc2V0ID4gcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLmNoYXJhY3RlcnMoKSArIHBvc2l0aW9u
LCBicmVha09mZnNldCAtIHBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24g
PSBicmVha09mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdsaW5l
Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2V0TmV4dFNv
ZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGF0YS5jaGFyYWN0ZXJzKCkgKyBwb3NpdGlvbiwgbGVu
Z3RoIC0gcG9zaXRpb24pOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChicmVha05vZGUgPT0g
bm9kZSkKKyAgICAgICAgICAgIGdldE5leHRTb2Z0QnJlYWsobGluZSwgYnJlYWtOb2RlLCBicmVh
a09mZnNldCk7CisgICAgfQorICAgIHJldHVybiBmaW5pc2hUZXh0KHJlc3VsdCk7Cit9CisKIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woY29uc3Qg
UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIEFTU0VSVChwb3NpdGlvbi5pc051bGwoKSB8fCBw
b3NpdGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hv
cgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gOTQyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCgpOwogICAgIGJvb2wgbGFzdENo
YW5nZVdhc1VzZXJFZGl0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbm5lclRleHRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBTdHJpbmcgaW5uZXJUZXh0VmFsdWUoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwpAQCAtMTAwLDYgKzEwMSw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSA9IDA7CiAKICAgICB2
b2lkIHNldExhc3RDaGFuZ2VXYXNOb3RVc2VyRWRpdCgpIHsgbV9sYXN0Q2hhbmdlV2FzVXNlckVk
aXQgPSBmYWxzZTsgfQorCisgICAgU3RyaW5nIHZhbHVlV2l0aEhhcmRMaW5lQnJlYWtzKCkgY29u
c3Q7CiBwcml2YXRlOgogICAgIGludCBjb21wdXRlU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKICAg
ICBpbnQgY29tcHV0ZVNlbGVjdGlvbkVuZCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvTnVtYmVySW5wdXRUeXBlLmNwcAkocmV2aXNpb24gOTQyMjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgs
NyBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvCiAKIGJvb2wgTnVt
YmVySW5wdXRUeXBlOjpoYXNVbmFjY2VwdGFibGVWYWx1ZSgpCiB7Ci0gICAgcmV0dXJuIGVsZW1l
bnQoKS0+cmVuZGVyZXIoKSAmJiAhaXNBY2NlcHRhYmxlVmFsdWUodG9SZW5kZXJUZXh0Q29udHJv
bChlbGVtZW50KCktPnJlbmRlcmVyKCkpLT50ZXh0KCkpOworICAgIHJldHVybiBlbGVtZW50KCkt
PnJlbmRlcmVyKCkgJiYgIWlzQWNjZXB0YWJsZVZhbHVlKGVsZW1lbnQoKS0+aW5uZXJUZXh0VmFs
dWUoKSk7CiB9CiAKIGJvb2wgTnVtYmVySW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0U3BlZWNoQXR0
cmlidXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAJKHJl
dmlzaW9uIDk0MjI1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6
OmRlc3Ryb3lTaGFkb3dTdWJ0cgogdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2VhcmNoRXZl
bnRUaW1lcigpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSk7Ci0gICAgdW5z
aWduZWQgbGVuZ3RoID0gdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudCgpLT5y
ZW5kZXJlcigpKS0+dGV4dCgpLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGVsZW1l
bnQoKS0+aW5uZXJUZXh0VmFsdWUoKS5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKSB7CiAg
ICAgICAgIHN0b3BTZWFyY2hFdmVudFRpbWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcg
KzI5Miw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCZWZvcmVUZXgKICAgICAv
LyBXZSB1c2UgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp0ZXh0KCkgaW5zdGVhZCBvZiBJ
bnB1dEVsZW1lbnQ6OnZhbHVlKCkKICAgICAvLyBiZWNhdXNlIHRoZXkgY2FuIGJlIG1pc21hdGNo
ZWQgYnkgc2FuaXRpemVWYWx1ZSgpIGluCiAgICAgLy8gSFRNTElucHV0RWxlbWVudDo6c3VidHJl
ZUhhc0NoYW5nZWQoKSBpbiBzb21lIGNhc2VzLgotICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IG51
bUdyYXBoZW1lQ2x1c3RlcnModG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudCgp
LT5yZW5kZXJlcigpKS0+dGV4dCgpKTsKKyAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBudW1HcmFw
aGVtZUNsdXN0ZXJzKGVsZW1lbnQoKS0+aW5uZXJUZXh0VmFsdWUoKSk7CiAKICAgICAvLyBzZWxl
Y3Rpb25MZW5ndGggcmVwcmVzZW50cyB0aGUgc2VsZWN0aW9uIGxlbmd0aCBvZiB0aGlzIHRleHQg
ZmllbGQgdG8gYmUKICAgICAvLyByZW1vdmVkIGJ5IHRoaXMgaW5zZXJ0aW9uLgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCShyZXZpc2lv
biA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDI3ICsyMiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAKLSNpbmNsdWRlICJFZGl0b3IuaCIK
LSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkhUTUxCUkVsZW1lbnQuaCIKLSNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0Lmgi
Ci0jaW5jbHVkZSAiUG9zaXRpb24uaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgotI2luY2x1ZGUg
IlRleHQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCiAvLyBW
YWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uICBUaGlzIGNhbiBiZSB0d2Vha2VkLgogc3RhdGlj
IGNvbnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAxMzAwOwogCkBAIC0xNjIsOTAgKzE1
Myw2IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWIKICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNKTsK
IH0KIAotc3RhdGljIFN0cmluZyBmaW5pc2hUZXh0KFN0cmluZ0J1aWxkZXImIHJlc3VsdCkKLXsK
LSAgICAvLyBSZW1vdmUgb25lIHRyYWlsaW5nIG5ld2xpbmU7IHRoZXJlJ3MgYWx3YXlzIG9uZSB0
aGF0J3MgY29sbGFwc2VkIG91dCBieSByZW5kZXJpbmcuCi0gICAgc2l6ZV90IHNpemUgPSByZXN1
bHQubGVuZ3RoKCk7Ci0gICAgaWYgKHNpemUgJiYgcmVzdWx0W3NpemUgLSAxXSA9PSAnXG4nKQot
ICAgICAgICByZXN1bHQucmVzaXplKC0tc2l6ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdC50b1N0cmlu
ZygpOwotfQotCi1TdHJpbmcgUmVuZGVyVGV4dENvbnRyb2w6OnRleHQoKQotewotICAgIEhUTUxF
bGVtZW50KiBpbm5lclRleHQgPSBpbm5lclRleHRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbm5lclRl
eHQpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotIAotICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OwotICAgIGZvciAoTm9kZSogbm9kZSA9IGlubmVyVGV4dDsgbm9kZTsgbm9kZSA9IG5v
ZGUtPnRyYXZlcnNlTmV4dE5vZGUoaW5uZXJUZXh0KSkgewotICAgICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShiclRhZykpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld2xpbmVDaGFyYWN0
ZXIpOwotICAgICAgICBlbHNlIGlmIChub2RlLT5pc1RleHROb2RlKCkpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PFRleHQqPihub2RlKS0+ZGF0YSgpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgZ2V0TmV4dFNv
ZnRCcmVhayhSb290SW5saW5lQm94KiYgbGluZSwgTm9kZSomIGJyZWFrTm9kZSwgdW5zaWduZWQm
IGJyZWFrT2Zmc2V0KQotewotICAgIFJvb3RJbmxpbmVCb3gqIG5leHQ7Ci0gICAgZm9yICg7IGxp
bmU7IGxpbmUgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBsaW5lLT5uZXh0Um9vdEJveCgpOwot
ICAgICAgICBpZiAobmV4dCAmJiAhbGluZS0+ZW5kc1dpdGhCcmVhaygpKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQobGluZS0+bGluZUJyZWFrT2JqKCkpOwotICAgICAgICAgICAgYnJlYWtOb2RlID0g
bGluZS0+bGluZUJyZWFrT2JqKCktPm5vZGUoKTsKLSAgICAgICAgICAgIGJyZWFrT2Zmc2V0ID0g
bGluZS0+bGluZUJyZWFrUG9zKCk7Ci0gICAgICAgICAgICBsaW5lID0gbmV4dDsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBicmVha05vZGUgPSAwOwotICAgIGJy
ZWFrT2Zmc2V0ID0gMDsKLX0KLQotU3RyaW5nIFJlbmRlclRleHRDb250cm9sOjp0ZXh0V2l0aEhh
cmRMaW5lQnJlYWtzKCkKLXsKLSAgICBIVE1MRWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJUZXh0
RWxlbWVudCgpOwotICAgIGlmICghaW5uZXJUZXh0KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKLQotICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IHRvUmVuZGVyQmxvY2soaW5uZXJU
ZXh0LT5yZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKLQotICAgIE5vZGUqIGJyZWFrTm9kZTsKLSAgICB1bnNpZ25lZCBicmVha09m
ZnNldDsKLSAgICBSb290SW5saW5lQm94KiBsaW5lID0gcmVuZGVyZXItPmZpcnN0Um9vdEJveCgp
OwotICAgIGlmICghbGluZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICBn
ZXROZXh0U29mdEJyZWFrKGxpbmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwotCi0gICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gaW5uZXJUZXh0LT5maXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKGlubmVyVGV4dCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpKQotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChuZXdsaW5lQ2hhcmFjdGVyKTsKLSAgICAgICAgZWxzZSBpZiAobm9kZS0+aXNU
ZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgZGF0YSA9IHN0YXRpY19jYXN0PFRleHQq
Pihub2RlKS0+ZGF0YSgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZGF0YS5sZW5n
dGgoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKLSAgICAgICAgICAgIHdo
aWxlIChicmVha05vZGUgPT0gbm9kZSAmJiBicmVha09mZnNldCA8PSBsZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYnJlYWtPZmZzZXQgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGRhdGEuY2hhcmFjdGVycygpICsgcG9zaXRpb24sIGJyZWFrT2Zm
c2V0IC0gcG9zaXRpb24pOwotICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGJyZWFrT2Zm
c2V0OwotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld2xpbmVDaGFyYWN0ZXIp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnZXROZXh0U29mdEJyZWFrKGxp
bmUsIGJyZWFrTm9kZSwgYnJlYWtPZmZzZXQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChkYXRhLmNoYXJhY3RlcnMoKSArIHBvc2l0aW9uLCBsZW5ndGggLSBwb3Np
dGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKGJyZWFrTm9kZSA9PSBub2RlKQotICAg
ICAgICAgICAgZ2V0TmV4dFNvZnRCcmVhayhsaW5lLCBicmVha05vZGUsIGJyZWFrT2Zmc2V0KTsK
LSAgICB9Ci0gICAgcmV0dXJuIGZpbmlzaFRleHQocmVzdWx0KTsKLX0KLQogaW50IFJlbmRlclRl
eHRDb250cm9sOjpzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgZ2V0IHRoZSBzaXplIG9mIHRoZSBzY3JvbGxiYXIgZnJvbSB0aGUgUmVuZGVyVGhl
bWUgaW5zdGVhZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oCShyZXZpc2lvbiA5NDIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw2IEBAIHB1Ymxp
YzoKICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogdGV4dEZvcm1Db250cm9sRWxlbWVu
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5u
ZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0ID0gMDsKIAot
ICAgIFN0cmluZyB0ZXh0KCk7Ci0gICAgU3RyaW5nIHRleHRXaXRoSGFyZExpbmVCcmVha3MoKTsK
LQogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgp
IGNvbnN0OwogCiBwcm90ZWN0ZWQ6Cg==
</data>
<flag name="review"
          id="102117"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="102133"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>