<?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>70796</bug_id>
          
          <creation_ts>2011-10-24 19:35:21 -0700</creation_ts>
          <short_desc>flexbox flexing implementation should match the spec</short_desc>
          <delta_ts>2012-03-22 14:46:20 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>62048</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>hyatt</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>489846</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-10-24 19:35:21 -0700</bug_when>
    <thetext>It should be updated shortly with normative text: http://dev.w3.org/csswg/css3-flexbox/#layout-algorithm. At the minimum, we&apos;ll certainly need to change how we handle min/max size constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506108</commentid>
    <comment_count>1</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-18 15:13:42 -0800</bug_when>
    <thetext>The spec hasn&apos;t been updated, but the current thinking is here:
http://lists.w3.org/Archives/Public/www-style/2011Oct/0533.html

With a JS implementation here:
http://www.xanthir.com/etc/flexplay/test.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584593</commentid>
    <comment_count>2</comment_count>
      <attachid>133106</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 13:48:10 -0700</bug_when>
    <thetext>Created attachment 133106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585551</commentid>
    <comment_count>3</comment_count>
      <attachid>133309</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 11:55:08 -0700</bug_when>
    <thetext>Created attachment 133309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585553</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 11:56:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=133309) [details]
&gt; Patch

Rebase to ToT and drop m_ from struct member variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585577</commentid>
    <comment_count>5</comment_count>
      <attachid>133309</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-22 12:10:03 -0700</bug_when>
    <thetext>Comment on attachment 133309
Patch

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

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:787
&gt; +            Length childMaxWidth = isHorizontalFlow() ? child-&gt;style()-&gt;maxWidth() : child-&gt;style()-&gt;maxHeight();
&gt; +            Length childMinWidth = isHorizontalFlow() ? child-&gt;style()-&gt;minWidth() : child-&gt;style()-&gt;minHeight();

If you move these into adjustFlexSizeForMinAndMax, then you could use adjustFlexSizeForMinAndMax to replace lines 716-722 of computeNextFlexLine as well.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:798
&gt; +        childSizes.append(childSize);

Nit: You could move this to replace line 778 and 790. Then you would only need the childSize variable in the else clause. Seems a bit cleaner to me.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:805
&gt; +    if (!totalViolation)
&gt; +        return true;
&gt; +
&gt; +    freezeViolations(totalViolation &lt; 0 ? maxViolations : minViolations, availableFreeSpace, totalPositiveFlexibility, totalNegativeFlexibility, inflexibleItems);
&gt; +    return false;

You could write this as:
if (totalViolation)
    freezeViolations(...);
return !totalViolation

Not sure that&apos;s better though. It&apos;s fewer lines of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585642</commentid>
    <comment_count>6</comment_count>
      <attachid>133333</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 13:32:50 -0700</bug_when>
    <thetext>Created attachment 133333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585643</commentid>
    <comment_count>7</comment_count>
      <attachid>133333</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-22 13:33:24 -0700</bug_when>
    <thetext>Comment on attachment 133333
Patch

I made all the changes (it looks much better).  I&apos;m going to let the bots chew through this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585721</commentid>
    <comment_count>8</comment_count>
      <attachid>133333</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 14:46:15 -0700</bug_when>
    <thetext>Comment on attachment 133333
Patch

Clearing flags on attachment: 133333

Committed r111767: &lt;http://trac.webkit.org/changeset/111767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585722</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 14:46:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133106</attachid>
            <date>2012-03-21 13:48:10 -0700</date>
            <delta_ts>2012-03-22 11:55:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70796-20120321134823.patch</filename>
            <type>text/plain</type>
            <size>12744</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY4Y2IwODE2MjVmOGVi
ZTBkMzkxYmZiOGFlM2QwMDgyZmMzZTRhNC4uYjM0MWM0NjZhZGZiOGI1YWE2YWY1MmY2ZmMxNjJj
ZWQxMmY0ZDgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTIxICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgZmxleGJveCBmbGV4aW5nIGlt
cGxlbWVudGF0aW9uIHNob3VsZCBtYXRjaCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCB0aGUgYWxnb3JpdGhtIGluIHRoZSBzcGVj
LiBIYW5kbGluZyBtaW4vbWF4IGNvbnN0cmFpbnRzIGFyZSBzbGlnaHRseSBpbXByb3ZlZC4gCisg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtZmxleGJveC8jcmVzb2x2ZS10aGUt
ZmxleGlibGUtbGVuZ3RocworCisgICAgICAgIE5ldyB0ZXN0IGNhc2VzIGluIGNzczMvZmxleGJv
eC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0bWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RmxleFNpemVGb3JN
aW5BbmRNYXgpOiBTdGVwIDUgb2YgcmVzb2x2aW5nIGZsZXhpYmxlIGxlbmd0aHMuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRp
b246OlZpb2xhdGlvbik6CisgICAgICAgIChSZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmcmVlemVWaW9sYXRpb25zKTog
VXNlZCBieSBzdGVwIDYuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVz
b2x2ZUZsZXhpYmxlTGVuZ3Rocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94Lmg6CisKIDIwMTItMDMtMjEgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBh
bmQgR0xfQ0hST01JVU1fY29tbWFuZF9idWZmZXJfcXVlcnkgc3VwcG9ydC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IGFhNTNjMTRmZDgz
ODk4ZWY3YTIwYTZmMWNjNDE5MmNkOTMzNzM3NDIuLmVjNDg5Njk5ZjY5NWU4YTIzN2E3NmU1YWRh
NzM5OGUyZTQ2MDc3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcApAQCAtNzQ5LDEyICs3NDksNDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJv
eDo6Y29tcHV0ZU5leHRGbGV4TGluZShGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIE9yZGVy
ZWQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIExheW91dFVuaXQgYWRqdXN0RmxleFNp
emVGb3JNaW5BbmRNYXgoY29uc3QgTGVuZ3RoJiBtYXgsIGNvbnN0IExlbmd0aCYgbWluLCBMYXlv
dXRVbml0IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50LCBMYXlvdXRVbml0IGNoaWxkU2l6
ZSkKK3sKKyAgICBpZiAobWF4LmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRTaXplID4gdmFsdWVGb3JM
ZW5ndGgobWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpCisgICAgICAgIGNoaWxk
U2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQp
OworICAgIGlmIChtaW4uaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFNpemUgPCB2YWx1ZUZvckxlbmd0
aChtaW4sIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkKKyAgICAgICAgY2hpbGRTaXpl
ID0gdmFsdWVGb3JMZW5ndGgobWluLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCk7Cisg
ICAgcmV0dXJuIGNoaWxkU2l6ZTsKK30KKworc3RydWN0IFJlbmRlckZsZXhpYmxlQm94OjpWaW9s
YXRpb24geworICAgIFZpb2xhdGlvbihSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxk
U2l6ZSkKKyAgICAgICAgOiBtX2NoaWxkKGNoaWxkKQorICAgICAgICAsIG1fY2hpbGRTaXplKGNo
aWxkU2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVuZGVyQm94KiBtX2NoaWxkOworICAgIExh
eW91dFVuaXQgbV9jaGlsZFNpemU7Cit9OworCit2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpmcmVl
emVWaW9sYXRpb25zKGNvbnN0IFdURjo6VmVjdG9yPFZpb2xhdGlvbj4mIHZpb2xhdGlvbnMsIExh
eW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJp
bGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVt
U2l6ZSYgaW5mbGV4aWJsZUl0ZW1zKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlv
bGF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gdmlvbGF0
aW9uc1tpXS5tX2NoaWxkOworICAgICAgICBMYXlvdXRVbml0IGNoaWxkU2l6ZSA9IHZpb2xhdGlv
bnNbaV0ubV9jaGlsZFNpemU7CisgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGlsZFNp
emUgLSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChjaGlsZCk7CisgICAg
ICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAtPSBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGls
ZCk7CisgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSAtPSBuZWdhdGl2ZUZsZXhGb3JD
aGlsZChjaGlsZCk7CisgICAgICAgIGluZmxleGlibGVJdGVtcy5zZXQoY2hpbGQsIGNoaWxkU2l6
ZSk7CisgICAgfQorfQorCiAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHJhbiB0
aGUgYWxnb3JpdGhtIGFuZCBzaXplZCB0aGUgZmxleCBpdGVtcy4KLWJvb2wgUmVuZGVyRmxleGli
bGVCb3g6OnJlc29sdmVGbGV4aWJsZUxlbmd0aHMoRmxleFNpZ24sIGNvbnN0IE9yZGVyZWRGbGV4
SXRlbUxpc3QmIGNoaWxkcmVuLCBMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0
JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxp
dHksIEluZmxleGlibGVGbGV4SXRlbVNpemUmIGluZmxleGlibGVJdGVtcywgV1RGOjpWZWN0b3I8
TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMpCitib29sIFJlbmRlckZsZXhpYmxlQm94OjpyZXNvbHZl
RmxleGlibGVMZW5ndGhzKEZsZXhTaWduIGZsZXhTaWduLCBjb25zdCBPcmRlcmVkRmxleEl0ZW1M
aXN0JiBjaGlsZHJlbiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90
YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJ
bmZsZXhpYmxlRmxleEl0ZW1TaXplJiBpbmZsZXhpYmxlSXRlbXMsIFdURjo6VmVjdG9yPExheW91
dFVuaXQ+JiBjaGlsZFNpemVzKQogewogICAgIGNoaWxkU2l6ZXMuY2xlYXIoKTsKIAogICAgIExh
eW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQgPSBtYWluQXhpc0NvbnRlbnRF
eHRlbnQoKTsKKyAgICBMYXlvdXRVbml0IHRvdGFsVmlvbGF0aW9uID0gMDsKKyAgICBXVEY6OlZl
Y3RvcjxWaW9sYXRpb24+IG1pblZpb2xhdGlvbnM7CisgICAgV1RGOjpWZWN0b3I8VmlvbGF0aW9u
PiBtYXhWaW9sYXRpb25zOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgUmVuZGVyQm94KiBjaGlsZCA9IGNoaWxkcmVuW2ldOwogICAg
ICAgICBpZiAoY2hpbGQtPmlzUG9zaXRpb25lZCgpKSB7CkBAIC03NjIsNDAgKzc5NywzNiBAQCBi
b29sIFJlbmRlckZsZXhpYmxlQm94OjpyZXNvbHZlRmxleGlibGVMZW5ndGhzKEZsZXhTaWduLCBj
b25zdCBPcmRlcmVkRmxleEl0ZW1MaQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZTsKKyAgICAgICAgTGF5b3V0
VW5pdCBjaGlsZFNpemU7CiAgICAgICAgIGlmIChpbmZsZXhpYmxlSXRlbXMuY29udGFpbnMoY2hp
bGQpKQotICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gaW5mbGV4aWJsZUl0ZW1zLmdl
dChjaGlsZCk7CisgICAgICAgICAgICBjaGlsZFNpemUgPSBpbmZsZXhpYmxlSXRlbXMuZ2V0KGNo
aWxkKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBw
cmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChjaGlsZCk7Ci0gICAgICAgICAg
ICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlID4gMCAmJiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkg
PiAwKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYoYXZh
aWxhYmxlRnJlZVNwYWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3Np
dGl2ZUZsZXhpYmlsaXR5KTsKLQotICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxN
YXhXaWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgp
IDogY2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChjaGls
ZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA+IHZh
bHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1heFdpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVu
dEV4dGVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gdmFs
dWVGb3JMZW5ndGgoY2hpbGRMb2dpY2FsTWF4V2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlRnJlZVNwYWNlIC09IGNoaWxk
UHJlZmVycmVkU2l6ZSAtIHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKGNo
aWxkKTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5IC09IHBv
c2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKLQotICAgICAgICAgICAgICAgICAgICBpbmZsZXhp
YmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFByZWZlcnJlZFNpemUpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
IGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPCAwICYmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSA+
IDApIHsKLSAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFp
bGFibGVGcmVlU3BhY2UgKiBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0
aXZlRmxleGliaWxpdHkpOwotCi0gICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNhbE1p
bldpZHRoID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkg
OiBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxk
TG9naWNhbE1pbldpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplIDwgdmFs
dWVGb3JMZW5ndGgoY2hpbGRMb2dpY2FsTWluV2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50
RXh0ZW50KSkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSB2YWx1
ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNaW5XaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRF
eHRlbnQpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgKz0gcHJlZmVy
cmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoY2hpbGQpIC0gY2hpbGRQcmVmZXJyZWRT
aXplOwotICAgICAgICAgICAgICAgICAgICB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgLT0gbmVn
YXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwotCi0gICAgICAgICAgICAgICAgICAgIGluZmxleGli
bGVJdGVtcy5zZXQoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBjaGlsZFNpemUgPSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGls
ZChjaGlsZCk7CisgICAgICAgICAgICBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlID4gMCAmJiB0b3Rh
bFBvc2l0aXZlRmxleGliaWxpdHkgPiAwICYmIGZsZXhTaWduID09IFBvc2l0aXZlRmxleGliaWxp
dHkpCisgICAgICAgICAgICAgICAgY2hpbGRTaXplICs9IGxyb3VuZGYoYXZhaWxhYmxlRnJlZVNw
YWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA8IDAgJiYgdG90
YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ID4gMCAgJiYgZmxleFNpZ24gPT0gTmVnYXRpdmVGbGV4aWJp
bGl0eSkKKyAgICAgICAgICAgICAgICBjaGlsZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVl
U3BhY2UgKiBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxleGli
aWxpdHkpOworCisgICAgICAgICAgICBMZW5ndGggY2hpbGRNYXhXaWR0aCA9IGlzSG9yaXpvbnRh
bEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1h
eEhlaWdodCgpOworICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTWluV2lkdGggPSBpc0hvcml6b250
YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5t
aW5IZWlnaHQoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgYWRqdXN0ZWRDaGlsZFNpemUgPSBh
ZGp1c3RGbGV4U2l6ZUZvck1pbkFuZE1heChjaGlsZE1heFdpZHRoLCBjaGlsZE1pbldpZHRoLCBm
bGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCwgY2hpbGRTaXplKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgdmlvbGF0aW9uID0gYWRqdXN0ZWRDaGlsZFNpemUgLSBjaGlsZFNpemU7CisgICAg
ICAgICAgICBjaGlsZFNpemUgPSBhZGp1c3RlZENoaWxkU2l6ZTsKKworICAgICAgICAgICAgaWYg
KHZpb2xhdGlvbiA+IDApCisgICAgICAgICAgICAgICAgbWluVmlvbGF0aW9ucy5hcHBlbmQoVmlv
bGF0aW9uKGNoaWxkLCBjaGlsZFNpemUpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZpb2xhdGlv
biA8IDApCisgICAgICAgICAgICAgICAgbWF4VmlvbGF0aW9ucy5hcHBlbmQoVmlvbGF0aW9uKGNo
aWxkLCBjaGlsZFNpemUpKTsKKyAgICAgICAgICAgIHRvdGFsVmlvbGF0aW9uICs9IHZpb2xhdGlv
bjsKICAgICAgICAgfQotICAgICAgICBjaGlsZFNpemVzLmFwcGVuZChjaGlsZFByZWZlcnJlZFNp
emUpOworICAgICAgICBjaGlsZFNpemVzLmFwcGVuZChjaGlsZFNpemUpOwogICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmICghdG90YWxWaW9sYXRpb24pCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgZnJlZXplVmlvbGF0aW9ucyh0b3RhbFZpb2xhdGlvbiA8IDAgPyBtYXhWaW9s
YXRpb25zIDogbWluVmlvbGF0aW9ucywgYXZhaWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZl
RmxleGliaWxpdHksIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgaW5mbGV4aWJsZUl0ZW1zKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBMYXlvdXRVbml0IGluaXRpYWxQYWNraW5n
T2Zmc2V0KExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBFRmxleFBhY2sgZmxleFBhY2ss
IHNpemVfdCBudW1iZXJPZkNoaWxkcmVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaAppbmRleCAyYTYzMDIxZjE0MmY0M2IxNzRiMGU2N2I4NmZmYzViODI0
ZWZhMTdhLi5mOTVjODIyZGE3OWJhOTM4MmRjMDFkNTBhZThhMWFmMmI3MDFmMjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNjEsNiArNjEs
NyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJveCos
IExheW91dFVuaXQ+IEluZmxleGlibGVGbGV4SXRlbVNpemU7CiAgICAgdHlwZWRlZiBXVEY6OlZl
Y3RvcjxSZW5kZXJCb3gqPiBPcmRlcmVkRmxleEl0ZW1MaXN0OwogCisgICAgc3RydWN0IFZpb2xh
dGlvbjsKICAgICBzdHJ1Y3QgV3JhcFJldmVyc2VDb250ZXh0OwogCiAgICAgYm9vbCBoYXNPcnRo
b2dvbmFsRmxvdyhSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKQEAgLTExMSw3ICsxMTIsMTAgQEAg
cHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGxpbmVCcmVha0xlbmd0aCgpOwogICAgIGJvb2wgY29t
cHV0ZU5leHRGbGV4TGluZShGbGV4T3JkZXJJdGVyYXRvciYsIE9yZGVyZWRGbGV4SXRlbUxpc3Qm
IG9yZGVyZWRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQsIGZs
b2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGli
aWxpdHksIExheW91dFVuaXQmIG1pbk1heEFwcGxpZWRNYWluQXhpc0V4dGVudCk7CiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlQXZhaWxhYmxlRnJlZVNwYWNlKExheW91dFVuaXQgcHJlZmVycmVkTWFp
bkF4aXNFeHRlbnQpOworCiAgICAgYm9vbCByZXNvbHZlRmxleGlibGVMZW5ndGhzKEZsZXhTaWdu
LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNw
YWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2
ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXplJiwgV1RGOjpWZWN0b3I8TGF5b3V0
VW5pdD4mIGNoaWxkU2l6ZXMpOworICAgIHZvaWQgZnJlZXplVmlvbGF0aW9ucyhjb25zdCBXVEY6
OlZlY3RvcjxWaW9sYXRpb24+JiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9h
dCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmls
aXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXplJik7CisKICAgICB2b2lkIHNldExvZ2ljYWxPdmVy
cmlkZVNpemUoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUp
OwogICAgIHZvaWQgcHJlcGFyZUNoaWxkRm9yUG9zaXRpb25lZExheW91dChSZW5kZXJCb3gqIGNo
aWxkLCBMYXlvdXRVbml0IG1haW5BeGlzT2Zmc2V0LCBMYXlvdXRVbml0IGNyb3NzQXhpc09mZnNl
dCk7CiAgICAgdm9pZCBsYXlvdXRBbmRQbGFjZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhp
c09mZnNldCwgY29uc3QgT3JkZXJlZEZsZXhJdGVtTGlzdCYsIGNvbnN0IFdURjo6VmVjdG9yPExh
eW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMzkzYTQyN2JjZGM2YTdmYzExOTdjYjFiODM2YzljYWRlOWYyZjRhYS4uZTI5N2FkMDlm
MjkwMzczMTEzYjk1MTFkMTI5MzI1NmJjOGQ2MWVmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTAzLTIxICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgZmxl
eGJveCBmbGV4aW5nIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYXRjaCB0aGUgc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzczMvZmxleGJveC9m
bGV4LWFsZ29yaXRobS1taW4tbWF4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBjc3MzL2ZsZXhi
b3gvZmxleC1hbGdvcml0aG0tbWluLW1heC5odG1sOgorCiAyMDEyLTAzLTIxICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEV4
dHJhY3QgV2ViSW5zcGVjdG9yLlVJQnJlYWtwb2ludCBmcm9tIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3JpdGht
LW1pbi1tYXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxn
b3JpdGhtLW1pbi1tYXgtZXhwZWN0ZWQudHh0CmluZGV4IGNhMmNkZDY4Yzk0MGE2NzYwYWE0Zjc3
NTJjNGVlYWM3ZmEwYjM5YjUuLjdiMmRhYjhlYTEwZjVlMmNmM2U2OWY3MjZjZGI4ZDI0Y2NhOWI2
OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1t
aW4tbWF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1h
bGdvcml0aG0tbWluLW1heC1leHBlY3RlZC50eHQKQEAgLTUsMyArNSw4IEBAIFBBU1MKIFBBU1MK
IFBBU1MKIFBBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0bWwgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1hbGdvcml0aG0tbWluLW1heC5odG1sCmluZGV4IDBi
NjYyODRjOTcxMTI4NjVjNGU3YzQyNTViMDUxNmVkNWUwMDdlODMuLmZhNTc1YjBkYjA4MTFlZmYw
NDNiMWJjMTJiYjA4MmY5ODc0NjdlNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZmxl
eGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9m
bGV4Ym94L2ZsZXgtYWxnb3JpdGhtLW1pbi1tYXguaHRtbApAQCAtNzUsNSArNzUsMzEgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRo
PSIxMDAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEgMCA1MCUpOyBtYXgtd2lkdGg6IDEw
MHB4Ij48L2Rpdj4KIDwvZGl2PgogCis8ZGl2IGNsYXNzPSJmbGV4Ym94IiBzdHlsZT0id2lkdGg6
IDIwMHB4Ij4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNTAiIHN0eWxlPSJ3aWR0aDog
LXdlYmtpdC1mbGV4KDEpOyBtaW4td2lkdGg6IDE1MHB4Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSI1MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSk7IG1heC13aWR0
aDogOTBweCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxleGJveCIgc3R5bGU9Indp
ZHRoOiAyMDBweCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iMTUwIiBzdHlsZT0id2lk
dGg6IC13ZWJraXQtZmxleCgxKTsgbWluLXdpZHRoOiAxMjBweCI+PC9kaXY+CisgIDxkaXYgZGF0
YS1leHBlY3RlZC13aWR0aD0iNTAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEpOyBtYXgt
d2lkdGg6IDUwcHgiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsZXhib3giIHN0eWxl
PSJ3aWR0aDogMjAwcHgiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgc3R5bGU9
IndpZHRoOiAtd2Via2l0LWZsZXgoMSk7IG1pbi13aWR0aDogMTAwcHgiPjwvZGl2PgorICA8ZGl2
IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjEwMCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMyk7
Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbGV4Ym94IiBzdHlsZT0id2lkdGg6IDIw
MHB4Ij4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNTAiIHN0eWxlPSJ3aWR0aDogLXdl
YmtpdC1mbGV4KDEgNTBweCk7IG1pbi13aWR0aDogMTAwcHgiPjwvZGl2PgorICA8ZGl2IGRhdGEt
ZXhwZWN0ZWQtd2lkdGg9IjUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxIDEwMHB4KTsg
bWF4LXdpZHRoOiA1MHB4Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbGV4Ym94Ij4K
KyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI4MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZs
ZXgoMSkiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE2MCIgc3R5bGU9Indp
ZHRoOiAtd2Via2l0LWZsZXgoMikiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9
IjM2MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSk7IG1pbi13aWR0aDogMzYwcHgiPjwv
ZGl2PgorPC9kaXY+CisKIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133309</attachid>
            <date>2012-03-22 11:55:08 -0700</date>
            <delta_ts>2012-03-22 13:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70796-20120322115522.patch</filename>
            <type>text/plain</type>
            <size>12883</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVkN2E0NTY3Mzc5ZDM3
ZmVmN2NiYTE1NDQwYWM4NTNhNGFhYTAzYy4uNjgyYjAyOTFiNTAxMTc0NTAyNmQ4NzRjMGM4NzYy
MzM4M2JhNmMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTAzLTIyICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgZmxleGJveCBmbGV4aW5nIGlt
cGxlbWVudGF0aW9uIHNob3VsZCBtYXRjaCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXRjaCB0aGUgYWxnb3JpdGhtIGluIHRoZSBzcGVj
LiBIYW5kbGluZyBtaW4vbWF4IGNvbnN0cmFpbnRzIGFyZSBzbGlnaHRseSBpbXByb3ZlZC4gCisg
ICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtZmxleGJveC8jcmVzb2x2ZS10aGUt
ZmxleGlibGUtbGVuZ3RocworCisgICAgICAgIE5ldyB0ZXN0IGNhc2VzIGluIGNzczMvZmxleGJv
eC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0bWwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0RmxleFNpemVGb3JN
aW5BbmRNYXgpOiBTdGVwIDUgb2YgcmVzb2x2aW5nIGZsZXhpYmxlIGxlbmd0aHMuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRp
b246OlZpb2xhdGlvbik6CisgICAgICAgIChSZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmcmVlemVWaW9sYXRpb25zKTog
VXNlZCBieSBzdGVwIDYuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cmVz
b2x2ZUZsZXhpYmxlTGVuZ3Rocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94Lmg6CisKKzIwMTItMDMtMjIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKwog
ICAgICAgICByZWZhY3RvciBmbGV4Ym94IGluIHByZXBhcmF0aW9uIGZvciBmbGV4LWxpbmUtcGFj
awogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE4NDMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5k
ZXggZjg3Nzk4NTQzODk1YWUyNWFjOTc4YzYzM2VlOTA3OWM3MzFlOGZhNC4uOGI4ODgyMGY1YmI4
ODY2NzdmOTgzYWE1ZmQ3NGU5N2M4NDA3YjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0xMTcsNiArMTE3LDE3IEBAIHN0cnVjdCBS
ZW5kZXJGbGV4aWJsZUJveDo6TGluZUNvbnRleHQgewogICAgIExheW91dFVuaXQgbWF4QXNjZW50
OwogfTsKIAorc3RydWN0IFJlbmRlckZsZXhpYmxlQm94OjpWaW9sYXRpb24geworICAgIFZpb2xh
dGlvbihSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkU2l6ZSkKKyAgICAgICAgOiBj
aGlsZChjaGlsZCkKKyAgICAgICAgLCBjaGlsZFNpemUoY2hpbGRTaXplKQorICAgIHsKKyAgICB9
CisKKyAgICBSZW5kZXJCb3gqIGNoaWxkOworICAgIExheW91dFVuaXQgY2hpbGRTaXplOworfTsK
KwogCiBSZW5kZXJGbGV4aWJsZUJveDo6UmVuZGVyRmxleGlibGVCb3goTm9kZSogbm9kZSkKICAg
ICA6IFJlbmRlckJsb2NrKG5vZGUpCkBAIC03MjUsMTIgKzczNiwzNiBAQCBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlTmV4dEZsZXhMaW5lKEZsZXhPcmRlckl0ZXJhdG9yJiBpdGVyYXRv
ciwgT3JkZXJlZAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgTGF5b3V0VW5pdCBhZGp1
c3RGbGV4U2l6ZUZvck1pbkFuZE1heChjb25zdCBMZW5ndGgmIG1heCwgY29uc3QgTGVuZ3RoJiBt
aW4sIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQsIExheW91dFVuaXQg
Y2hpbGRTaXplKQoreworICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFNpemUgPiB2
YWx1ZUZvckxlbmd0aChtYXgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KSkKKyAgICAg
ICAgY2hpbGRTaXplID0gdmFsdWVGb3JMZW5ndGgobWF4LCBmbGV4Ym94QXZhaWxhYmxlQ29udGVu
dEV4dGVudCk7CisgICAgaWYgKG1pbi5pc1NwZWNpZmllZCgpICYmIGNoaWxkU2l6ZSA8IHZhbHVl
Rm9yTGVuZ3RoKG1pbiwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKQorICAgICAgICBj
aGlsZFNpemUgPSB2YWx1ZUZvckxlbmd0aChtaW4sIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0
ZW50KTsKKyAgICByZXR1cm4gY2hpbGRTaXplOworfQorCit2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpmcmVlemVWaW9sYXRpb25zKGNvbnN0IFdURjo6VmVjdG9yPFZpb2xhdGlvbj4mIHZpb2xhdGlv
bnMsIExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZs
ZXhJdGVtU2l6ZSYgaW5mbGV4aWJsZUl0ZW1zKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmlvbGF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0g
dmlvbGF0aW9uc1tpXS5jaGlsZDsKKyAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFNpemUgPSB2aW9s
YXRpb25zW2ldLmNoaWxkU2l6ZTsKKyAgICAgICAgYXZhaWxhYmxlRnJlZVNwYWNlIC09IGNoaWxk
U2l6ZSAtIHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKTsKKyAg
ICAgICAgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5IC09IHBvc2l0aXZlRmxleEZvckNoaWxkKGNo
aWxkKTsKKyAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5IC09IG5lZ2F0aXZlRmxleEZv
ckNoaWxkKGNoaWxkKTsKKyAgICAgICAgaW5mbGV4aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRT
aXplKTsKKyAgICB9Cit9CisKIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzdWNjZXNzZnVsbHkgcmFu
IHRoZSBhbGdvcml0aG0gYW5kIHNpemVkIHRoZSBmbGV4IGl0ZW1zLgotYm9vbCBSZW5kZXJGbGV4
aWJsZUJveDo6cmVzb2x2ZUZsZXhpYmxlTGVuZ3RocyhGbGV4U2lnbiwgY29uc3QgT3JkZXJlZEZs
ZXhJdGVtTGlzdCYgY2hpbGRyZW4sIExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxv
YXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJp
bGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYgaW5mbGV4aWJsZUl0ZW1zLCBXVEY6OlZlY3Rv
cjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcykKK2Jvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJlc29s
dmVGbGV4aWJsZUxlbmd0aHMoRmxleFNpZ24gZmxleFNpZ24sIGNvbnN0IE9yZGVyZWRGbGV4SXRl
bUxpc3QmIGNoaWxkcmVuLCBMYXlvdXRVbml0JiBhdmFpbGFibGVGcmVlU3BhY2UsIGZsb2F0JiB0
b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHks
IEluZmxleGlibGVGbGV4SXRlbVNpemUmIGluZmxleGlibGVJdGVtcywgV1RGOjpWZWN0b3I8TGF5
b3V0VW5pdD4mIGNoaWxkU2l6ZXMpCiB7CiAgICAgY2hpbGRTaXplcy5jbGVhcigpOwogCiAgICAg
TGF5b3V0VW5pdCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCA9IG1haW5BeGlzQ29udGVu
dEV4dGVudCgpOworICAgIExheW91dFVuaXQgdG90YWxWaW9sYXRpb24gPSAwOworICAgIFdURjo6
VmVjdG9yPFZpb2xhdGlvbj4gbWluVmlvbGF0aW9uczsKKyAgICBXVEY6OlZlY3RvcjxWaW9sYXRp
b24+IG1heFZpb2xhdGlvbnM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5z
aXplKCk7ICsraSkgewogICAgICAgICBSZW5kZXJCb3gqIGNoaWxkID0gY2hpbGRyZW5baV07CiAg
ICAgICAgIGlmIChjaGlsZC0+aXNQb3NpdGlvbmVkKCkpIHsKQEAgLTczOCw0MCArNzczLDM2IEBA
IGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJlc29sdmVGbGV4aWJsZUxlbmd0aHMoRmxleFNpZ24s
IGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRTaXplOworICAgICAgICBMYXlv
dXRVbml0IGNoaWxkU2l6ZTsKICAgICAgICAgaWYgKGluZmxleGlibGVJdGVtcy5jb250YWlucyhj
aGlsZCkpCi0gICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSBpbmZsZXhpYmxlSXRlbXMu
Z2V0KGNoaWxkKTsKKyAgICAgICAgICAgIGNoaWxkU2l6ZSA9IGluZmxleGlibGVJdGVtcy5nZXQo
Y2hpbGQpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9
IHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAg
ICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAwICYmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0
eSA+IDApIHsKLSAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihh
dmFpbGFibGVGcmVlU3BhY2UgKiBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbFBv
c2l0aXZlRmxleGliaWxpdHkpOwotCi0gICAgICAgICAgICAgICAgTGVuZ3RoIGNoaWxkTG9naWNh
bE1heFdpZHRoID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRo
KCkgOiBjaGlsZC0+c3R5bGUoKS0+bWF4SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNo
aWxkTG9naWNhbE1heFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgY2hpbGRQcmVmZXJyZWRTaXplID4g
dmFsdWVGb3JMZW5ndGgoY2hpbGRMb2dpY2FsTWF4V2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250
ZW50RXh0ZW50KSkgewotICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNpemUgPSB2
YWx1ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNYXhXaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRl
bnRFeHRlbnQpOwotICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVGcmVlU3BhY2UgLT0gY2hp
bGRQcmVmZXJyZWRTaXplIC0gcHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQo
Y2hpbGQpOwotICAgICAgICAgICAgICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgLT0g
cG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOwotCi0gICAgICAgICAgICAgICAgICAgIGluZmxl
eGlibGVJdGVtcy5zZXQoY2hpbGQsIGNoaWxkUHJlZmVycmVkU2l6ZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA8IDAgJiYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
ID4gMCkgewotICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRmKGF2
YWlsYWJsZUZyZWVTcGFjZSAqIG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsTmVn
YXRpdmVGbGV4aWJpbGl0eSk7Ci0KLSAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2Fs
TWluV2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgo
KSA6IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAoY2hp
bGRMb2dpY2FsTWluV2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPCB2
YWx1ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNaW5XaWR0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRl
bnRFeHRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9IHZh
bHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1pbldpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVu
dEV4dGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSArPSBwcmVm
ZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGlsZChjaGlsZCkgLSBjaGlsZFByZWZlcnJl
ZFNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSAtPSBu
ZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaW5mbGV4
aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNoaWxkU2l6ZSA9IHByZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNo
aWxkKGNoaWxkKTsKKyAgICAgICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAwICYmIHRv
dGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+IDAgJiYgZmxleFNpZ24gPT0gUG9zaXRpdmVGbGV4aWJp
bGl0eSkKKyAgICAgICAgICAgICAgICBjaGlsZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVl
U3BhY2UgKiBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3RhbFBvc2l0aXZlRmxleGli
aWxpdHkpOworICAgICAgICAgICAgZWxzZSBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlIDwgMCAmJiB0
b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkgPiAwICAmJiBmbGV4U2lnbiA9PSBOZWdhdGl2ZUZsZXhp
YmlsaXR5KQorICAgICAgICAgICAgICAgIGNoaWxkU2l6ZSArPSBscm91bmRmKGF2YWlsYWJsZUZy
ZWVTcGFjZSAqIG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFsTmVnYXRpdmVGbGV4
aWJpbGl0eSk7CisKKyAgICAgICAgICAgIExlbmd0aCBjaGlsZE1heFdpZHRoID0gaXNIb3Jpem9u
dGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRoKCkgOiBjaGlsZC0+c3R5bGUoKS0+
bWF4SGVpZ2h0KCk7CisgICAgICAgICAgICBMZW5ndGggY2hpbGRNaW5XaWR0aCA9IGlzSG9yaXpv
bnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCkt
Pm1pbkhlaWdodCgpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBhZGp1c3RlZENoaWxkU2l6ZSA9
IGFkanVzdEZsZXhTaXplRm9yTWluQW5kTWF4KGNoaWxkTWF4V2lkdGgsIGNoaWxkTWluV2lkdGgs
IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50LCBjaGlsZFNpemUpOworICAgICAgICAgICAg
TGF5b3V0VW5pdCB2aW9sYXRpb24gPSBhZGp1c3RlZENoaWxkU2l6ZSAtIGNoaWxkU2l6ZTsKKyAg
ICAgICAgICAgIGNoaWxkU2l6ZSA9IGFkanVzdGVkQ2hpbGRTaXplOworCisgICAgICAgICAgICBp
ZiAodmlvbGF0aW9uID4gMCkKKyAgICAgICAgICAgICAgICBtaW5WaW9sYXRpb25zLmFwcGVuZChW
aW9sYXRpb24oY2hpbGQsIGNoaWxkU2l6ZSkpOworICAgICAgICAgICAgZWxzZSBpZiAodmlvbGF0
aW9uIDwgMCkKKyAgICAgICAgICAgICAgICBtYXhWaW9sYXRpb25zLmFwcGVuZChWaW9sYXRpb24o
Y2hpbGQsIGNoaWxkU2l6ZSkpOworICAgICAgICAgICAgdG90YWxWaW9sYXRpb24gKz0gdmlvbGF0
aW9uOwogICAgICAgICB9Ci0gICAgICAgIGNoaWxkU2l6ZXMuYXBwZW5kKGNoaWxkUHJlZmVycmVk
U2l6ZSk7CisgICAgICAgIGNoaWxkU2l6ZXMuYXBwZW5kKGNoaWxkU2l6ZSk7CiAgICAgfQotICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKCF0b3RhbFZpb2xhdGlvbikKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBmcmVlemVWaW9sYXRpb25zKHRvdGFsVmlvbGF0aW9uIDwgMCA/IG1heFZp
b2xhdGlvbnMgOiBtaW5WaW9sYXRpb25zLCBhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRp
dmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBpbmZsZXhpYmxlSXRlbXMp
OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIExheW91dFVuaXQgaW5pdGlhbFBhY2tp
bmdPZmZzZXQoTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2UsIEVGbGV4UGFjayBmbGV4UGFj
aywgc2l6ZV90IG51bWJlck9mQ2hpbGRyZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4IGQ5Yjc2ZTVmN2NiYzFkMzQ2ODhjNzcyODIyYjY3YmVj
ZGI1MDZkYjYuLmQ4YTFiNjM2ZjZjYTVlYzQ2Mzc0M2RkZDE3N2Q2Yjk2MGM1MGQyMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC02Miw2ICs2
Miw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxSZW5kZXJCb3gqPiBPcmRl
cmVkRmxleEl0ZW1MaXN0OwogCiAgICAgc3RydWN0IExpbmVDb250ZXh0OworICAgIHN0cnVjdCBW
aW9sYXRpb247CiAKICAgICBib29sIGhhc09ydGhvZ29uYWxGbG93KFJlbmRlckJveCogY2hpbGQp
IGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5GbG93KCkgY29uc3Q7CkBAIC0xMTEsNyArMTEyLDEw
IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBsaW5lQnJlYWtMZW5ndGgoKTsKICAgICBib29s
IGNvbXB1dGVOZXh0RmxleExpbmUoRmxleE9yZGVySXRlcmF0b3ImLCBPcmRlcmVkRmxleEl0ZW1M
aXN0JiBvcmRlcmVkQ2hpbGRyZW4sIExheW91dFVuaXQmIHByZWZlcnJlZE1haW5BeGlzRXh0ZW50
LCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZs
ZXhpYmlsaXR5LCBMYXlvdXRVbml0JiBtaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQpOwogICAg
IExheW91dFVuaXQgY29tcHV0ZUF2YWlsYWJsZUZyZWVTcGFjZShMYXlvdXRVbml0IHByZWZlcnJl
ZE1haW5BeGlzRXh0ZW50KTsKKwogICAgIGJvb2wgcmVzb2x2ZUZsZXhpYmxlTGVuZ3RocyhGbGV4
U2lnbiwgY29uc3QgT3JkZXJlZEZsZXhJdGVtTGlzdCYsIExheW91dFVuaXQmIGF2YWlsYWJsZUZy
ZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVn
YXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYsIFdURjo6VmVjdG9yPExh
eW91dFVuaXQ+JiBjaGlsZFNpemVzKTsKKyAgICB2b2lkIGZyZWV6ZVZpb2xhdGlvbnMoY29uc3Qg
V1RGOjpWZWN0b3I8VmlvbGF0aW9uPiYsIExheW91dFVuaXQmIGF2YWlsYWJsZUZyZWVTcGFjZSwg
ZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4
aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYpOworCiAgICAgdm9pZCBzZXRMb2dpY2Fs
T3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRQcmVmZXJyZWRT
aXplKTsKICAgICB2b2lkIHByZXBhcmVDaGlsZEZvclBvc2l0aW9uZWRMYXlvdXQoUmVuZGVyQm94
KiBjaGlsZCwgTGF5b3V0VW5pdCBtYWluQXhpc09mZnNldCwgTGF5b3V0VW5pdCBjcm9zc0F4aXNP
ZmZzZXQpOwogICAgIHZvaWQgbGF5b3V0QW5kUGxhY2VDaGlsZHJlbihMYXlvdXRVbml0JiBjcm9z
c0F4aXNPZmZzZXQsIGNvbnN0IE9yZGVyZWRGbGV4SXRlbUxpc3QmLCBjb25zdCBXVEY6OlZlY3Rv
cjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcywgTGF5b3V0VW5pdCBhdmFpbGFibGVGcmVlU3BhY2Us
IFdURjo6VmVjdG9yPExpbmVDb250ZXh0PiYgbGluZUNvbnRleHRzKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YjJhNjU0
ZGQ5NjNiYTY5NTUwMjZlZWUxYWM2MWI4MTQ2NzliNGFjLi4xNjA1NjFiNDc3NGI3NmE2MGIzNjAx
ZGRjNWVlODVlMmRlNWYyZWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDMtMjIgIFRv
bnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBmbGV4Ym94IGZsZXhpbmcg
aW1wbGVtZW50YXRpb24gc2hvdWxkIG1hdGNoIHRoZSBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDc5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3JpdGht
LW1pbi1tYXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGNzczMvZmxleGJveC9mbGV4LWFsZ29y
aXRobS1taW4tbWF4Lmh0bWw6CisKIDIwMTItMDMtMjIgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PHJha3Vjb0BGcmVlQlNELm9yZz4KIAogICAgICAgICBbRUZMXSBHYXJkZW5pbmcsIGFkZCBhbmQg
dXBkYXRlIGFuaW1hdGlvbnMvLCBmYXN0L2NzcywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nz
czMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2NzczMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4LWV4cGVjdGVkLnR4dAppbmRl
eCBjYTJjZGQ2OGM5NDBhNjc2MGFhNGY3NzUyYzRlZWFjN2ZhMGIzOWI1Li43YjJkYWI4ZWExMGY1
ZTJjZjNlNjlmNzI2Y2RiOGQyNGNjYTliNjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3Mz
L2ZsZXhib3gvZmxleC1hbGdvcml0aG0tbWluLW1heC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3JpdGhtLW1pbi1tYXgtZXhwZWN0ZWQudHh0CkBA
IC01LDMgKzUsOCBAQCBQQVNTCiBQQVNTCiBQQVNTCiBQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1hbGdv
cml0aG0tbWluLW1heC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3Jp
dGhtLW1pbi1tYXguaHRtbAppbmRleCAwYjY2Mjg0Yzk3MTEyODY1YzRlN2M0MjU1YjA1MTZlZDVl
MDA3ZTgzLi5mYTU3NWIwZGIwODExZWZmMDQzYjFiYzEyYmIwODJmOTg3NDY3ZTY0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1hbGdvcml0aG0tbWluLW1heC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0
bWwKQEAgLTc1LDUgKzc1LDMxIEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAg
IDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxl
eCgxIDAgNTAlKTsgbWF4LXdpZHRoOiAxMDBweCI+PC9kaXY+CiA8L2Rpdj4KIAorPGRpdiBjbGFz
cz0iZmxleGJveCIgc3R5bGU9IndpZHRoOiAyMDBweCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13
aWR0aD0iMTUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxKTsgbWluLXdpZHRoOiAxNTBw
eCI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIHN0eWxlPSJ3aWR0aDog
LXdlYmtpdC1mbGV4KDEpOyBtYXgtd2lkdGg6IDkwcHgiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYg
Y2xhc3M9ImZsZXhib3giIHN0eWxlPSJ3aWR0aDogMjAwcHgiPgorICA8ZGl2IGRhdGEtZXhwZWN0
ZWQtd2lkdGg9IjE1MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSk7IG1pbi13aWR0aDog
MTIwcHgiPjwvZGl2PgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBzdHlsZT0id2lk
dGg6IC13ZWJraXQtZmxleCgxKTsgbWF4LXdpZHRoOiA1MHB4Ij48L2Rpdj4KKzwvZGl2PgorCis8
ZGl2IGNsYXNzPSJmbGV4Ym94IiBzdHlsZT0id2lkdGg6IDIwMHB4Ij4KKyAgPGRpdiBkYXRhLWV4
cGVjdGVkLXdpZHRoPSIxMDAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEpOyBtaW4td2lk
dGg6IDEwMHB4Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxMDAiIHN0eWxl
PSJ3aWR0aDogLXdlYmtpdC1mbGV4KDMpOyI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0i
ZmxleGJveCIgc3R5bGU9IndpZHRoOiAyMDBweCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0
aD0iMTUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxIDUwcHgpOyBtaW4td2lkdGg6IDEw
MHB4Ij48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgc3R5bGU9IndpZHRo
OiAtd2Via2l0LWZsZXgoMSAxMDBweCk7IG1heC13aWR0aDogNTBweCI+PC9kaXY+Cis8L2Rpdj4K
KworPGRpdiBjbGFzcz0iZmxleGJveCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iODAi
IHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEpIj48L2Rpdj4KKyAgPGRpdiBkYXRhLWV4cGVj
dGVkLXdpZHRoPSIxNjAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDIpIj48L2Rpdj4KKyAg
PGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIzNjAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4
KDEpOyBtaW4td2lkdGg6IDM2MHB4Ij48L2Rpdj4KKzwvZGl2PgorCiA8L2JvZHk+CiA8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133333</attachid>
            <date>2012-03-22 13:32:50 -0700</date>
            <delta_ts>2012-03-22 14:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70796-20120322133304.patch</filename>
            <type>text/plain</type>
            <size>15491</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZlZTg2NTI1ZGFjOGJl
ZDI0YWExMjc2YWZjOWIxZTUyNzdkZDVkNi4uMGQ3NGQxZDMzOTE4NzU4NjllZTljNzEzNDRiZjA2
MzUyNWU0NzI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTIyICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgZmxleGJveCBmbGV4aW5nIGlt
cGxlbWVudGF0aW9uIHNob3VsZCBtYXRjaCB0aGUgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA3OTYKKworICAgICAgICBSZXZpZXdlZCBieSBP
amFuIFZhZmFpLgorCisgICAgICAgIE1hdGNoIHRoZSBhbGdvcml0aG0gaW4gdGhlIHNwZWMuIEhh
bmRsaW5nIG1pbi9tYXggY29uc3RyYWludHMgYXJlIHNsaWdodGx5IGltcHJvdmVkLgorICAgICAg
ICBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLWZsZXhib3gvI3Jlc29sdmUtdGhlLWZsZXhp
YmxlLWxlbmd0aHMKKworICAgICAgICBOZXcgdGVzdCBjYXNlcyBpbiBjc3MzL2ZsZXhib3gvZmxl
eC1hbGdvcml0aG0tbWluLW1heC5odG1sLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdEZsZXhTaXplRm9yTWluQW5k
TWF4KTogU3RlcCA1IG9mIHJlc29sdmluZyBmbGV4aWJsZSBsZW5ndGhzLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6VmlvbGF0aW9uOjpW
aW9sYXRpb24pOgorICAgICAgICAoUmVuZGVyRmxleGlibGVCb3g6OlZpb2xhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6ZnJlZXplVmlvbGF0aW9ucyk6IFVzZWQg
Ynkgc3RlcCA2LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJlc29sdmVG
bGV4aWJsZUxlbmd0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
OgorCiAyMDEyLTAzLTIyICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZC4gV2ViRE9NIGJ1aWxkIGZpeCBhZnRlciBhcnJh
eSB0eXBlIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAppbmRleCBmODc3OTg1NDM4OTVhZTI1YWM5NzhjNjMzZWU5MDc5YzczMWU4ZmE0
Li43MWU4Y2QyZWQ1ZTAzOWVhOTQwMWE2MmE2ZmFjODkwNzk0MGFmMTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTExNyw2ICsxMTcs
MTcgQEAgc3RydWN0IFJlbmRlckZsZXhpYmxlQm94OjpMaW5lQ29udGV4dCB7CiAgICAgTGF5b3V0
VW5pdCBtYXhBc2NlbnQ7CiB9OwogCitzdHJ1Y3QgUmVuZGVyRmxleGlibGVCb3g6OlZpb2xhdGlv
biB7CisgICAgVmlvbGF0aW9uKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRTaXpl
KQorICAgICAgICA6IGNoaWxkKGNoaWxkKQorICAgICAgICAsIGNoaWxkU2l6ZShjaGlsZFNpemUp
CisgICAgeworICAgIH0KKworICAgIFJlbmRlckJveCogY2hpbGQ7CisgICAgTGF5b3V0VW5pdCBj
aGlsZFNpemU7Cit9OworCiAKIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChO
b2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKQEAgLTY4MSw2ICs2OTIsMTkgQEAg
TGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bGluZUJyZWFrTGVuZ3RoKCkKICAgICByZXR1
cm4gaGVpZ2h0OwogfQogCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGls
ZFNpemVGb3JNaW5BbmRNYXgoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUs
IExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpCit7CisgICAgTGVuZ3Ro
IG1heCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDog
Y2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOworICAgIExlbmd0aCBtaW4gPSBpc0hvcml6b250
YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5t
aW5IZWlnaHQoKTsKKyAgICAvLyBGSVhNRTogdmFsdWVGb3JMZW5ndGggaXNuJ3QgcXVpdGUgcmln
aHQgaW4gcXVpcmtzIG1vZGU6IHBlcmNlbnRhZ2UgaGVpZ2h0cyBzaG91bGQgY2hlY2sgcGFyZW50
cyB1bnRpbCBhIHZhbHVlIGlzIGZvdW5kLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTgwOQorICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSAmJiBjaGls
ZFNpemUgPiB2YWx1ZUZvckxlbmd0aChtYXgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50
KSkKKyAgICAgICAgY2hpbGRTaXplID0gdmFsdWVGb3JMZW5ndGgobWF4LCBmbGV4Ym94QXZhaWxh
YmxlQ29udGVudEV4dGVudCk7CisgICAgaWYgKG1pbi5pc1NwZWNpZmllZCgpICYmIGNoaWxkU2l6
ZSA8IHZhbHVlRm9yTGVuZ3RoKG1pbiwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKQor
ICAgICAgICBjaGlsZFNpemUgPSB2YWx1ZUZvckxlbmd0aChtaW4sIGZsZXhib3hBdmFpbGFibGVD
b250ZW50RXh0ZW50KTsKKyAgICByZXR1cm4gY2hpbGRTaXplOworfQorCiBib29sIFJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlTmV4dEZsZXhMaW5lKEZsZXhPcmRlckl0ZXJhdG9yJiBpdGVyYXRv
ciwgT3JkZXJlZEZsZXhJdGVtTGlzdCYgb3JkZXJlZENoaWxkcmVuLCBMYXlvdXRVbml0JiBwcmVm
ZXJyZWRNYWluQXhpc0V4dGVudCwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxv
YXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgTGF5b3V0VW5pdCYgbWluTWF4QXBwbGllZE1h
aW5BeGlzRXh0ZW50KQogewogICAgIG9yZGVyZWRDaGlsZHJlbi5jbGVhcigpOwpAQCAtNzExLDI2
ICs3MzUsMzMgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU5leHRGbGV4TGluZShG
bGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIE9yZGVyZWQKICAgICAgICAgdG90YWxQb3NpdGl2
ZUZsZXhpYmlsaXR5ICs9IHBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgdG90
YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ICs9IG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKIAot
ICAgICAgICBMYXlvdXRVbml0IGNoaWxkTWluTWF4QXBwbGllZE1haW5BeGlzRXh0ZW50ID0gY2hp
bGRNYWluQXhpc0V4dGVudDsKLSAgICAgICAgLy8gRklYTUU6IHZhbHVlRm9yTGVuZ3RoIGlzbid0
IHF1aXRlIHJpZ2h0IGluIHF1aXJrcyBtb2RlOiBwZXJjZW50YWdlIGhlaWdodHMgc2hvdWxkIGNo
ZWNrIHBhcmVudHMgdW50aWwgYSB2YWx1ZSBpcyBmb3VuZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxODA5Ci0gICAgICAgIExlbmd0aCBtYXhM
ZW5ndGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKSA6
IGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICAgICAgaWYgKG1heExlbmd0aC5pc1Nw
ZWNpZmllZCgpICYmIGNoaWxkTWluTWF4QXBwbGllZE1haW5BeGlzRXh0ZW50ID4gdmFsdWVGb3JM
ZW5ndGgobWF4TGVuZ3RoLCBmbGV4Ym94QXZhaWxhYmxlQ29udGVudEV4dGVudCkpCi0gICAgICAg
ICAgICBjaGlsZE1pbk1heEFwcGxpZWRNYWluQXhpc0V4dGVudCA9IHZhbHVlRm9yTGVuZ3RoKG1h
eExlbmd0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpOwotICAgICAgICBMZW5ndGgg
bWluTGVuZ3RoID0gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRo
KCkgOiBjaGlsZC0+c3R5bGUoKS0+bWluSGVpZ2h0KCk7Ci0gICAgICAgIGlmIChtaW5MZW5ndGgu
aXNTcGVjaWZpZWQoKSAmJiBjaGlsZE1pbk1heEFwcGxpZWRNYWluQXhpc0V4dGVudCA8IHZhbHVl
Rm9yTGVuZ3RoKG1pbkxlbmd0aCwgZmxleGJveEF2YWlsYWJsZUNvbnRlbnRFeHRlbnQpKQotICAg
ICAgICAgICAgY2hpbGRNaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQgPSB2YWx1ZUZvckxlbmd0
aChtaW5MZW5ndGgsIGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KTsKKyAgICAgICAgTGF5
b3V0VW5pdCBjaGlsZE1pbk1heEFwcGxpZWRNYWluQXhpc0V4dGVudCA9IGFkanVzdENoaWxkU2l6
ZUZvck1pbkFuZE1heChjaGlsZCwgY2hpbGRNYWluQXhpc0V4dGVudCwgZmxleGJveEF2YWlsYWJs
ZUNvbnRlbnRFeHRlbnQpOwogICAgICAgICBtaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQgKz0g
Y2hpbGRNaW5NYXhBcHBsaWVkTWFpbkF4aXNFeHRlbnQgLSBjaGlsZE1haW5BeGlzRXh0ZW50ICsg
Y2hpbGRNYWluQXhpc01hcmdpbkJveEV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmZyZWV6ZVZpb2xhdGlvbnMoY29uc3QgV1RGOjpW
ZWN0b3I8VmlvbGF0aW9uPiYgdmlvbGF0aW9ucywgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNw
YWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2
ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXplJiBpbmZsZXhpYmxlSXRlbXMpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aW9sYXRpb25zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIFJlbmRlckJveCogY2hpbGQgPSB2aW9sYXRpb25zW2ldLmNoaWxkOworICAgICAgICBM
YXlvdXRVbml0IGNoaWxkU2l6ZSA9IHZpb2xhdGlvbnNbaV0uY2hpbGRTaXplOworICAgICAgICBh
dmFpbGFibGVGcmVlU3BhY2UgLT0gY2hpbGRTaXplIC0gcHJlZmVycmVkTWFpbkF4aXNDb250ZW50
RXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkg
LT0gcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICB0b3RhbE5lZ2F0aXZlRmxl
eGliaWxpdHkgLT0gbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICBpbmZsZXhp
YmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFNpemUpOworICAgIH0KK30KKwogLy8gUmV0dXJucyB0
cnVlIGlmIHdlIHN1Y2Nlc3NmdWxseSByYW4gdGhlIGFsZ29yaXRobSBhbmQgc2l6ZWQgdGhlIGZs
ZXggaXRlbXMuCi1ib29sIFJlbmRlckZsZXhpYmxlQm94OjpyZXNvbHZlRmxleGlibGVMZW5ndGhz
KEZsZXhTaWduLCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiBjaGlsZHJlbiwgTGF5b3V0VW5p
dCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBm
bG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXplJiBp
bmZsZXhpYmxlSXRlbXMsIFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzKQorYm9v
bCBSZW5kZXJGbGV4aWJsZUJveDo6cmVzb2x2ZUZsZXhpYmxlTGVuZ3RocyhGbGV4U2lnbiBmbGV4
U2lnbiwgY29uc3QgT3JkZXJlZEZsZXhJdGVtTGlzdCYgY2hpbGRyZW4sIExheW91dFVuaXQmIGF2
YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQm
IHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYgaW5mbGV4
aWJsZUl0ZW1zLCBXVEY6OlZlY3RvcjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcykKIHsKICAgICBj
aGlsZFNpemVzLmNsZWFyKCk7CiAKICAgICBMYXlvdXRVbml0IGZsZXhib3hBdmFpbGFibGVDb250
ZW50RXh0ZW50ID0gbWFpbkF4aXNDb250ZW50RXh0ZW50KCk7CisgICAgTGF5b3V0VW5pdCB0b3Rh
bFZpb2xhdGlvbiA9IDA7CisgICAgV1RGOjpWZWN0b3I8VmlvbGF0aW9uPiBtaW5WaW9sYXRpb25z
OworICAgIFdURjo6VmVjdG9yPFZpb2xhdGlvbj4gbWF4VmlvbGF0aW9uczsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlbmRlckJv
eCogY2hpbGQgPSBjaGlsZHJlbltpXTsKICAgICAgICAgaWYgKGNoaWxkLT5pc1Bvc2l0aW9uZWQo
KSkgewpAQCAtNzM4LDQwICs3NjksMzAgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cmVzb2x2
ZUZsZXhpYmxlTGVuZ3RocyhGbGV4U2lnbiwgY29uc3QgT3JkZXJlZEZsZXhJdGVtTGkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFBy
ZWZlcnJlZFNpemU7CiAgICAgICAgIGlmIChpbmZsZXhpYmxlSXRlbXMuY29udGFpbnMoY2hpbGQp
KQotICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gaW5mbGV4aWJsZUl0ZW1zLmdldChj
aGlsZCk7CisgICAgICAgICAgICBjaGlsZFNpemVzLmFwcGVuZChpbmZsZXhpYmxlSXRlbXMuZ2V0
KGNoaWxkKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXpl
ID0gcHJlZmVycmVkTWFpbkF4aXNDb250ZW50RXh0ZW50Rm9yQ2hpbGQoY2hpbGQpOwotICAgICAg
ICAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgdG90YWxQb3NpdGl2ZUZsZXhpYmls
aXR5ID4gMCkgewotICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91bmRm
KGF2YWlsYWJsZUZyZWVTcGFjZSAqIHBvc2l0aXZlRmxleEZvckNoaWxkKGNoaWxkKSAvIHRvdGFs
UG9zaXRpdmVGbGV4aWJpbGl0eSk7Ci0KLSAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dp
Y2FsTWF4V2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lk
dGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2hpbGRMb2dpY2FsTWF4V2lkdGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUg
PiB2YWx1ZUZvckxlbmd0aChjaGlsZExvZ2ljYWxNYXhXaWR0aCwgZmxleGJveEF2YWlsYWJsZUNv
bnRlbnRFeHRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSA9
IHZhbHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1heFdpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29u
dGVudEV4dGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBj
aGlsZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRNYWluQXhpc0NvbnRlbnRFeHRlbnRGb3JDaGls
ZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSAt
PSBwb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaW5m
bGV4aWJsZUl0ZW1zLnNldChjaGlsZCwgY2hpbGRQcmVmZXJyZWRTaXplKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYXZhaWxhYmxlRnJlZVNwYWNlIDwgMCAmJiB0b3RhbE5lZ2F0aXZlRmxleGliaWxp
dHkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplICs9IGxyb3VuZGYo
YXZhaWxhYmxlRnJlZVNwYWNlICogbmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxO
ZWdhdGl2ZUZsZXhpYmlsaXR5KTsKLQotICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2lj
YWxNaW5XaWR0aCA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0
aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChj
aGlsZExvZ2ljYWxNaW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJlZmVycmVkU2l6ZSA8
IHZhbHVlRm9yTGVuZ3RoKGNoaWxkTG9naWNhbE1pbldpZHRoLCBmbGV4Ym94QXZhaWxhYmxlQ29u
dGVudEV4dGVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0g
dmFsdWVGb3JMZW5ndGgoY2hpbGRMb2dpY2FsTWluV2lkdGgsIGZsZXhib3hBdmFpbGFibGVDb250
ZW50RXh0ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlRnJlZVNwYWNlICs9IHBy
ZWZlcnJlZE1haW5BeGlzQ29udGVudEV4dGVudEZvckNoaWxkKGNoaWxkKSAtIGNoaWxkUHJlZmVy
cmVkU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5IC09
IG5lZ2F0aXZlRmxleEZvckNoaWxkKGNoaWxkKTsKLQotICAgICAgICAgICAgICAgICAgICBpbmZs
ZXhpYmxlSXRlbXMuc2V0KGNoaWxkLCBjaGlsZFByZWZlcnJlZFNpemUpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZFNpemUgPSBwcmVmZXJyZWRNYWluQXhpc0NvbnRl
bnRFeHRlbnRGb3JDaGlsZChjaGlsZCk7CisgICAgICAgICAgICBpZiAoYXZhaWxhYmxlRnJlZVNw
YWNlID4gMCAmJiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPiAwICYmIGZsZXhTaWduID09IFBv
c2l0aXZlRmxleGliaWxpdHkpCisgICAgICAgICAgICAgICAgY2hpbGRTaXplICs9IGxyb3VuZGYo
YXZhaWxhYmxlRnJlZVNwYWNlICogcG9zaXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGF2YWlsYWJsZUZyZWVT
cGFjZSA8IDAgJiYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ID4gMCAgJiYgZmxleFNpZ24gPT0g
TmVnYXRpdmVGbGV4aWJpbGl0eSkKKyAgICAgICAgICAgICAgICBjaGlsZFNpemUgKz0gbHJvdW5k
ZihhdmFpbGFibGVGcmVlU3BhY2UgKiBuZWdhdGl2ZUZsZXhGb3JDaGlsZChjaGlsZCkgLyB0b3Rh
bE5lZ2F0aXZlRmxleGliaWxpdHkpOworCisgICAgICAgICAgICBMYXlvdXRVbml0IGFkanVzdGVk
Q2hpbGRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yTWluQW5kTWF4KGNoaWxkLCBjaGlsZFNpemUs
IGZsZXhib3hBdmFpbGFibGVDb250ZW50RXh0ZW50KTsKKyAgICAgICAgICAgIGNoaWxkU2l6ZXMu
YXBwZW5kKGFkanVzdGVkQ2hpbGRTaXplKTsKKworICAgICAgICAgICAgTGF5b3V0VW5pdCB2aW9s
YXRpb24gPSBhZGp1c3RlZENoaWxkU2l6ZSAtIGNoaWxkU2l6ZTsKKyAgICAgICAgICAgIGlmICh2
aW9sYXRpb24gPiAwKQorICAgICAgICAgICAgICAgIG1pblZpb2xhdGlvbnMuYXBwZW5kKFZpb2xh
dGlvbihjaGlsZCwgYWRqdXN0ZWRDaGlsZFNpemUpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZp
b2xhdGlvbiA8IDApCisgICAgICAgICAgICAgICAgbWF4VmlvbGF0aW9ucy5hcHBlbmQoVmlvbGF0
aW9uKGNoaWxkLCBhZGp1c3RlZENoaWxkU2l6ZSkpOworICAgICAgICAgICAgdG90YWxWaW9sYXRp
b24gKz0gdmlvbGF0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGNoaWxkU2l6ZXMuYXBwZW5kKGNo
aWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHRv
dGFsVmlvbGF0aW9uKQorICAgICAgICBmcmVlemVWaW9sYXRpb25zKHRvdGFsVmlvbGF0aW9uIDwg
MCA/IG1heFZpb2xhdGlvbnMgOiBtaW5WaW9sYXRpb25zLCBhdmFpbGFibGVGcmVlU3BhY2UsIHRv
dGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBpbmZsZXhp
YmxlSXRlbXMpOworICAgIHJldHVybiAhdG90YWxWaW9sYXRpb247CiB9CiAKIHN0YXRpYyBMYXlv
dXRVbml0IGluaXRpYWxQYWNraW5nT2Zmc2V0KExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNl
LCBFRmxleFBhY2sgZmxleFBhY2ssIHNpemVfdCBudW1iZXJPZkNoaWxkcmVuKQpAQCAtODQ2LDYg
Kzg2Nyw3IEBAIHN0YXRpYyBFRmxleEFsaWduIGZsZXhBbGlnbkZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQpCiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW4o
TGF5b3V0VW5pdCYgY3Jvc3NBeGlzT2Zmc2V0LCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0JiBj
aGlsZHJlbiwgY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMsIExheW91
dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBXVEY6OlZlY3RvcjxMaW5lQ29udGV4dD4mIGxpbmVD
b250ZXh0cykKIHsKKyAgICBBU1NFUlQoY2hpbGRTaXplcy5zaXplKCkgPT0gY2hpbGRyZW4uc2l6
ZSgpKTsKICAgICBMYXlvdXRVbml0IG1haW5BeGlzT2Zmc2V0ID0gZmxvd0F3YXJlQm9yZGVyU3Rh
cnQoKSArIGZsb3dBd2FyZVBhZGRpbmdTdGFydCgpOwogICAgIG1haW5BeGlzT2Zmc2V0ICs9IGlu
aXRpYWxQYWNraW5nT2Zmc2V0KGF2YWlsYWJsZUZyZWVTcGFjZSwgc3R5bGUoKS0+ZmxleFBhY2so
KSwgY2hpbGRTaXplcy5zaXplKCkpOwogICAgIGlmIChzdHlsZSgpLT5mbGV4RGlyZWN0aW9uKCkg
PT0gRmxvd1Jvd1JldmVyc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5oCmluZGV4IGQ5Yjc2ZTVmN2NiYzFkMzQ2ODhjNzcyODIyYjY3YmVjZGI1MDZkYjYu
LmM2NWU2ZGM5YjljMjdjNDEwMWNlN2M1N2Y3NWQ1NTJhNjBjNmMwNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC02Miw2ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxSZW5kZXJCb3gqPiBPcmRlcmVkRmxleEl0
ZW1MaXN0OwogCiAgICAgc3RydWN0IExpbmVDb250ZXh0OworICAgIHN0cnVjdCBWaW9sYXRpb247
CiAKICAgICBib29sIGhhc09ydGhvZ29uYWxGbG93KFJlbmRlckJveCogY2hpbGQpIGNvbnN0Owog
ICAgIGJvb2wgaXNDb2x1bW5GbG93KCkgY29uc3Q7CkBAIC0xMDksOSArMTEwLDEzIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbXB1dGVNYWluQXhpc1ByZWZlcnJlZFNpemVzKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgRmxleE9yZGVySGFzaFNldCYpOwogICAgIExheW91dFVuaXQgbGluZUJyZWFr
TGVuZ3RoKCk7CisgICAgTGF5b3V0VW5pdCBhZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVu
ZGVyQm94KiwgTGF5b3V0VW5pdCBjaGlsZFNpemUsIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJs
ZUNvbnRlbnRFeHRlbnQpOwogICAgIGJvb2wgY29tcHV0ZU5leHRGbGV4TGluZShGbGV4T3JkZXJJ
dGVyYXRvciYsIE9yZGVyZWRGbGV4SXRlbUxpc3QmIG9yZGVyZWRDaGlsZHJlbiwgTGF5b3V0VW5p
dCYgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxp
dHksIGZsb2F0JiB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHksIExheW91dFVuaXQmIG1pbk1heEFw
cGxpZWRNYWluQXhpc0V4dGVudCk7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQXZhaWxhYmxlRnJl
ZVNwYWNlKExheW91dFVuaXQgcHJlZmVycmVkTWFpbkF4aXNFeHRlbnQpOworCiAgICAgYm9vbCBy
ZXNvbHZlRmxleGlibGVMZW5ndGhzKEZsZXhTaWduLCBjb25zdCBPcmRlcmVkRmxleEl0ZW1MaXN0
JiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZs
ZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxl
eEl0ZW1TaXplJiwgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNoaWxkU2l6ZXMpOworICAgIHZv
aWQgZnJlZXplVmlvbGF0aW9ucyhjb25zdCBXVEY6OlZlY3RvcjxWaW9sYXRpb24+JiwgTGF5b3V0
VW5pdCYgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5
LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5LCBJbmZsZXhpYmxlRmxleEl0ZW1TaXpl
Jik7CisKICAgICB2b2lkIHNldExvZ2ljYWxPdmVycmlkZVNpemUoUmVuZGVyQm94KiBjaGlsZCwg
TGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUpOwogICAgIHZvaWQgcHJlcGFyZUNoaWxkRm9y
UG9zaXRpb25lZExheW91dChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IG1haW5BeGlzT2Zm
c2V0LCBMYXlvdXRVbml0IGNyb3NzQXhpc09mZnNldCk7CiAgICAgdm9pZCBsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuKExheW91dFVuaXQmIGNyb3NzQXhpc09mZnNldCwgY29uc3QgT3JkZXJlZEZsZXhJ
dGVtTGlzdCYsIGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzLCBMYXlv
dXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgV1RGOjpWZWN0b3I8TGluZUNvbnRleHQ+JiBsaW5l
Q29udGV4dHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDI3NWEyOTliOGEzNGZkMmM0OTdlY2I2YTEzMTFmZTk3YmE3NGM5
MWUuLjQyZWJmMmFmYTY4ZmI5YjdmZDA0YzZlMWU4MDk3OTg1NzE5Y2FhN2YgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMy0yMiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIGZsZXhib3ggZmxleGluZyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWF0Y2ggdGhl
IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
Nzk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICAqIGNzczMv
ZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBj
c3MzL2ZsZXhib3gvZmxleC1hbGdvcml0aG0tbWluLW1heC5odG1sOgorCiAyMDEyLTAzLTIyICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgYWxsIHRlc3Rz
IHRoYXQgZmFpbGVkIG9uIHRoZSBMaW9uIFdlYktpdDIgRGVidWcgYm90IGluIHIxMTE3MzkgdG8g
dGhlIE1hYyBXZWJLaXQyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhib3gvZmxl
eC1hbGdvcml0aG0tbWluLW1heC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MzL2ZsZXhi
b3gvZmxleC1hbGdvcml0aG0tbWluLW1heC1leHBlY3RlZC50eHQKaW5kZXggY2EyY2RkNjhjOTQw
YTY3NjBhYTRmNzc1MmM0ZWVhYzdmYTBiMzliNS4uN2IyZGFiOGVhMTBmNWUyY2YzZTY5ZjcyNmNk
YjhkMjRjY2E5YjY5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgt
YWxnb3JpdGhtLW1pbi1tYXgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmxl
eGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4LWV4cGVjdGVkLnR4dApAQCAtNSwzICs1LDggQEAg
UEFTUwogUEFTUwogUEFTUwogUEFTUworUEFTUworUEFTUworUEFTUworUEFTUworUEFTUwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3JpdGhtLW1pbi1tYXgu
aHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmxleGJveC9mbGV4LWFsZ29yaXRobS1taW4tbWF4Lmh0
bWwKaW5kZXggMGI2NjI4NGM5NzExMjg2NWM0ZTdjNDI1NWIwNTE2ZWQ1ZTAwN2U4My4uZmE1NzVi
MGRiMDgxMWVmZjA0M2IxYmMxMmJiMDgyZjk4NzQ2N2U2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY3NzMy9mbGV4Ym94L2ZsZXgtYWxnb3JpdGhtLW1pbi1tYXguaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MzL2ZsZXhib3gvZmxleC1hbGdvcml0aG0tbWluLW1heC5odG1sCkBAIC03NSw1ICs3
NSwzMSBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICA8ZGl2IGRhdGEtZXhw
ZWN0ZWQtd2lkdGg9IjEwMCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSAwIDUwJSk7IG1h
eC13aWR0aDogMTAwcHgiPjwvZGl2PgogPC9kaXY+CiAKKzxkaXYgY2xhc3M9ImZsZXhib3giIHN0
eWxlPSJ3aWR0aDogMjAwcHgiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE1MCIgc3R5
bGU9IndpZHRoOiAtd2Via2l0LWZsZXgoMSk7IG1pbi13aWR0aDogMTUwcHgiPjwvZGl2PgorICA8
ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjUwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgx
KTsgbWF4LXdpZHRoOiA5MHB4Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGNsYXNzPSJmbGV4Ym94
IiBzdHlsZT0id2lkdGg6IDIwMHB4Ij4KKyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSIxNTAi
IHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4KDEpOyBtaW4td2lkdGg6IDEyMHB4Ij48L2Rpdj4K
KyAgPGRpdiBkYXRhLWV4cGVjdGVkLXdpZHRoPSI1MCIgc3R5bGU9IndpZHRoOiAtd2Via2l0LWZs
ZXgoMSk7IG1heC13aWR0aDogNTBweCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBjbGFzcz0iZmxl
eGJveCIgc3R5bGU9IndpZHRoOiAyMDBweCI+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0i
MTAwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxKTsgbWluLXdpZHRoOiAxMDBweCI+PC9k
aXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iMTAwIiBzdHlsZT0id2lkdGg6IC13ZWJr
aXQtZmxleCgzKTsiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9ImZsZXhib3giIHN0eWxl
PSJ3aWR0aDogMjAwcHgiPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjE1MCIgc3R5bGU9
IndpZHRoOiAtd2Via2l0LWZsZXgoMSA1MHB4KTsgbWluLXdpZHRoOiAxMDBweCI+PC9kaXY+Cisg
IDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iNTAiIHN0eWxlPSJ3aWR0aDogLXdlYmtpdC1mbGV4
KDEgMTAwcHgpOyBtYXgtd2lkdGg6IDUwcHgiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgY2xhc3M9
ImZsZXhib3giPgorICA8ZGl2IGRhdGEtZXhwZWN0ZWQtd2lkdGg9IjgwIiBzdHlsZT0id2lkdGg6
IC13ZWJraXQtZmxleCgxKSI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBlY3RlZC13aWR0aD0iMTYw
IiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgyKSI+PC9kaXY+CisgIDxkaXYgZGF0YS1leHBl
Y3RlZC13aWR0aD0iMzYwIiBzdHlsZT0id2lkdGg6IC13ZWJraXQtZmxleCgxKTsgbWluLXdpZHRo
OiAzNjBweCI+PC9kaXY+Cis8L2Rpdj4KKwogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>