<?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>76229</bug_id>
          
          <creation_ts>2012-01-12 16:57:53 -0800</creation_ts>
          <short_desc>Remove external references to CSSPrimitiveValue::UnitTypes enum.</short_desc>
          <delta_ts>2012-01-15 15:18:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>535308</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-01-12 16:57:53 -0800</bug_when>
    <thetext>Remove external references to CSSPrimitiveValue::UnitTypes enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535310</commentid>
    <comment_count>1</comment_count>
      <attachid>122341</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-01-12 17:03:47 -0800</bug_when>
    <thetext>Created attachment 122341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535361</commentid>
    <comment_count>2</comment_count>
      <attachid>122341</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-12 18:22:57 -0800</bug_when>
    <thetext>Comment on attachment 122341
Patch

Attachment 122341 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11157346

New failing tests:
fast/gradients/css3-radial-gradients2.html
printing/page-format-data.html
fast/gradients/css3-radial-gradients.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535405</commentid>
    <comment_count>3</comment_count>
      <attachid>122363</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-01-12 20:28:02 -0800</bug_when>
    <thetext>Created attachment 122363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535462</commentid>
    <comment_count>4</comment_count>
      <attachid>122363</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-12 23:16:35 -0800</bug_when>
    <thetext>Comment on attachment 122363
Patch

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

Patch seems good as is. Other flaws in the code might be worth fixing in a follow-up.

&gt; Source/WebCore/css/CSSFontSelector.cpp:290
&gt; +        else if (item-&gt;isIdent()) {

Seems like we could just leave this check out. The code below quickly does nothing if it’s not an ident. Creates a null string, does a switch statement, then bails out because the family name is empty.

&gt; Source/WebCore/css/CSSFontSelector.cpp:293
&gt;              String familyName;

Not new to your patch, but: This extra declaration of familyName prevents the following switch statement from doing anything at all. This code doesn’t work!

&gt; Source/WebCore/css/CSSPrimitiveValue.h:119
&gt; +    static bool isUnitTypeLength(int type) { return (type &gt; CSS_PERCENTAGE &amp;&amp; type &lt; CSS_DEG) || type == CSS_REMS; }

Seems like this could be private if we aren’t going to expose types outside the class.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1029
&gt; -                } else if (type == CSSPrimitiveValue::CSS_IDENT)
&gt; +                } else if (primitiveValue-&gt;isIdent())
&gt;                      selector-&gt;style()-&gt;setCursor(*primitiveValue);

I wonder if this code really needs to work this way. If the value is not an identifier, then it carefully does nothing. But if it’s an identifier there is nothing here that checks to see that it’s one of the identifiers that specifies a cursor. I wonder if the isIdent check really is needed.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1234
&gt;                  switch (primitiveValue-&gt;getIdent()) {
&gt; +                case 0:
&gt; +                    return;

Seems strange that if there is an identifier we are guaranteed it’s a valid one, but that it’s possible the primitive value isn’t a value one at all. I suspect this 0-ident code path isn’t actually reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536288</commentid>
    <comment_count>5</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-01-15 13:47:49 -0800</bug_when>
    <thetext>Thank Darin, I&apos;ll post a follow-up patch with those suggestions once this lands,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536299</commentid>
    <comment_count>6</comment_count>
      <attachid>122363</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-15 15:18:45 -0800</bug_when>
    <thetext>Comment on attachment 122363
Patch

Clearing flags on attachment: 122363

Committed r105033: &lt;http://trac.webkit.org/changeset/105033&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536300</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-15 15:18:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122341</attachid>
            <date>2012-01-12 17:03:47 -0800</date>
            <delta_ts>2012-01-12 20:27:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76229-20120113120344.patch</filename>
            <type>text/plain</type>
            <size>16234</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDg4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTEyICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGV4
dGVybmFsIHJlZmVyZW5jZXMgdG8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBlbnVtLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLyByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6
CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25G
cm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVH
cmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNGb250UmVsYXRpdmVMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmlzSWRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmlzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjppc1BlcmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmlzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VSSSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlWYWx1ZSk6CisKIDIwMTItMDEtMTIg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUg
YSBHcmFwaGljc0xheWVyIGZvciB0aGUgb3ZlcmhhbmcgYXJlYXMgaWYgdGhyZWFkZWQgc2Nyb2xs
aW5nIGlzIGVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDkgKzI4NSw5IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjphZGRGb250RmFjZVJ1bGUoY28KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhbWlseUxl
bmd0aDsgaSsrKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpdGVtID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmYW1pbHlMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KGkpKTsKICAgICAgICAgU3RyaW5nIGZhbWlseU5hbWU7Ci0gICAgICAgIGlmIChpdGVtLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCisgICAgICAgIGlm
IChpdGVtLT5pc1N0cmluZygpKQogICAgICAgICAgICAgZmFtaWx5TmFtZSA9IHN0YXRpY19jYXN0
PEZvbnRGYW1pbHlWYWx1ZSo+KGl0ZW0pLT5mYW1pbHlOYW1lKCk7Ci0gICAgICAgIGVsc2UgaWYg
KGl0ZW0tPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7
CisgICAgICAgIGVsc2UgaWYgKGl0ZW0tPmlzSWRlbnQoKSkgewogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byB1c2UgdGhlIHJhdyB0ZXh0IGZvciBhbGwgdGhlIGdlbmVyaWMgZmFtaWx5IHR5cGVz
LCBzaW5jZSBAZm9udC1mYWNlIGlzIGEgd2F5IG9mIGFjdHVhbGx5CiAgICAgICAgICAgICAvLyBk
ZWZpbmluZyB3aGF0IGZvbnQgdG8gdXNlIGZvciB0aG9zZSB0eXBlcy4KICAgICAgICAgICAgIFN0
cmluZyBmYW1pbHlOYW1lOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBDU1NHcmFk
aWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudAogICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5jb2xvckZyb21QcmltaXRpdmVW
YWx1ZShzdG9wLm1fY29sb3IuZ2V0KCkpOwogCiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQ7Ci0g
ICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgaWYgKHN0b3AubV9wb3Np
dGlvbi0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bv
c2l0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkg
LyAxMDA7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5t
X3Bvc2l0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsK
QEAgLTE1MCwxMCArMTUwLDkgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFk
aWVudAogICAgICAgICBzdG9wc1tpXS5jb2xvciA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yKCktPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHN0b3AubV9jb2xvci5nZXQoKSk7
CiAKICAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlvbikgewotICAgICAgICAgICAgaW50IHR5cGUg
PSBzdG9wLm1fcG9zaXRpb24tPnByaW1pdGl2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgICAgIGlmIChz
dG9wLm1fcG9zaXRpb24tPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgIHN0b3BzW2ld
Lm9mZnNldCA9IHN0b3AubV9wb3NpdGlvbi0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpIC8gMTAwOwotICAgICAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0
aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHN0b3AubV9wb3NpdGlvbi0+aXNMZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIGZsb2F0IGxl
bmd0aCA9IHN0b3AubV9wb3NpdGlvbi0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RT
dHlsZSwgc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21w
dXRlZEdyYWRpZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBncmFk
aWVudFNpemUoZ3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsKQEAgLTM2MywzMiArMzYyLDMw
IEBAIHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXQKIHsKICAgICBmbG9h
dCB6b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKIAotICAgIHN3aXRjaCAodmFs
dWUtPnByaW1pdGl2ZVR5cGUoKSkgewotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI6CisgICAgaWYgKHZhbHVlLT5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdmFsdWUt
PmdldEZsb2F0VmFsdWUoKSAqIHpvb21GYWN0b3I7CiAKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRToKKyAgICBpZiAodmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAg
ICAgICByZXR1cm4gdmFsdWUtPmdldEZsb2F0VmFsdWUoKSAvIDEwMC5mICogKGlzSG9yaXpvbnRh
bCA/IHNpemUud2lkdGgoKSA6IHNpemUuaGVpZ2h0KCkpOwogCi0gICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lERU5UOgorICAgIGlmICh2YWx1ZS0+aXNJZGVudCgpKSB7CiAgICAgICAg
IHN3aXRjaCAodmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVU
b3A6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwotICAgICAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0gICAgICAgICAg
ICAgICAgQVNTRVJUKGlzSG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm90dG9tOgotICAgICAgICAgICAgICAgIEFTU0VSVCgh
aXNIb3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsKLSAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNI
b3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgpOworICAgICAg
ICBjYXNlIENTU1ZhbHVlVG9wOgorICAgICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMZWZ0OgorICAgICAg
ICAgICAgQVNTRVJUKGlzSG9yaXpvbnRhbCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKKyAgICAgICAgICAgIEFTU0VSVCghaXNIb3Jpem9udGFs
KTsKKyAgICAgICAgICAgIHJldHVybiBzaXplLmhlaWdodCgpOworICAgICAgICBjYXNlIENTU1Zh
bHVlUmlnaHQ6CisgICAgICAgICAgICBBU1NFUlQoaXNIb3Jpem9udGFsKTsKKyAgICAgICAgICAg
IHJldHVybiBzaXplLndpZHRoKCk7CiAgICAgICAgIH0KLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiB2YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHlsZSwgem9v
bUZhY3Rvcik7CiAgICAgfQorCisgICAgcmV0dXJuIHZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0
PihzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKIH0KIAogRmxvYXRQb2ludCBDU1NHcmFk
aWVudFZhbHVlOjpjb21wdXRlRW5kUG9pbnQoQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0LCBDU1NQ
cmltaXRpdmVWYWx1ZSogc2Vjb25kLCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBy
b290U3R5bGUsIGNvbnN0IEludFNpemUmIHNpemUpCkBAIC00MTYsOCArNDEzLDcgQEAgYm9vbCBD
U1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgICAgICBpZiAoIXN0b3AubV9w
b3NpdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlID0gc3RvcC5tX3Bvc2l0aW9uLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgIGlm
ICh1bml0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyB8fCB1bml0VHlwZSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUyB8fCB1bml0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1JFTVMpCisgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24tPmlzRm9udFJlbGF0aXZl
TGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02NDAsOSAr
NjM2LDkgQEAgZmxvYXQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZAogICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgZmxvYXQgcmVz
dWx0ID0gMDsKLSAgICBpZiAocmFkaXVzLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpICAvLyBDYW4gdGhlIHJhZGl1cyBiZSBhIHBlcmNlbnRhZ2U/Cisg
ICAgaWYgKHJhZGl1cy0+aXNOdW1iZXIoKSkgLy8gQ2FuIHRoZSByYWRpdXMgYmUgYSBwZXJjZW50
YWdlPwogICAgICAgICByZXN1bHQgPSByYWRpdXMtPmdldEZsb2F0VmFsdWUoKSAqIHpvb21GYWN0
b3I7Ci0gICAgZWxzZSBpZiAod2lkdGhPckhlaWdodCAmJiByYWRpdXMtPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgZWxzZSBpZiAod2lk
dGhPckhlaWdodCAmJiByYWRpdXMtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICByZXN1bHQgPSAq
d2lkdGhPckhlaWdodCAqIHJhZGl1cy0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwOwogICAgIGVsc2UK
ICAgICAgICAgcmVzdWx0ID0gcmFkaXVzLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9v
dFN0eWxlLCB6b29tRmFjdG9yKTsKQEAgLTc2MSwxMyArNzU3LDEzIEBAIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmEKICAgICB9IGVsc2UgewogICAgICAgICBlbnVtIEdy
YWRpZW50U2hhcGUgeyBDaXJjbGUsIEVsbGlwc2UgfTsKICAgICAgICAgR3JhZGllbnRTaGFwZSBz
aGFwZSA9IEVsbGlwc2U7Ci0gICAgICAgIGlmIChtX3NoYXBlICYmIG1fc2hhcGUtPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIG1fc2hhcGUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDaXJjbGUpCisgICAgICAgIGlmIChtX3NoYXBlICYmIG1fc2hhcGUt
PmlzSWRlbnQoKSAmJiBtX3NoYXBlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ2lyY2xlKQogICAg
ICAgICAgICAgc2hhcGUgPSBDaXJjbGU7CiAKICAgICAgICAgZW51bSBHcmFkaWVudEZpbGwgeyBD
bG9zZXN0U2lkZSwgQ2xvc2VzdENvcm5lciwgRmFydGhlc3RTaWRlLCBGYXJ0aGVzdENvcm5lciB9
OwogICAgICAgICBHcmFkaWVudEZpbGwgZmlsbCA9IEZhcnRoZXN0Q29ybmVyOwogCi0gICAgICAg
IGlmIChtX3NpemluZ0JlaGF2aW9yICYmIG1fc2l6aW5nQmVoYXZpb3ItPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKSB7CisgICAgICAgIGlmIChtX3Npemlu
Z0JlaGF2aW9yICYmIG1fc2l6aW5nQmVoYXZpb3ItPmlzSWRlbnQoKSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fc2l6aW5nQmVoYXZpb3It
PmdldElkZW50KCkpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTIgKzExNiwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIFVPdGhlcgogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBpc1Vu
aXRUeXBlTGVuZ3RoKGludCB0eXBlKSB7IHJldHVybiAodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFTVM7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1Vu
aXRUeXBlTGVuZ3RoKGludCB0eXBlKSB7IHJldHVybiAodHlwZSA+IENTU19QRVJDRU5UQUdFICYm
IHR5cGUgPCBDU1NfREVHKSB8fCB0eXBlID09IENTU19SRU1TOyB9CiAKKyAgICBib29sIGlzRm9u
dFJlbGF0aXZlTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRUeXBlID09IENTU19FTVMgfHwgbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRVhTIHx8
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVM7CisgICAgfQorICAgIGJvb2wgaXNJZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0lERU5UOyB9CiAg
ICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVW5pdFR5cGVMZW5ndGgobV9wcmlt
aXRpdmVVbml0VHlwZSk7IH0KLSAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
OyB9Ci0gICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KKyAgICBib29sIGlzTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfTlVNQkVSOyB9Cisg
ICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID09IENTU19QRVJDRU5UQUdFOyB9CisgICAgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1NUUklORzsgfQorICAgIGJvb2wgaXNVUkkoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19VUkk7IH0KKwogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoaW50
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShpZGVu
dGlmaWVyKSk7IH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlQ29sb3IodW5zaWduZWQgcmdiVmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NQcmlt
aXRpdmVWYWx1ZShyZ2JWYWx1ZSkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVBcHBseVByb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVBcHBseVByb3BlcnR5LmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwx
MiArMzI5LDExIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZSBpZiAoYXV0b0VuYWJsZWQgJiYgcHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAgc2V0
VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCksIExlbmd0aCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsK
KyAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkgewogICAgICAgICAg
ICAgICAgIExlbmd0aCBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5n
dGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxl
Y3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgICAgICAgICBsZW5ndGgu
c2V0UXVpcmsocHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgpKTsKICAgICAgICAgICAgICAg
ICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAg
ICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODUs
MTEgKzM4NCwxMSBAQCBwdWJsaWM6CiAKICAgICAgICAgTGVuZ3RoIHJhZGl1c1dpZHRoOwogICAg
ICAgICBMZW5ndGggcmFkaXVzSGVpZ2h0OwotICAgICAgICBpZiAocGFpci0+Zmlyc3QoKS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAg
ICAgaWYgKHBhaXItPmZpcnN0KCktPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKG1heChpbnRN
aW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZpcnN0KCktPmNvbXB1dGVM
ZW5ndGg8aW50PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUo
KSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOwotICAgICAg
ICBpZiAocGFpci0+c2Vjb25kKCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNQZXJjZW50
YWdlKCkpCiAgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vjb25kKCkt
PmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBy
YWRpdXNIZWlnaHQgPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWluKGludE1heEZvckxl
bmd0aCwgcGFpci0+c2Vjb25kKCktPmNvbXB1dGVMZW5ndGg8aW50PihzZWxlY3Rvci0+c3R5bGUo
KSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpKSwgRml4ZWQpOwpAQCAtNjY5LDEyICs2NjgsOCBAQCBwdWJsaWM6CiAKICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29s
dXRlU2l6ZSAmJiAoaWRlbnQgPT0gQ1NTVmFsdWVMYXJnZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVT
bWFsbGVyKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAodHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJiYgdHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0eXBlICE9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICYmIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1T
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIShw
cmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkgfHwgcHJpbWl0aXZlVmFsdWUtPmlzRm9udFJl
bGF0aXZlTGVuZ3RoKCkpKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5n
dGgoKSkKICAgICAgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRT
dHlsZSgpLCAxLjAsIHRydWUpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PmlzUGVyY2VudGFnZSgpKQpAQCAtMTAyMywyMSArMTAxOCwxOSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAg
ICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGlj
X2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpbWFnZS0+dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoc2VsZWN0b3It
PmVsZW1lbnQoKSkpIC8vIEVsZW1lbnRzIHdpdGggU1ZHIGN1cnNvcnMgYXJlIG5vdCBhbGxvd2Vk
IHRvIHNoYXJlIHN0eWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5zZXRVbmlxdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5z
dHlsZSgpLT5hZGRDdXJzb3Ioc2VsZWN0b3ItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQ
cm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzSWRlbnQoKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNl
dEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZl
VHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
REVOVCAmJiBzZWxlY3Rvci0+c3R5bGUoKS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcHJpbWl0aXZl
VmFsdWUpKQorICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0lkZW50KCkgJiYgc2Vs
ZWN0b3ItPnN0eWxlKCktPmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKICAg
ICAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjM2LDcgKzEyMjksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwogICAgICAgICAg
ICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVu
Z3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAg
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0lkZW50KCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CkBAIC0xMzA4LDcg
KzEzMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOwogCi0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSB7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNl
dFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CiAgICAgICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3Vz
dG9tKTsKICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0
b21NYXJrKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKQEAgLTE1NTUsMTEgKzE1
NDgsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZmxvYXQgZG9jWm9vbSA9IHNlbGVjdG9yLT5k
b2N1bWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLT56b29tKCk7CiAgICAgICAgICAgICBzZWxl
Y3Rvci0+c2V0RWZmZWN0aXZlWm9vbShkb2Nab29tKTsKICAgICAgICAgICAgIHNlbGVjdG9yLT5z
ZXRab29tKGRvY1pvb20pOwotICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAg
ICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwogICAgICAgICAgICAgaWYgKGZsb2F0
IHBlcmNlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIHNlbGVjdG9yLT5zZXRab29tKHBlcmNlbnQgLyAxMDAuMGYpOwotICAgICAgICB9IGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1i
ZXIoKSkgewogICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHNlbGVjdG9yKTsKICAgICAg
ICAgICAgIGlmIChmbG9hdCBudW1iZXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgp
KQogICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zZXRab29tKG51bWJlcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122363</attachid>
            <date>2012-01-12 20:28:02 -0800</date>
            <delta_ts>2012-01-15 15:18:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76229-20120113152759.patch</filename>
            <type>text/plain</type>
            <size>17208</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTEyICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGV4
dGVybmFsIHJlZmVyZW5jZXMgdG8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBlbnVtLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyMjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLyByZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6
CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25G
cm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFi
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVH
cmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6aXNGb250UmVsYXRpdmVMZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmlzSWRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmlzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjppc1BlcmNlbnRhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmlzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Ojppc1VSSSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJSYWRpdXM6OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDdXJzb3I6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHlsZTo6YXBwbHlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5Wm9vbTo6YXBwbHlWYWx1ZSk6CisKIDIwMTItMDEtMTIg
IEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFtDaG9taXVtXSBSZXNvdXJjZXMgbG9hZGVkIHdpdGggMzA0IHN0YXR1cyBjb2Rl
IGhhdmUgcmVjZWl2aW5nIHRpbWUgb2YgMTUwMDAgZGF5cyBpbiBuZXR3b3JrIHBhbmVsLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEwNDg4OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yODUsOSArMjg1LDkgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVs
ZShjbwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmFtaWx5TGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGZhbWlseUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICBTdHJp
bmcgZmFtaWx5TmFtZTsKLSAgICAgICAgaWYgKGl0ZW0tPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykKKyAgICAgICAgaWYgKGl0ZW0tPmlzU3RyaW5nKCkp
CiAgICAgICAgICAgICBmYW1pbHlOYW1lID0gc3RhdGljX2Nhc3Q8Rm9udEZhbWlseVZhbHVlKj4o
aXRlbSktPmZhbWlseU5hbWUoKTsKLSAgICAgICAgZWxzZSBpZiAoaXRlbS0+cHJpbWl0aXZlVHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpIHsKKyAgICAgICAgZWxzZSBpZiAo
aXRlbS0+aXNJZGVudCgpKSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSB0aGUgcmF3
IHRleHQgZm9yIGFsbCB0aGUgZ2VuZXJpYyBmYW1pbHkgdHlwZXMsIHNpbmNlIEBmb250LWZhY2Ug
aXMgYSB3YXkgb2YgYWN0dWFsbHkKICAgICAgICAgICAgIC8vIGRlZmluaW5nIHdoYXQgZm9udCB0
byB1c2UgZm9yIHRob3NlIHR5cGVzLgogICAgICAgICAgICAgU3RyaW5nIGZhbWlseU5hbWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAxMDQ4
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3Bz
KEdyYWRpZW50CiAgICAgICAgICAgICBDb2xvciBjb2xvciA9IHJlbmRlcmVyLT5kb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yKCktPmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKHN0b3AubV9jb2xvci5n
ZXQoKSk7CiAKICAgICAgICAgICAgIGZsb2F0IG9mZnNldDsKLSAgICAgICAgICAgIGlmIChzdG9w
Lm1fcG9zaXRpb24tPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpCisgICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc1BlcmNlbnRhZ2Uo
KSkKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwpAQCAtMTUwLDEwICsxNTAsOSBA
QCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50CiAgICAgICAgIHN0b3Bz
W2ldLmNvbG9yID0gcmVuZGVyZXItPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Y29sb3JG
cm9tUHJpbWl0aXZlVmFsdWUoc3RvcC5tX2NvbG9yLmdldCgpKTsKIAogICAgICAgICBpZiAoc3Rv
cC5tX3Bvc2l0aW9uKSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHN0b3AubV9wb3NpdGlvbi0+
cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlvbi0+aXNQ
ZXJjZW50YWdlKCkpCiAgICAgICAgICAgICAgICAgc3RvcHNbaV0ub2Zmc2V0ID0gc3RvcC5tX3Bv
c2l0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkg
LyAxMDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlw
ZUxlbmd0aCh0eXBlKSkgeworICAgICAgICAgICAgZWxzZSBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5p
c0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoID0gc3RvcC5tX3Bvc2l0
aW9uLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCBzdHlsZS0+ZWZmZWN0
aXZlWm9vbSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgp
IHsKICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0
YXJ0IC0gZ3JhZGllbnRFbmQpOwpAQCAtMzYzLDMyICszNjIsMjggQEAgc3RhdGljIGZsb2F0IHBv
c2l0aW9uRnJvbVZhbHVlKENTU1ByaW1pdAogewogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZS0+ZWZmZWN0aXZlWm9vbSgpOwogCi0gICAgc3dpdGNoICh2YWx1ZS0+cHJpbWl0aXZlVHlwZSgp
KSB7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoKKyAgICBpZiAodmFs
dWUtPmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpICog
em9vbUZhY3RvcjsKIAotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
OgorICAgIGlmICh2YWx1ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZS0+
Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLmYgKiAoaXNIb3Jpem9udGFsID8gc2l6ZS53aWR0aCgpIDog
c2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQ6
Ci0gICAgICAgIHN3aXRjaCAodmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVUb3A6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwotICAg
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGlzSG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgICAgICBjYXNlIENTU1ZhbHVlQm90dG9tOgotICAgICAgICAgICAgICAg
IEFTU0VSVCghaXNIb3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS5oZWln
aHQoKTsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVSaWdodDoKLSAgICAgICAgICAgICAgICBB
U1NFUlQoaXNIb3Jpem9udGFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZS53aWR0aCgp
OwotICAgICAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gdmFsdWUtPmNvbXB1
dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOworICAgIHN3aXRj
aCAodmFsdWUtPmdldElkZW50KCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlVG9wOgorICAgICAgICBB
U1NFUlQoIWlzSG9yaXpvbnRhbCk7CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgQ1NTVmFs
dWVMZWZ0OgorICAgICAgICBBU1NFUlQoaXNIb3Jpem9udGFsKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgY2FzZSBDU1NWYWx1ZUJvdHRvbToKKyAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwp
OworICAgICAgICByZXR1cm4gc2l6ZS5oZWlnaHQoKTsKKyAgICBjYXNlIENTU1ZhbHVlUmlnaHQ6
CisgICAgICAgIEFTU0VSVChpc0hvcml6b250YWwpOworICAgICAgICByZXR1cm4gc2l6ZS53aWR0
aCgpOwogICAgIH0KKworICAgIHJldHVybiB2YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5
bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiB9CiAKIEZsb2F0UG9pbnQgQ1NTR3JhZGllbnRW
YWx1ZTo6Y29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCwgQ1NTUHJpbWl0
aXZlVmFsdWUqIHNlY29uZCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtNDE2LDggKzQxMSw3IEBAIGJvb2wgQ1NTR3Jh
ZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb24KICAgICAgICAgaWYgKCFzdG9wLm1fcG9zaXRp
b24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1bnNpZ25lZCBzaG9ydCB1bml0
VHlwZSA9IHN0b3AubV9wb3NpdGlvbi0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAodW5p
dFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVMgfHwgdW5pdFR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FWFMgfHwgdW5pdFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SRU1TKQorICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc0ZvbnRSZWxhdGl2ZUxlbmd0
aCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjQwLDkgKzYzNCw5
IEBAIGZsb2F0IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OnJlc29sdmVSYWQKICAgICBmbG9hdCB6
b29tRmFjdG9yID0gc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIGZsb2F0IHJlc3VsdCA9
IDA7Ci0gICAgaWYgKHJhZGl1cy0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSAgLy8gQ2FuIHRoZSByYWRpdXMgYmUgYSBwZXJjZW50YWdlPworICAgIGlm
IChyYWRpdXMtPmlzTnVtYmVyKCkpIC8vIENhbiB0aGUgcmFkaXVzIGJlIGEgcGVyY2VudGFnZT8K
ICAgICAgICAgcmVzdWx0ID0gcmFkaXVzLT5nZXRGbG9hdFZhbHVlKCkgKiB6b29tRmFjdG9yOwot
ICAgIGVsc2UgaWYgKHdpZHRoT3JIZWlnaHQgJiYgcmFkaXVzLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgIGVsc2UgaWYgKHdpZHRoT3JI
ZWlnaHQgJiYgcmFkaXVzLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgcmVzdWx0ID0gKndpZHRo
T3JIZWlnaHQgKiByYWRpdXMtPmdldEZsb2F0VmFsdWUoKSAvIDEwMDsKICAgICBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IHJhZGl1cy0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUsIHJvb3RTdHls
ZSwgem9vbUZhY3Rvcik7CkBAIC03NjEsMjkgKzc1NSwyNyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50
PiBDU1NSYWRpYWxHcmFkaWVudFZhCiAgICAgfSBlbHNlIHsKICAgICAgICAgZW51bSBHcmFkaWVu
dFNoYXBlIHsgQ2lyY2xlLCBFbGxpcHNlIH07CiAgICAgICAgIEdyYWRpZW50U2hhcGUgc2hhcGUg
PSBFbGxpcHNlOwotICAgICAgICBpZiAobV9zaGFwZSAmJiBtX3NoYXBlLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBtX3NoYXBlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQ2lyY2xlKQorICAgICAgICBpZiAobV9zaGFwZSAmJiBtX3NoYXBlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlQ2lyY2xlKQogICAgICAgICAgICAgc2hhcGUgPSBDaXJjbGU7CiAK
ICAgICAgICAgZW51bSBHcmFkaWVudEZpbGwgeyBDbG9zZXN0U2lkZSwgQ2xvc2VzdENvcm5lciwg
RmFydGhlc3RTaWRlLCBGYXJ0aGVzdENvcm5lciB9OwogICAgICAgICBHcmFkaWVudEZpbGwgZmls
bCA9IEZhcnRoZXN0Q29ybmVyOwogCi0gICAgICAgIGlmIChtX3NpemluZ0JlaGF2aW9yICYmIG1f
c2l6aW5nQmVoYXZpb3ItPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0lERU5UKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fc2l6aW5nQmVoYXZpb3ItPmdldElkZW50
KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgotICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOgotICAgICAgICAgICAgICAgIGZpbGwgPSBDbG9zZXN0U2lk
ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDbG9z
ZXN0Q29ybmVyOgotICAgICAgICAgICAgICAgIGZpbGwgPSBDbG9zZXN0Q29ybmVyOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhcnRoZXN0U2lkZToK
LSAgICAgICAgICAgICAgICBmaWxsID0gRmFydGhlc3RTaWRlOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUNvdmVyOgotICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZUZhcnRoZXN0Q29ybmVyOgotICAgICAgICAgICAgICAgIGZpbGwgPSBGYXJ0aGVzdENv
cm5lcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dp
dGNoIChtX3NpemluZ0JlaGF2aW9yID8gbV9zaXppbmdCZWhhdmlvci0+Z2V0SWRlbnQoKSA6IDAp
IHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUNvbnRhaW46CisgICAgICAgIGNhc2UgQ1NTVmFsdWVD
bG9zZXN0U2lkZToKKyAgICAgICAgICAgIGZpbGwgPSBDbG9zZXN0U2lkZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlQ2xvc2VzdENvcm5lcjoKKyAgICAgICAgICAg
IGZpbGwgPSBDbG9zZXN0Q29ybmVyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVGYXJ0aGVzdFNpZGU6CisgICAgICAgICAgICBmaWxsID0gRmFydGhlc3RTaWRlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVDb3ZlcjoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZUZhcnRoZXN0Q29ybmVyOgorICAgICAgICAgICAgZmlsbCA9IEZhcnRoZXN0
Q29ybmVyOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3cg
Y29tcHV0ZSB0aGUgZW5kIHJhZGlpIGJhc2VkIG9uIHRoZSBzZWNvbmQgcG9pbnQsIHNoYXBlIGFu
ZCBmaWxsLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgJKHJldmlz
aW9uIDEwNDg4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsMTIgKzExNiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIFVPdGhl
cgogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBpc1VuaXRUeXBlTGVuZ3RoKGludCB0eXBlKSB7
IHJldHVybiAodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBl
IDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JFTVM7IH0KKyAgICBzdGF0aWMgYm9vbCBpc1VuaXRUeXBlTGVuZ3RoKGludCB0eXBlKSB7
IHJldHVybiAodHlwZSA+IENTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NfREVHKSB8fCB0eXBl
ID09IENTU19SRU1TOyB9CiAKKyAgICBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3RoKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19FTVMgfHwg
bV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRVhTIHx8IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX1JFTVM7CisgICAgfQorICAgIGJvb2wgaXNJZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0lERU5UOyB9CiAgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIGlzVW5pdFR5cGVMZW5ndGgobV9wcmltaXRpdmVVbml0VHlwZSk7IH0KLSAgICBi
b29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Ci0gICAgYm9vbCBpc051bWJlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVI7IH0KKyAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9wcmlt
aXRpdmVVbml0VHlwZSA9PSBDU1NfTlVNQkVSOyB9CisgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19QRVJDRU5UQUdFOyB9Cisg
ICAgYm9vbCBpc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX1NUUklORzsgfQorICAgIGJvb2wgaXNVUkkoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRUeXBlID09IENTU19VUkk7IH0KKwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZUlkZW50aWZpZXIoaW50IGlkZW50aWZpZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShpZGVudGlmaWVyKSk7IH0KICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQ29sb3IodW5zaWduZWQgcmdiVmFs
dWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NQcmltaXRpdmVWYWx1ZShyZ2JWYWx1ZSkpOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAko
cmV2aXNpb24gMTA0ODg5KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwxMiArMzI5LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgZWxzZSBpZiAoYXV0b0VuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0b3ItPnN0eWxlKCks
IExlbmd0aCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1p
dGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+aXNMZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIExlbmd0aCBsZW5ndGggPSBw
cmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBz
ZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKTsKICAgICAgICAgICAgICAgICBsZW5ndGguc2V0UXVpcmsocHJpbWl0aXZlVmFsdWUt
PmlzUXVpcmtWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5
bGUoKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzZWxlY3Rv
ci0+c3R5bGUoKSwgTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODUsMTEgKzM4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICAgICAgTGVuZ3RoIHJhZGl1c1dpZHRoOwogICAgICAgICBMZW5ndGggcmFkaXVzSGVpZ2h0
OwotICAgICAgICBpZiAocGFpci0+Zmlyc3QoKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAgICAgICAgaWYgKHBhaXItPmZpcnN0KCktPmlz
UGVyY2VudGFnZSgpKQogICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgocGFpci0+Zmly
c3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHJhZGl1c1dpZHRoID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhG
b3JMZW5ndGgsIHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8aW50PihzZWxlY3Rvci0+c3R5
bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOwotICAgICAgICBpZiAocGFpci0+c2Vjb25kKCktPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAg
ICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICByYWRp
dXNIZWlnaHQgPSBMZW5ndGgocGFpci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5ndGgobWF4
KGludE1pbkZvckxlbmd0aCwgbWluKGludE1heEZvckxlbmd0aCwgcGFpci0+c2Vjb25kKCktPmNv
bXB1dGVMZW5ndGg8aW50PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50
U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpKSwgRml4ZWQpOwpA
QCAtNjY5LDEyICs2NjgsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAmJiAoaWRlbnQgPT0gQ1NT
VmFsdWVMYXJnZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVTbWFsbGVyKSk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFyZW50
SXNBYnNvbHV0ZVNpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8fCAodHlwZSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdHlwZSAhPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmJiB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhT
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHR5
cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIShwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50
YWdlKCkgfHwgcHJpbWl0aXZlVmFsdWUtPmlzRm9udFJlbGF0aXZlTGVuZ3RoKCkpKTsKICAgICAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKICAgICAgICAgICAgICAgICBz
aXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHNlbGVjdG9yLT5wYXJl
bnRTdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCAxLjAsIHRydWUpOwogICAg
ICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQpAQCAtMTAy
MywyMSArMTAxOCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAgICAgICAgaW50IHR5cGUgPSBwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICh0eXBlID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CisgICAgICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc1VSSSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIENT
U0N1cnNvckltYWdlVmFsdWUqIGltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZSo+KHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+
dXBkYXRlSWZTVkdDdXJzb3JJc1VzZWQoc2VsZWN0b3ItPmVsZW1lbnQoKSkpIC8vIEVsZW1lbnRz
IHdpdGggU1ZHIGN1cnNvcnMgYXJlIG5vdCBhbGxvd2VkIHRvIHNoYXJlIHN0eWxlLgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRVbmlxdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5hZGRDdXJzb3Ioc2VsZWN0
b3ItPmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBp
bWFnZS0+aG90U3BvdCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzSWRlbnQoKSkKICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAgICAgICAgICAgaW50
IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYg
KHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBzZWxlY3Rvci0+c3R5bGUo
KS0+Y3Vyc29yKCkgIT0gRUN1cnNvcigqcHJpbWl0aXZlVmFsdWUpKQorICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc0lkZW50KCkgJiYgc2VsZWN0b3ItPnN0eWxlKCktPmN1cnNvcigp
ICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKICAgICAgICAgICAgICAgICBzZWxlY3Rvci0+
c3R5bGUoKS0+c2V0Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMjM2LDkgKzEyMjksOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBl
ID0gUEFHRV9TSVpFX1JFU09MVkVEOwogICAgICAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0g
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwg
c2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CiAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXpl
VHlwZSA9IFBBR0VfU0laRV9BVVRPOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEz
MDgsNyArMTMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpIHsKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBzZWxlY3Rvci0+c3R5bGUo
KS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKICAgICAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01h
cmtDdXN0b20pOwogICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFRleHRFbXBoYXNp
c0N1c3RvbU1hcmsocHJpbWl0aXZlVmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkpOwpAQCAtMTU1NSwx
MSArMTU0OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCBkb2Nab29tID0gc2VsZWN0
b3ItPmRvY3VtZW50KCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnpvb20oKTsKICAgICAgICAgICAg
IHNlbGVjdG9yLT5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwogICAgICAgICAgICAgc2VsZWN0
b3ItPnNldFpvb20oZG9jWm9vbSk7Ci0gICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsK
KyAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpIHsKICAg
ICAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzZWxlY3Rvcik7CiAgICAgICAgICAgICBpZiAo
ZmxvYXQgcGVyY2VudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpCiAgICAgICAg
ICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20ocGVyY2VudCAvIDEwMC4wZik7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c051bWJlcigpKSB7CiAgICAgICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc2VsZWN0b3IpOwog
ICAgICAgICAgICAgaWYgKGZsb2F0IG51bWJlciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnNldFpvb20obnVtYmVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>