<?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>156571</bug_id>
          
          <creation_ts>2016-04-14 01:49:21 -0700</creation_ts>
          <short_desc>RenderMathMLOperator: Move glyph measuring helper functions outside the class</short_desc>
          <delta_ts>2016-04-14 11:23:47 -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>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>152244</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rego</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1183664</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-14 01:49:21 -0700</bug_when>
    <thetext>Another simple change extracted from bug 152244.

boundsForGlyph, heightForGlyph and advanceForGlyph are really just some convenient wrapper around GlyphData functions and RenderMathMLOperator is not involved. We can just implement them as inline static functions in the C++ source. They will just be moved to MathOperator.cpp in bug 152244.

Manuel also suggested renaming advanceForGlyph to advanceWidthForGlyph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183666</commentid>
    <comment_count>1</comment_count>
      <attachid>276382</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-14 01:52:42 -0700</bug_when>
    <thetext>Created attachment 276382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183667</commentid>
    <comment_count>2</comment_count>
      <attachid>276383</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-14 02:12:02 -0700</bug_when>
    <thetext>Created attachment 276383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183671</commentid>
    <comment_count>3</comment_count>
      <attachid>276383</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2016-04-14 02:39:30 -0700</bug_when>
    <thetext>Comment on attachment 276383
Patch

LGTM.

Not a strong opinion regarding the change in computePreferredLogicalWidths() if it should be done now or later, but I&apos;m fine with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183675</commentid>
    <comment_count>4</comment_count>
      <attachid>276383</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2016-04-14 02:48:01 -0700</bug_when>
    <thetext>Comment on attachment 276383
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        (WebCore::RenderMathMLOperator::findStretchyData): Renamed to advanceWidthForGlyph.

I read the function was renamed in the comment, maybe explain you are replacing the call.

&gt; Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp:293
&gt; -            float glyphWidth = advanceForGlyph(data);
&gt; +            float glyphWidth = data.isValid() ? data.font-&gt;widthForGlyph(data.glyph) : 0;

Should we add it to the API then of the new file because we need to use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183689</commentid>
    <comment_count>5</comment_count>
      <attachid>276388</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-14 04:44:30 -0700</bug_when>
    <thetext>Created attachment 276388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183769</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-04-14 11:23:47 -0700</bug_when>
    <thetext>Committed r199547: &lt;http://trac.webkit.org/changeset/199547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276382</attachid>
            <date>2016-04-14 01:52:42 -0700</date>
            <delta_ts>2016-04-14 02:11:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156571-20160414105253.patch</filename>
            <type>text/plain</type>
            <size>11333</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE3ZTljM2ExN2ZhOWM5
ZTc5Y2U0YTRmYjZhNjhjZWZkYTlmNGE0YS4uMDI5NmEwZjJlNWI0M2M5MDQ5MGM4MjBmNGI0ZDBj
MjcxZjI5MWE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA0LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcjogTW92ZSBnbHlwaCBtZWFzdXJpbmcgaGVscGVyIGZ1bmN0aW9ucyBvdXRzaWRlIHRoZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCB0aGlzIGlzIGp1c3QgYSBzaW1wbGUgcmVmYWN0b3Jpbmcgd2l0aG91dCBiZWhh
dmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kc0ZvckdseXBoKTogU3RhdGljIGlu
bGluZSBoZWxwZXIgZnVuY3Rpb24gbW92ZSBmcm9tIHRoZSBSZW5kZXJNYXRoTUxPcGVyYXRvciBj
bGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OmhlaWdodEZvckdseXBoKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlV2lkdGhGb3JHbHlwaCk6IERpdHRvIGFuZCByZW5hbWVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKTogUmVuYW1lIGFkdmFuY2VXaWR0aEZvckdseXBoLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbmRTdHJldGNoeURhdGEpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50R2x5cGgpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnRyYWlsaW5nU3BhY2VF
cnJvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmJv
dW5kc0ZvckdseXBoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9w
ZXJhdG9yOjpoZWlnaHRGb3JHbHlwaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6YWR2YW5jZUZvckdseXBoKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisKIDIwMTYtMDQtMTMgIEZy
ZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCB0d28gY29kaW5n
IG1pc3Rha2VzIGluIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcAppbmRleCA5MzhhOGU0N2E1ZDBmMGY2NDVmMjQ2YTYzMzVlODA2NGI5
NjgxOTU5Li5iNmM3MWU2ZTc3NzFmNWUzMjViN2YwZjk0NjUyMmQ2MWM2OWEzNDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcApAQCAtMjY2LDE3ICsyNjYsMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRv
cjo6cmVzZXRTdHJldGNoU2l6ZSgpCiAgICAgICAgIG1fc3RyZXRjaFdpZHRoID0gMDsKIH0KIAot
RmxvYXRSZWN0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpib3VuZHNGb3JHbHlwaChjb25zdCBHbHlw
aERhdGEmIGRhdGEpIGNvbnN0CitzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBib3VuZHNGb3JHbHlw
aChjb25zdCBHbHlwaERhdGEmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGRhdGEuZm9udCAmJiBkYXRh
LmdseXBoID8gZGF0YS5mb250LT5ib3VuZHNGb3JHbHlwaChkYXRhLmdseXBoKSA6IEZsb2F0UmVj
dCgpOwogfQogCi1mbG9hdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6aGVpZ2h0Rm9yR2x5cGgoY29u
c3QgR2x5cGhEYXRhJiBkYXRhKSBjb25zdAorc3RhdGljIGlubGluZSBmbG9hdCBoZWlnaHRGb3JH
bHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEpCiB7CiAgICAgcmV0dXJuIGJvdW5kc0ZvckdseXBo
KGRhdGEpLmhlaWdodCgpOwogfQogCi1mbG9hdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6YWR2YW5j
ZUZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkgY29uc3QKK3N0YXRpYyBpbmxpbmUgZmxv
YXQgYWR2YW5jZVdpZHRoRm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJiBkYXRhKQogewogICAgIHJl
dHVybiBkYXRhLmZvbnQgJiYgZGF0YS5nbHlwaCA/IGRhdGEuZm9udC0+d2lkdGhGb3JHbHlwaChk
YXRhLmdseXBoKSA6IDA7CiB9CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgICAgICBpZiAoaXNJ
bnZpc2libGVPcGVyYXRvcigpKSB7CiAgICAgICAgICAgICAvLyBJbiBzb21lIGZvbnRzLCBnbHlw
aHMgZm9yIGludmlzaWJsZSBvcGVyYXRvcnMgaGF2ZSBub256ZXJvIHdpZHRoLiBDb25zZXF1ZW50
bHksIHdlIHN1YnRyYWN0IHRoYXQgd2lkdGggaGVyZSB0byBhdm9pZCB3aWRlIGdhcHMuCiAgICAg
ICAgICAgICBHbHlwaERhdGEgZGF0YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFG
b3JDaGFyYWN0ZXIobV90ZXh0Q29udGVudCwgZmFsc2UpOwotICAgICAgICAgICAgZmxvYXQgZ2x5
cGhXaWR0aCA9IGFkdmFuY2VGb3JHbHlwaChkYXRhKTsKKyAgICAgICAgICAgIGZsb2F0IGdseXBo
V2lkdGggPSBhZHZhbmNlV2lkdGhGb3JHbHlwaChkYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChn
bHlwaFdpZHRoIDw9IG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoIC09IGdseXBoV2lkdGg7CiAgICAgICAgICAgICBtX21h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCAtPSBnbHlwaFdpZHRoOwpAQCAtMzAwLDcgKzMwMCw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkKICAgICB9CiAKICAgICBHbHlwaERhdGEgZGF0YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5n
bHlwaERhdGFGb3JDaGFyYWN0ZXIobV90ZXh0Q29udGVudCwgIXN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpKTsKLSAgICBmbG9hdCBtYXhpbXVtR2x5cGhXaWR0aCA9IGFkdmFuY2VGb3JH
bHlwaChkYXRhKTsKKyAgICBmbG9hdCBtYXhpbXVtR2x5cGhXaWR0aCA9IGFkdmFuY2VXaWR0aEZv
ckdseXBoKGRhdGEpOwogICAgIGlmICghbV9pc1ZlcnRpY2FsKSB7CiAgICAgICAgIGlmIChtYXhp
bXVtR2x5cGhXaWR0aCA8IHN0cmV0Y2hTaXplKCkpCiAgICAgICAgICAgICBtYXhpbXVtR2x5cGhX
aWR0aCA9IHN0cmV0Y2hTaXplKCk7CkBAIC01MTgsMTAgKzUxOCwxMCBAQCBSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6U3RyZXRjaHlEYXRhIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaW5kU3RyZXRjaHlE
YXRhKFVDaGFyCiAgICAgICAgICAgICBzaXplVmFyaWFudC5nbHlwaCA9IHZhcmlhbnQ7CiAgICAg
ICAgICAgICBzaXplVmFyaWFudC5mb250ID0gJnByaW1hcnlGb250OwogICAgICAgICAgICAgaWYg
KG1heGltdW1HbHlwaFdpZHRoKQotICAgICAgICAgICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9
IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5jZUZvckdseXBoKHNpemVWYXJpYW50
KSk7CisgICAgICAgICAgICAgICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGlt
dW1HbHlwaFdpZHRoLCBhZHZhbmNlV2lkdGhGb3JHbHlwaChzaXplVmFyaWFudCkpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZGF0YS5zZXRTaXplVmFyaWFudE1vZGUoc2l6
ZVZhcmlhbnQpOwotICAgICAgICAgICAgICAgIGZsb2F0IHNpemUgPSBtX2lzVmVydGljYWwgPyBo
ZWlnaHRGb3JHbHlwaChzaXplVmFyaWFudCkgOiBhZHZhbmNlRm9yR2x5cGgoc2l6ZVZhcmlhbnQp
OworICAgICAgICAgICAgICAgIGZsb2F0IHNpemUgPSBtX2lzVmVydGljYWwgPyBoZWlnaHRGb3JH
bHlwaChzaXplVmFyaWFudCkgOiBhZHZhbmNlV2lkdGhGb3JHbHlwaChzaXplVmFyaWFudCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHNpemUgPj0gc3RyZXRjaFNpemUoKSkgCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICAgfQpAQCAtNTY2LDExICs1NjYsMTEgQEAg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OlN0cmV0Y2h5RGF0YSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
ZmluZFN0cmV0Y2h5RGF0YShVQ2hhcgogCiAgICAgLy8gSWYgd2UgYXJlIG1lYXN1cmluZyB0aGUg
bWF4aW11bSB3aWR0aCwgdmVyaWZ5IGVhY2ggY29tcG9uZW50LgogICAgIGlmIChtYXhpbXVtR2x5
cGhXaWR0aCkgewotICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11
bUdseXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChhc3NlbWJseURhdGEudG9wKCkpKTsKLSAgICAg
ICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZh
bmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmV4dGVuc2lvbigpKSk7CisgICAgICAgICptYXhpbXVt
R2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5jZVdpZHRoRm9y
R2x5cGgoYXNzZW1ibHlEYXRhLnRvcCgpKSk7CisgICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9
IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1i
bHlEYXRhLmV4dGVuc2lvbigpKSk7CiAgICAgICAgIGlmIChhc3NlbWJseURhdGEubWlkZGxlKCku
Z2x5cGgpCi0gICAgICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11
bUdseXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChhc3NlbWJseURhdGEubWlkZGxlKCkpKTsKLSAg
ICAgICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBh
ZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmJvdHRvbSgpKSk7CisgICAgICAgICAgICAqbWF4
aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUdseXBoV2lkdGgsIGFkdmFuY2VXaWR0
aEZvckdseXBoKGFzc2VtYmx5RGF0YS5taWRkbGUoKSkpOworICAgICAgICAqbWF4aW11bUdseXBo
V2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUdseXBoV2lkdGgsIGFkdmFuY2VXaWR0aEZvckdseXBo
KGFzc2VtYmx5RGF0YS5ib3R0b20oKSkpOwogICAgICAgICByZXR1cm4gYXNzZW1ibHlEYXRhOwog
ICAgIH0KIApAQCAtNTgxLDkgKzU4MSw5IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpTdHJldGNo
eURhdGEgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbmRTdHJldGNoeURhdGEoVUNoYXIKICAgICAg
ICAgaWYgKGFzc2VtYmx5RGF0YS5taWRkbGUoKS5nbHlwaCkKICAgICAgICAgICAgIHNpemUgKz0g
aGVpZ2h0Rm9yR2x5cGgoYXNzZW1ibHlEYXRhLm1pZGRsZSgpKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBzaXplID0gYWR2YW5jZUZvckdseXBoKGFzc2VtYmx5RGF0YS5sZWZ0KCkpICsgYWR2YW5j
ZUZvckdseXBoKGFzc2VtYmx5RGF0YS5yaWdodCgpKTsKKyAgICAgICAgc2l6ZSA9IGFkdmFuY2VX
aWR0aEZvckdseXBoKGFzc2VtYmx5RGF0YS5sZWZ0KCkpICsgYWR2YW5jZVdpZHRoRm9yR2x5cGgo
YXNzZW1ibHlEYXRhLnJpZ2h0KCkpOwogICAgICAgICBpZiAoYXNzZW1ibHlEYXRhLm1pZGRsZSgp
LmdseXBoKQotICAgICAgICAgICAgc2l6ZSArPSBhZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRh
Lm1pZGRsZSgpKTsKKyAgICAgICAgICAgIHNpemUgKz0gYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNz
ZW1ibHlEYXRhLm1pZGRsZSgpKTsKICAgICB9CiAgICAgaWYgKHNpemUgPiBzdHJldGNoU2l6ZSgp
KQogICAgICAgICByZXR1cm4gZGF0YTsKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSgpCiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGRv
IG5vdCBzdHJldGNoIGlmIHRoZSBiYXNlIGdseXBoIGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAg
R2x5cGhEYXRhIGJhc2VHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JD
aGFyYWN0ZXIobV90ZXh0Q29udGVudCwgIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KTsKLSAgICAgICAgZmxvYXQgYmFzZVNpemUgPSBtX2lzVmVydGljYWwgPyBoZWlnaHRGb3JHbHlw
aChiYXNlR2x5cGgpIDogYWR2YW5jZUZvckdseXBoKGJhc2VHbHlwaCk7CisgICAgICAgIGZsb2F0
IGJhc2VTaXplID0gbV9pc1ZlcnRpY2FsID8gaGVpZ2h0Rm9yR2x5cGgoYmFzZUdseXBoKSA6IGFk
dmFuY2VXaWR0aEZvckdseXBoKGJhc2VHbHlwaCk7CiAgICAgICAgIGlmIChzdHJldGNoU2l6ZSgp
IDw9IGJhc2VTaXplKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3N0cmV0Y2h5RGF0
YSA9IGZpbmRTdHJldGNoeURhdGEobV90ZXh0Q29udGVudCwgbnVsbHB0cik7CkBAIC02NDUsNyAr
NjQ1LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dXBkYXRlU3R5bGUoKQogICAgICAg
ICAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURh
dGEudmFyaWFudCgpKTsKICAgICAgICAgICAgIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUg
PSAtZ2x5cGhCb3VuZHMueSgpOwogICAgICAgICAgICAgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2Vs
aW5lID0gZ2x5cGhCb3VuZHMubWF4WSgpOwotICAgICAgICAgICAgbV9zdHJldGNoV2lkdGggPSBh
ZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKKyAgICAgICAgICAgIG1f
c3RyZXRjaFdpZHRoID0gYWR2YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFu
dCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd0ds
eXBoQXNzZW1ibHkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kczsKICAgICAg
ICAgICAgIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgPSAwOwpAQCAtNzM2LDcgKzczNiw3
IEBAIExheW91dFJlY3QgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50R2x5cGgoUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBHbHlwaERhdGEmIGRhCiAgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlw
Qm91bmRzKTsKIAogICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKLSAgICBidWZmZXIuYWRkKGRhdGEu
Z2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZUZvckdseXBoKGRhdGEpKTsKKyAgICBidWZmZXIuYWRk
KGRhdGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSkpOwogICAg
IGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5m
b250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7CiAKICAgICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7
CkBAIC04MjksNyArODI5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICBpZiAobV9z
dHJldGNoeURhdGEubW9kZSgpID09IERyYXdTaXplVmFyaWFudCkgewogICAgICAgICBBU1NFUlQo
bV9zdHJldGNoeURhdGEudmFyaWFudCgpLmdseXBoKTsKICAgICAgICAgR2x5cGhCdWZmZXIgYnVm
ZmVyOwotICAgICAgICBidWZmZXIuYWRkKG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5nbHlwaCwg
bV9zdHJldGNoeURhdGEudmFyaWFudCgpLmZvbnQsIGFkdmFuY2VGb3JHbHlwaChtX3N0cmV0Y2h5
RGF0YS52YXJpYW50KCkpKTsKKyAgICAgICAgYnVmZmVyLmFkZChtX3N0cmV0Y2h5RGF0YS52YXJp
YW50KCkuZ2x5cGgsIG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5mb250LCBhZHZhbmNlV2lkdGhG
b3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpKTsKICAgICAgICAgTGF5b3V0UG9pbnQg
b3BlcmF0b3JUb3BMZWZ0ID0gY2VpbGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigp
KTsKICAgICAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJl
dGNoeURhdGEudmFyaWFudCgpKTsKICAgICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4o
b3BlcmF0b3JUb3BMZWZ0LngoKSwgb3BlcmF0b3JUb3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnko
KSk7CkBAIC05MjUsMTcgKzkyNSwxNyBAQCBMYXlvdXRVbml0IFJlbmRlck1hdGhNTE9wZXJhdG9y
Ojp0cmFpbGluZ1NwYWNlRXJyb3IoKQogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9
PSBEcmF3Tm9ybWFsKSB7CiAgICAgICAgIEdseXBoRGF0YSBkYXRhID0gc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3Rlcih0ZXh0Q29udGVudCgpLCAhc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgICAgICByZXR1cm4gd2lkdGggLSBhZHZhbmNlRm9y
R2x5cGgoZGF0YSk7CisgICAgICAgIHJldHVybiB3aWR0aCAtIGFkdmFuY2VXaWR0aEZvckdseXBo
KGRhdGEpOwogICAgIH0KIAogICAgIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1Np
emVWYXJpYW50KQotICAgICAgICByZXR1cm4gd2lkdGggLSBhZHZhbmNlRm9yR2x5cGgobV9zdHJl
dGNoeURhdGEudmFyaWFudCgpKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoIC0gYWR2YW5jZVdpZHRo
Rm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKIAotICAgIGZsb2F0IGFzc2VtYmx5
V2lkdGggPSBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEudG9wKCkpOwotICAgIGFzc2Vt
Ymx5V2lkdGggPSBzdGQ6Om1heChhc3NlbWJseVdpZHRoLCBhZHZhbmNlRm9yR2x5cGgobV9zdHJl
dGNoeURhdGEuYm90dG9tKCkpKTsKLSAgICBhc3NlbWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1i
bHlXaWR0aCwgYWR2YW5jZUZvckdseXBoKG1fc3RyZXRjaHlEYXRhLmV4dGVuc2lvbigpKSk7Cisg
ICAgZmxvYXQgYXNzZW1ibHlXaWR0aCA9IGFkdmFuY2VXaWR0aEZvckdseXBoKG1fc3RyZXRjaHlE
YXRhLnRvcCgpKTsKKyAgICBhc3NlbWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1ibHlXaWR0aCwg
YWR2YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNoeURhdGEuYm90dG9tKCkpKTsKKyAgICBhc3Nl
bWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1ibHlXaWR0aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgo
bV9zdHJldGNoeURhdGEuZXh0ZW5zaW9uKCkpKTsKICAgICBpZiAobV9zdHJldGNoeURhdGEubWlk
ZGxlKCkuZ2x5cGgpCi0gICAgICAgIGFzc2VtYmx5V2lkdGggPSBzdGQ6Om1heChhc3NlbWJseVdp
ZHRoLCBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEubWlkZGxlKCkpKTsKKyAgICAgICAg
YXNzZW1ibHlXaWR0aCA9IHN0ZDo6bWF4KGFzc2VtYmx5V2lkdGgsIGFkdmFuY2VXaWR0aEZvckds
eXBoKG1fc3RyZXRjaHlEYXRhLm1pZGRsZSgpKSk7CiAgICAgcmV0dXJuIHdpZHRoIC0gYXNzZW1i
bHlXaWR0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4IGU3NTI3MmJkNTIyN2MwOWY0ZWFkNDc3MjFj
Mjc1ZTE0OGY4ODAxMTkuLjcxMjY2ODNkNDUwMjg4ZTBlMzYxMzdkOGViYmE3ZWI3ODE5M2VlMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmgKQEAgLTY2LDcgKzY2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMoKTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgYWR2YW5jZUZv
ckdseXBoKGNvbnN0IEdseXBoRGF0YSYpIGNvbnN0OwogICAgIHZvaWQgc2V0TGVhZGluZ1NwYWNl
KExheW91dFVuaXQgbGVhZGluZ1NwYWNlKSB7IG1fbGVhZGluZ1NwYWNlID0gbGVhZGluZ1NwYWNl
OyB9CiAgICAgdm9pZCBzZXRUcmFpbGluZ1NwYWNlKExheW91dFVuaXQgdHJhaWxpbmdTcGFjZSkg
eyBtX3RyYWlsaW5nU3BhY2UgPSB0cmFpbGluZ1NwYWNlOyB9CiAgICAgVUNoYXIgdGV4dENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRDb250ZW50OyB9CkBAIC0xNDEsOSArMTQwLDYgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTdHJldGNoaW5nKCkgY29uc3Q7CiAKLSAg
ICBGbG9hdFJlY3QgYm91bmRzRm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJikgY29uc3Q7Ci0gICAg
ZmxvYXQgaGVpZ2h0Rm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJikgY29uc3Q7Ci0KICAgICBib29s
IGdldEdseXBoQXNzZW1ibHlGYWxsQmFjayhWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1i
bHlQYXJ0PiwgU3RyZXRjaHlEYXRhJikgY29uc3Q7CiAgICAgU3RyZXRjaHlEYXRhIGdldERpc3Bs
YXlTdHlsZUxhcmdlT3BlcmF0b3IoVUNoYXIpIGNvbnN0OwogICAgIFN0cmV0Y2h5RGF0YSBmaW5k
U3RyZXRjaHlEYXRhKFVDaGFyLCBmbG9hdCogbWF4aW11bUdseXBoV2lkdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276383</attachid>
            <date>2016-04-14 02:12:02 -0700</date>
            <delta_ts>2016-04-14 04:44:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156571-20160414111213.patch</filename>
            <type>text/plain</type>
            <size>11987</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE3ZTljM2ExN2ZhOWM5
ZTc5Y2U0YTRmYjZhNjhjZWZkYTlmNGE0YS4uOGQyN2UyOTlkOWJiOGUyM2MzYTQ0NDJmZmUzZDE3
MDdhNjAxMWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTA0LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcjogTW92ZSBnbHlwaCBtZWFzdXJpbmcgaGVscGVyIGZ1bmN0aW9ucyBvdXRzaWRlIHRoZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCB0aGlzIGlzIGp1c3QgYSBzaW1wbGUgcmVmYWN0b3JpbmcgdG8gcHJlcGFyZSB0
aGUgcGF0Y2gKKyAgICAgICAgZm9yIGJ1ZyAxNTY1NDIsIHdpdGhvdXQgYW55IGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwOiBNQVRITUxfT1BESUNUX1NJWkUgd2FzIHJlbW92ZWQgaW4gYnVnIDE1MjI0Miwgc28gbm8g
bmVlZCB0byB1bmRlZiBpdC4KKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kc0ZvckdseXBoKTogU3Rh
dGljIGlubGluZSBoZWxwZXIgZnVuY3Rpb24gbW92ZSBmcm9tIHRoZSBSZW5kZXJNYXRoTUxPcGVy
YXRvciBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OmhlaWdodEZvckdseXBoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjphZHZhbmNlV2lkdGhGb3JHbHlwaCk6IERpdHRvIGFuZCByZW5hbWVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgV2UgdW5mb2xkIGFkdmFuY2VXaWR0aEZvckdseXBo
IGFzIGl0IHdpbGwgYmUgbW92ZWQgaW50byBNYXRoTUxPcGVyYXRvci5jcHAgbGF0ZXIKKyAgICAg
ICAgYW5kIHRoaXMgd29ya2Fyb3VuZCBmb3IgaW52aXNpYmxlIG9wZXJhdG9yIGlzIHRoZSBvbmx5
IHVzZSB0aGF0IHdpbGwgcmVtYWluIGluIFJlbmRlck1hdGhNTE9wZXJhdG9yLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbmRTdHJldGNoeURhdGEpOiBSZW5hbWVk
IHRvIGFkdmFuY2VXaWR0aEZvckdseXBoLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
T3BlcmF0b3I6OnVwZGF0ZVN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6cGFpbnRHbHlwaCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6dHJhaWxpbmdTcGFjZUVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6c2V0T3BlcmF0b3JQcm9wZXJ0aWVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpib3VuZHNGb3JH
bHlwaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
aGVpZ2h0Rm9yR2x5cGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
T3BlcmF0b3I6OmFkdmFuY2VGb3JHbHlwaCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oOgorCiAyMDE2LTA0LTEzICBGcmVkZXJpYyBX
YW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdHdvIGNvZGluZyBtaXN0YWtl
cyBpbiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAKaW5kZXggOTM4YThlNDdhNWQwZjBmNjQ1ZjI0NmE2MzM1ZTgwNjRiOTY4MTk1OS4u
MGFlNTk0MmExOWFhYWI4Y2M1MzNhM2EzOTgzN2Y2OGIwYTE5NjFmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAKQEAgLTE4NSw3ICsxODUsNiBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzZXRPcGVy
YXRvclByb3BlcnRpZXMoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotI3VuZGVm
IE1BVEhNTF9PUERJQ1RfU0laRQogCiAgICAgaWYgKCFpc0Fub255bW91cygpKSB7CiAgICAgICAg
IC8vIEZpbmFsbHksIHdlIG1ha2UgdGhlIGF0dHJpYnV0ZSB2YWx1ZXMgb3ZlcnJpZGUgdGhlIGRl
ZmF1bHQuCkBAIC0yNjYsMTcgKzI2NSwxNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpy
ZXNldFN0cmV0Y2hTaXplKCkKICAgICAgICAgbV9zdHJldGNoV2lkdGggPSAwOwogfQogCi1GbG9h
dFJlY3QgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmJvdW5kc0ZvckdseXBoKGNvbnN0IEdseXBoRGF0
YSYgZGF0YSkgY29uc3QKK3N0YXRpYyBpbmxpbmUgRmxvYXRSZWN0IGJvdW5kc0ZvckdseXBoKGNv
bnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKICAgICByZXR1cm4gZGF0YS5mb250ICYmIGRhdGEuZ2x5
cGggPyBkYXRhLmZvbnQtPmJvdW5kc0ZvckdseXBoKGRhdGEuZ2x5cGgpIDogRmxvYXRSZWN0KCk7
CiB9CiAKLWZsb2F0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpoZWlnaHRGb3JHbHlwaChjb25zdCBH
bHlwaERhdGEmIGRhdGEpIGNvbnN0CitzdGF0aWMgaW5saW5lIGZsb2F0IGhlaWdodEZvckdseXBo
KGNvbnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKICAgICByZXR1cm4gYm91bmRzRm9yR2x5cGgoZGF0
YSkuaGVpZ2h0KCk7CiB9CiAKLWZsb2F0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjphZHZhbmNlRm9y
R2x5cGgoY29uc3QgR2x5cGhEYXRhJiBkYXRhKSBjb25zdAorc3RhdGljIGlubGluZSBmbG9hdCBh
ZHZhbmNlV2lkdGhGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEpCiB7CiAgICAgcmV0dXJu
IGRhdGEuZm9udCAmJiBkYXRhLmdseXBoID8gZGF0YS5mb250LT53aWR0aEZvckdseXBoKGRhdGEu
Z2x5cGgpIDogMDsKIH0KQEAgLTI5MSw3ICsyOTAsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJh
dG9yOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgIGlmIChpc0ludmlz
aWJsZU9wZXJhdG9yKCkpIHsKICAgICAgICAgICAgIC8vIEluIHNvbWUgZm9udHMsIGdseXBocyBm
b3IgaW52aXNpYmxlIG9wZXJhdG9ycyBoYXZlIG5vbnplcm8gd2lkdGguIENvbnNlcXVlbnRseSwg
d2Ugc3VidHJhY3QgdGhhdCB3aWR0aCBoZXJlIHRvIGF2b2lkIHdpZGUgZ2Fwcy4KICAgICAgICAg
ICAgIEdseXBoRGF0YSBkYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNo
YXJhY3RlcihtX3RleHRDb250ZW50LCBmYWxzZSk7Ci0gICAgICAgICAgICBmbG9hdCBnbHlwaFdp
ZHRoID0gYWR2YW5jZUZvckdseXBoKGRhdGEpOworICAgICAgICAgICAgZmxvYXQgZ2x5cGhXaWR0
aCA9IGRhdGEuaXNWYWxpZCgpID8gZGF0YS5mb250LT53aWR0aEZvckdseXBoKGRhdGEuZ2x5cGgp
IDogMDsKICAgICAgICAgICAgIEFTU0VSVChnbHlwaFdpZHRoIDw9IG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoKTsKICAgICAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoIC09IGds
eXBoV2lkdGg7CiAgICAgICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCAtPSBnbHlw
aFdpZHRoOwpAQCAtMzAwLDcgKzI5OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICB9CiAKICAgICBHbHlwaERhdGEgZGF0
YSA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV90ZXh0Q29u
dGVudCwgIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICBmbG9hdCBtYXhp
bXVtR2x5cGhXaWR0aCA9IGFkdmFuY2VGb3JHbHlwaChkYXRhKTsKKyAgICBmbG9hdCBtYXhpbXVt
R2x5cGhXaWR0aCA9IGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpOwogICAgIGlmICghbV9pc1Zl
cnRpY2FsKSB7CiAgICAgICAgIGlmIChtYXhpbXVtR2x5cGhXaWR0aCA8IHN0cmV0Y2hTaXplKCkp
CiAgICAgICAgICAgICBtYXhpbXVtR2x5cGhXaWR0aCA9IHN0cmV0Y2hTaXplKCk7CkBAIC01MTgs
MTAgKzUxNywxMCBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6U3RyZXRjaHlEYXRhIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpmaW5kU3RyZXRjaHlEYXRhKFVDaGFyCiAgICAgICAgICAgICBzaXplVmFy
aWFudC5nbHlwaCA9IHZhcmlhbnQ7CiAgICAgICAgICAgICBzaXplVmFyaWFudC5mb250ID0gJnBy
aW1hcnlGb250OwogICAgICAgICAgICAgaWYgKG1heGltdW1HbHlwaFdpZHRoKQotICAgICAgICAg
ICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwg
YWR2YW5jZUZvckdseXBoKHNpemVWYXJpYW50KSk7CisgICAgICAgICAgICAgICAgKm1heGltdW1H
bHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZhbmNlV2lkdGhGb3JH
bHlwaChzaXplVmFyaWFudCkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ZGF0YS5zZXRTaXplVmFyaWFudE1vZGUoc2l6ZVZhcmlhbnQpOwotICAgICAgICAgICAgICAgIGZs
b2F0IHNpemUgPSBtX2lzVmVydGljYWwgPyBoZWlnaHRGb3JHbHlwaChzaXplVmFyaWFudCkgOiBh
ZHZhbmNlRm9yR2x5cGgoc2l6ZVZhcmlhbnQpOworICAgICAgICAgICAgICAgIGZsb2F0IHNpemUg
PSBtX2lzVmVydGljYWwgPyBoZWlnaHRGb3JHbHlwaChzaXplVmFyaWFudCkgOiBhZHZhbmNlV2lk
dGhGb3JHbHlwaChzaXplVmFyaWFudCk7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgPj0gc3Ry
ZXRjaFNpemUoKSkgCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAg
ICAgfQpAQCAtNTY2LDExICs1NjUsMTEgQEAgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OlN0cmV0Y2h5
RGF0YSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmluZFN0cmV0Y2h5RGF0YShVQ2hhcgogCiAgICAg
Ly8gSWYgd2UgYXJlIG1lYXN1cmluZyB0aGUgbWF4aW11bSB3aWR0aCwgdmVyaWZ5IGVhY2ggY29t
cG9uZW50LgogICAgIGlmIChtYXhpbXVtR2x5cGhXaWR0aCkgewotICAgICAgICAqbWF4aW11bUds
eXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUdseXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChh
c3NlbWJseURhdGEudG9wKCkpKTsKLSAgICAgICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3RkOjpt
YXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmV4dGVu
c2lvbigpKSk7CisgICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVt
R2x5cGhXaWR0aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLnRvcCgpKSk7Cisg
ICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwg
YWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmV4dGVuc2lvbigpKSk7CiAgICAgICAg
IGlmIChhc3NlbWJseURhdGEubWlkZGxlKCkuZ2x5cGgpCi0gICAgICAgICAgICAqbWF4aW11bUds
eXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUdseXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChh
c3NlbWJseURhdGEubWlkZGxlKCkpKTsKLSAgICAgICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3Rk
OjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmJv
dHRvbSgpKSk7CisgICAgICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4
aW11bUdseXBoV2lkdGgsIGFkdmFuY2VXaWR0aEZvckdseXBoKGFzc2VtYmx5RGF0YS5taWRkbGUo
KSkpOworICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUdseXBo
V2lkdGgsIGFkdmFuY2VXaWR0aEZvckdseXBoKGFzc2VtYmx5RGF0YS5ib3R0b20oKSkpOwogICAg
ICAgICByZXR1cm4gYXNzZW1ibHlEYXRhOwogICAgIH0KIApAQCAtNTgxLDkgKzU4MCw5IEBAIFJl
bmRlck1hdGhNTE9wZXJhdG9yOjpTdHJldGNoeURhdGEgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZp
bmRTdHJldGNoeURhdGEoVUNoYXIKICAgICAgICAgaWYgKGFzc2VtYmx5RGF0YS5taWRkbGUoKS5n
bHlwaCkKICAgICAgICAgICAgIHNpemUgKz0gaGVpZ2h0Rm9yR2x5cGgoYXNzZW1ibHlEYXRhLm1p
ZGRsZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBzaXplID0gYWR2YW5jZUZvckdseXBoKGFz
c2VtYmx5RGF0YS5sZWZ0KCkpICsgYWR2YW5jZUZvckdseXBoKGFzc2VtYmx5RGF0YS5yaWdodCgp
KTsKKyAgICAgICAgc2l6ZSA9IGFkdmFuY2VXaWR0aEZvckdseXBoKGFzc2VtYmx5RGF0YS5sZWZ0
KCkpICsgYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLnJpZ2h0KCkpOwogICAgICAg
ICBpZiAoYXNzZW1ibHlEYXRhLm1pZGRsZSgpLmdseXBoKQotICAgICAgICAgICAgc2l6ZSArPSBh
ZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLm1pZGRsZSgpKTsKKyAgICAgICAgICAgIHNpemUg
Kz0gYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLm1pZGRsZSgpKTsKICAgICB9CiAg
ICAgaWYgKHNpemUgPiBzdHJldGNoU2l6ZSgpKQogICAgICAgICByZXR1cm4gZGF0YTsKQEAgLTYx
Niw3ICs2MTUsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSgpCiAg
ICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdHJldGNoIGlmIHRoZSBiYXNlIGdseXBo
IGlzIGxhcmdlIGVub3VnaC4KICAgICAgICAgR2x5cGhEYXRhIGJhc2VHbHlwaCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV90ZXh0Q29udGVudCwgIXN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKLSAgICAgICAgZmxvYXQgYmFzZVNpemUgPSBt
X2lzVmVydGljYWwgPyBoZWlnaHRGb3JHbHlwaChiYXNlR2x5cGgpIDogYWR2YW5jZUZvckdseXBo
KGJhc2VHbHlwaCk7CisgICAgICAgIGZsb2F0IGJhc2VTaXplID0gbV9pc1ZlcnRpY2FsID8gaGVp
Z2h0Rm9yR2x5cGgoYmFzZUdseXBoKSA6IGFkdmFuY2VXaWR0aEZvckdseXBoKGJhc2VHbHlwaCk7
CiAgICAgICAgIGlmIChzdHJldGNoU2l6ZSgpIDw9IGJhc2VTaXplKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBtX3N0cmV0Y2h5RGF0YSA9IGZpbmRTdHJldGNoeURhdGEobV90ZXh0Q29u
dGVudCwgbnVsbHB0cik7CkBAIC02NDUsNyArNjQ0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVy
YXRvcjo6dXBkYXRlU3R5bGUoKQogICAgICAgICAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0g
Ym91bmRzRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKICAgICAgICAgICAgIG1f
c3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgPSAtZ2x5cGhCb3VuZHMueSgpOwogICAgICAgICAg
ICAgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lID0gZ2x5cGhCb3VuZHMubWF4WSgpOwotICAg
ICAgICAgICAgbV9zdHJldGNoV2lkdGggPSBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEu
dmFyaWFudCgpKTsKKyAgICAgICAgICAgIG1fc3RyZXRjaFdpZHRoID0gYWR2YW5jZVdpZHRoRm9y
R2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3N0
cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd0dseXBoQXNzZW1ibHkpIHsKICAgICAgICAgICAgIEZs
b2F0UmVjdCBnbHlwaEJvdW5kczsKICAgICAgICAgICAgIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFz
ZWxpbmUgPSAwOwpAQCAtNzM2LDcgKzczNSw3IEBAIExheW91dFJlY3QgUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBHbHlwaERhdGEmIGRhCiAg
ICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIEdseXBoQnVmZmVyIGJ1
ZmZlcjsKLSAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZUZvckds
eXBoKGRhdGEpKTsKKyAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5j
ZVdpZHRoRm9yR2x5cGgoZGF0YSkpOwogICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoc3R5
bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7CiAK
ICAgICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7CkBAIC04MjksNyArODI4LDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQKICAgICBpZiAobV9zdHJldGNoeURhdGEubW9kZSgpID09IERyYXdTaXpl
VmFyaWFudCkgewogICAgICAgICBBU1NFUlQobV9zdHJldGNoeURhdGEudmFyaWFudCgpLmdseXBo
KTsKICAgICAgICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgICAgICBidWZmZXIuYWRkKG1fc3Ry
ZXRjaHlEYXRhLnZhcmlhbnQoKS5nbHlwaCwgbV9zdHJldGNoeURhdGEudmFyaWFudCgpLmZvbnQs
IGFkdmFuY2VGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpKTsKKyAgICAgICAgYnVm
ZmVyLmFkZChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgsIG1fc3RyZXRjaHlEYXRhLnZh
cmlhbnQoKS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50
KCkpKTsKICAgICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gY2VpbGVkSW50UG9p
bnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKICAgICAgICAgRmxvYXRSZWN0IGdseXBoQm91
bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKICAgICAgICAg
TGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4ob3BlcmF0b3JUb3BMZWZ0LngoKSwgb3BlcmF0b3JU
b3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnkoKSk7CkBAIC05MjUsMTcgKzkyNCwxNyBAQCBMYXlv
dXRVbml0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjp0cmFpbGluZ1NwYWNlRXJyb3IoKQogCiAgICAg
aWYgKG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKSB7CiAgICAgICAgIEdseXBo
RGF0YSBkYXRhID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3Rlcih0
ZXh0Q29udGVudCgpLCAhc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgICAg
ICByZXR1cm4gd2lkdGggLSBhZHZhbmNlRm9yR2x5cGgoZGF0YSk7CisgICAgICAgIHJldHVybiB3
aWR0aCAtIGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpOwogICAgIH0KIAogICAgIGlmIChtX3N0
cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KQotICAgICAgICByZXR1cm4gd2lk
dGggLSBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKKyAgICAgICAg
cmV0dXJuIHdpZHRoIC0gYWR2YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFu
dCgpKTsKIAotICAgIGZsb2F0IGFzc2VtYmx5V2lkdGggPSBhZHZhbmNlRm9yR2x5cGgobV9zdHJl
dGNoeURhdGEudG9wKCkpOwotICAgIGFzc2VtYmx5V2lkdGggPSBzdGQ6Om1heChhc3NlbWJseVdp
ZHRoLCBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEuYm90dG9tKCkpKTsKLSAgICBhc3Nl
bWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1ibHlXaWR0aCwgYWR2YW5jZUZvckdseXBoKG1fc3Ry
ZXRjaHlEYXRhLmV4dGVuc2lvbigpKSk7CisgICAgZmxvYXQgYXNzZW1ibHlXaWR0aCA9IGFkdmFu
Y2VXaWR0aEZvckdseXBoKG1fc3RyZXRjaHlEYXRhLnRvcCgpKTsKKyAgICBhc3NlbWJseVdpZHRo
ID0gc3RkOjptYXgoYXNzZW1ibHlXaWR0aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNo
eURhdGEuYm90dG9tKCkpKTsKKyAgICBhc3NlbWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1ibHlX
aWR0aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNoeURhdGEuZXh0ZW5zaW9uKCkpKTsK
ICAgICBpZiAobV9zdHJldGNoeURhdGEubWlkZGxlKCkuZ2x5cGgpCi0gICAgICAgIGFzc2VtYmx5
V2lkdGggPSBzdGQ6Om1heChhc3NlbWJseVdpZHRoLCBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNo
eURhdGEubWlkZGxlKCkpKTsKKyAgICAgICAgYXNzZW1ibHlXaWR0aCA9IHN0ZDo6bWF4KGFzc2Vt
Ymx5V2lkdGgsIGFkdmFuY2VXaWR0aEZvckdseXBoKG1fc3RyZXRjaHlEYXRhLm1pZGRsZSgpKSk7
CiAgICAgcmV0dXJuIHdpZHRoIC0gYXNzZW1ibHlXaWR0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCmluZGV4
IGU3NTI3MmJkNTIyN2MwOWY0ZWFkNDc3MjFjMjc1ZTE0OGY4ODAxMTkuLjcxMjY2ODNkNDUwMjg4
ZTBlMzYxMzdkOGViYmE3ZWI3ODE5M2VlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKQEAgLTY2LDcgKzY2LDYg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMoKTsK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91
dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgZmxvYXQgYWR2YW5jZUZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYpIGNvbnN0
OwogICAgIHZvaWQgc2V0TGVhZGluZ1NwYWNlKExheW91dFVuaXQgbGVhZGluZ1NwYWNlKSB7IG1f
bGVhZGluZ1NwYWNlID0gbGVhZGluZ1NwYWNlOyB9CiAgICAgdm9pZCBzZXRUcmFpbGluZ1NwYWNl
KExheW91dFVuaXQgdHJhaWxpbmdTcGFjZSkgeyBtX3RyYWlsaW5nU3BhY2UgPSB0cmFpbGluZ1Nw
YWNlOyB9CiAgICAgVUNoYXIgdGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRDb250
ZW50OyB9CkBAIC0xNDEsOSArMTQwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQWxs
b3dTdHJldGNoaW5nKCkgY29uc3Q7CiAKLSAgICBGbG9hdFJlY3QgYm91bmRzRm9yR2x5cGgoY29u
c3QgR2x5cGhEYXRhJikgY29uc3Q7Ci0gICAgZmxvYXQgaGVpZ2h0Rm9yR2x5cGgoY29uc3QgR2x5
cGhEYXRhJikgY29uc3Q7Ci0KICAgICBib29sIGdldEdseXBoQXNzZW1ibHlGYWxsQmFjayhWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiwgU3RyZXRjaHlEYXRhJikgY29uc3Q7
CiAgICAgU3RyZXRjaHlEYXRhIGdldERpc3BsYXlTdHlsZUxhcmdlT3BlcmF0b3IoVUNoYXIpIGNv
bnN0OwogICAgIFN0cmV0Y2h5RGF0YSBmaW5kU3RyZXRjaHlEYXRhKFVDaGFyLCBmbG9hdCogbWF4
aW11bUdseXBoV2lkdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276388</attachid>
            <date>2016-04-14 04:44:30 -0700</date>
            <delta_ts>2016-04-14 09:44:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156571-20160414134441.patch</filename>
            <type>text/plain</type>
            <size>11746</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjE2MjgxNzNjZGFlZmMx
ZmJhNjBkZGQ3MjkzYzAzYWE5NTg5YjMwYS4uYWFmOWExNDhkMTc5ZWI0NGZkZDg5ZWQyMmVhYjYw
YWExZGI2OGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA0LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvcjogTW92ZSBnbHlwaCBtZWFzdXJpbmcgaGVscGVyIGZ1bmN0aW9ucyBvdXRzaWRlIHRoZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2
NTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCB0aGlzIGlzIGp1c3QgYSBzaW1wbGUgcmVmYWN0b3JpbmcgdG8gcHJlcGFyZSB0
aGUgcGF0Y2gKKyAgICAgICAgZm9yIGJ1ZyAxNTY1NDIsIHdpdGhvdXQgYW55IGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwOiBNQVRITUxfT1BESUNUX1NJWkUgd2FzIHJlbW92ZWQgaW4gYnVnIDE1MjI0Miwgc28gbm8g
bmVlZCB0byB1bmRlZiBpdC4KKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kc0ZvckdseXBoKTogU3Rh
dGljIGlubGluZSBoZWxwZXIgZnVuY3Rpb24gbW92ZWQgZnJvbSB0aGUgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IgY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjpoZWlnaHRGb3JHbHlwaCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZVdpZHRoRm9yR2x5cGgpOiBEaXR0byBhbmQgcmVuYW1l
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyk6IFJlbmFtZSBhZHZhbmNlRm9yR2x5cGguCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmluZFN0cmV0Y2h5RGF0YSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZVN0eWxlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnRHbHlwaCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dHJhaWxpbmdTcGFj
ZUVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
c2V0T3BlcmF0b3JQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTE9wZXJhdG9yOjpib3VuZHNGb3JHbHlwaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6aGVpZ2h0Rm9yR2x5cGgpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmFkdmFuY2VGb3JHbHlwaCk6IERl
bGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
OgorCiAyMDE2LTA0LTE0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViR0wgYmFzZWQgY2FudmFzZXMgY29tcG9zaXRlIGluY29ycmVjdGx5IGFmdGVyIGNo
YW5naW5nIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggOTM4YThlNDdhNWQwZjBmNjQ1ZjI0NmE2
MzM1ZTgwNjRiOTY4MTk1OS4uMGFhY2ViMTdmNGQ0YjE0YmE5YzdmYmVhOGYzNDg4ZWVkNjM3YWQ1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE4NSw3ICsxODUsNiBAQCB2b2lkIFJlbmRlck1hdGhN
TE9wZXJhdG9yOjpzZXRPcGVyYXRvclByb3BlcnRpZXMoKQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQotI3VuZGVmIE1BVEhNTF9PUERJQ1RfU0laRQogCiAgICAgaWYgKCFpc0Fub255
bW91cygpKSB7CiAgICAgICAgIC8vIEZpbmFsbHksIHdlIG1ha2UgdGhlIGF0dHJpYnV0ZSB2YWx1
ZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQuCkBAIC0yNjYsMTcgKzI2NSwxNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjpyZXNldFN0cmV0Y2hTaXplKCkKICAgICAgICAgbV9zdHJldGNoV2lk
dGggPSAwOwogfQogCi1GbG9hdFJlY3QgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmJvdW5kc0Zvckds
eXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkgY29uc3QKK3N0YXRpYyBpbmxpbmUgRmxvYXRSZWN0
IGJvdW5kc0ZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKICAgICByZXR1cm4gZGF0
YS5mb250ICYmIGRhdGEuZ2x5cGggPyBkYXRhLmZvbnQtPmJvdW5kc0ZvckdseXBoKGRhdGEuZ2x5
cGgpIDogRmxvYXRSZWN0KCk7CiB9CiAKLWZsb2F0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpoZWln
aHRGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEpIGNvbnN0CitzdGF0aWMgaW5saW5lIGZs
b2F0IGhlaWdodEZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKICAgICByZXR1cm4g
Ym91bmRzRm9yR2x5cGgoZGF0YSkuaGVpZ2h0KCk7CiB9CiAKLWZsb2F0IFJlbmRlck1hdGhNTE9w
ZXJhdG9yOjphZHZhbmNlRm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJiBkYXRhKSBjb25zdAorc3Rh
dGljIGlubGluZSBmbG9hdCBhZHZhbmNlV2lkdGhGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRh
dGEpCiB7CiAgICAgcmV0dXJuIGRhdGEuZm9udCAmJiBkYXRhLmdseXBoID8gZGF0YS5mb250LT53
aWR0aEZvckdseXBoKGRhdGEuZ2x5cGgpIDogMDsKIH0KQEAgLTI5MSw3ICsyOTAsNyBAQCB2b2lk
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAg
ICAgICAgIGlmIChpc0ludmlzaWJsZU9wZXJhdG9yKCkpIHsKICAgICAgICAgICAgIC8vIEluIHNv
bWUgZm9udHMsIGdseXBocyBmb3IgaW52aXNpYmxlIG9wZXJhdG9ycyBoYXZlIG5vbnplcm8gd2lk
dGguIENvbnNlcXVlbnRseSwgd2Ugc3VidHJhY3QgdGhhdCB3aWR0aCBoZXJlIHRvIGF2b2lkIHdp
ZGUgZ2Fwcy4KICAgICAgICAgICAgIEdseXBoRGF0YSBkYXRhID0gc3R5bGUoKS5mb250Q2FzY2Fk
ZSgpLmdseXBoRGF0YUZvckNoYXJhY3RlcihtX3RleHRDb250ZW50LCBmYWxzZSk7Ci0gICAgICAg
ICAgICBmbG9hdCBnbHlwaFdpZHRoID0gYWR2YW5jZUZvckdseXBoKGRhdGEpOworICAgICAgICAg
ICAgZmxvYXQgZ2x5cGhXaWR0aCA9IGFkdmFuY2VXaWR0aEZvckdseXBoKGRhdGEpOwogICAgICAg
ICAgICAgQVNTRVJUKGdseXBoV2lkdGggPD0gbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwog
ICAgICAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggLT0gZ2x5cGhXaWR0aDsKICAg
ICAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoIC09IGdseXBoV2lkdGg7CkBAIC0z
MDAsNyArMjk5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKQogICAgIH0KIAogICAgIEdseXBoRGF0YSBkYXRhID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3RlcihtX3RleHRDb250ZW50LCAhc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwotICAgIGZsb2F0IG1heGltdW1HbHlwaFdpZHRo
ID0gYWR2YW5jZUZvckdseXBoKGRhdGEpOworICAgIGZsb2F0IG1heGltdW1HbHlwaFdpZHRoID0g
YWR2YW5jZVdpZHRoRm9yR2x5cGgoZGF0YSk7CiAgICAgaWYgKCFtX2lzVmVydGljYWwpIHsKICAg
ICAgICAgaWYgKG1heGltdW1HbHlwaFdpZHRoIDwgc3RyZXRjaFNpemUoKSkKICAgICAgICAgICAg
IG1heGltdW1HbHlwaFdpZHRoID0gc3RyZXRjaFNpemUoKTsKQEAgLTUxOCwxMCArNTE3LDEwIEBA
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpTdHJldGNoeURhdGEgUmVuZGVyTWF0aE1MT3BlcmF0b3I6
OmZpbmRTdHJldGNoeURhdGEoVUNoYXIKICAgICAgICAgICAgIHNpemVWYXJpYW50LmdseXBoID0g
dmFyaWFudDsKICAgICAgICAgICAgIHNpemVWYXJpYW50LmZvbnQgPSAmcHJpbWFyeUZvbnQ7CiAg
ICAgICAgICAgICBpZiAobWF4aW11bUdseXBoV2lkdGgpCi0gICAgICAgICAgICAgICAgKm1heGlt
dW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZhbmNlRm9yR2x5
cGgoc2l6ZVZhcmlhbnQpKTsKKyAgICAgICAgICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBz
dGQ6Om1heCgqbWF4aW11bUdseXBoV2lkdGgsIGFkdmFuY2VXaWR0aEZvckdseXBoKHNpemVWYXJp
YW50KSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBkYXRhLnNldFNpemVW
YXJpYW50TW9kZShzaXplVmFyaWFudCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgc2l6ZSA9IG1f
aXNWZXJ0aWNhbCA/IGhlaWdodEZvckdseXBoKHNpemVWYXJpYW50KSA6IGFkdmFuY2VGb3JHbHlw
aChzaXplVmFyaWFudCk7CisgICAgICAgICAgICAgICAgZmxvYXQgc2l6ZSA9IG1faXNWZXJ0aWNh
bCA/IGhlaWdodEZvckdseXBoKHNpemVWYXJpYW50KSA6IGFkdmFuY2VXaWR0aEZvckdseXBoKHNp
emVWYXJpYW50KTsKICAgICAgICAgICAgICAgICBpZiAoc2l6ZSA+PSBzdHJldGNoU2l6ZSgpKSAK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICB9CkBAIC01NjYs
MTEgKzU2NSwxMSBAQCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6U3RyZXRjaHlEYXRhIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpmaW5kU3RyZXRjaHlEYXRhKFVDaGFyCiAKICAgICAvLyBJZiB3ZSBhcmUg
bWVhc3VyaW5nIHRoZSBtYXhpbXVtIHdpZHRoLCB2ZXJpZnkgZWFjaCBjb21wb25lbnQuCiAgICAg
aWYgKG1heGltdW1HbHlwaFdpZHRoKSB7Ci0gICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0
ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5jZUZvckdseXBoKGFzc2VtYmx5RGF0YS50
b3AoKSkpOwotICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11bUds
eXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChhc3NlbWJseURhdGEuZXh0ZW5zaW9uKCkpKTsKKyAg
ICAgICAgKm1heGltdW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBh
ZHZhbmNlV2lkdGhGb3JHbHlwaChhc3NlbWJseURhdGEudG9wKCkpKTsKKyAgICAgICAgKm1heGlt
dW1HbHlwaFdpZHRoID0gc3RkOjptYXgoKm1heGltdW1HbHlwaFdpZHRoLCBhZHZhbmNlV2lkdGhG
b3JHbHlwaChhc3NlbWJseURhdGEuZXh0ZW5zaW9uKCkpKTsKICAgICAgICAgaWYgKGFzc2VtYmx5
RGF0YS5taWRkbGUoKS5nbHlwaCkKLSAgICAgICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0
ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5jZUZvckdseXBoKGFzc2VtYmx5RGF0YS5t
aWRkbGUoKSkpOwotICAgICAgICAqbWF4aW11bUdseXBoV2lkdGggPSBzdGQ6Om1heCgqbWF4aW11
bUdseXBoV2lkdGgsIGFkdmFuY2VGb3JHbHlwaChhc3NlbWJseURhdGEuYm90dG9tKCkpKTsKKyAg
ICAgICAgICAgICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0
aCwgYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLm1pZGRsZSgpKSk7CisgICAgICAg
ICptYXhpbXVtR2x5cGhXaWR0aCA9IHN0ZDo6bWF4KCptYXhpbXVtR2x5cGhXaWR0aCwgYWR2YW5j
ZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmJvdHRvbSgpKSk7CiAgICAgICAgIHJldHVybiBh
c3NlbWJseURhdGE7CiAgICAgfQogCkBAIC01ODEsOSArNTgwLDkgQEAgUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OlN0cmV0Y2h5RGF0YSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmluZFN0cmV0Y2h5RGF0
YShVQ2hhcgogICAgICAgICBpZiAoYXNzZW1ibHlEYXRhLm1pZGRsZSgpLmdseXBoKQogICAgICAg
ICAgICAgc2l6ZSArPSBoZWlnaHRGb3JHbHlwaChhc3NlbWJseURhdGEubWlkZGxlKCkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHNpemUgPSBhZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmxl
ZnQoKSkgKyBhZHZhbmNlRm9yR2x5cGgoYXNzZW1ibHlEYXRhLnJpZ2h0KCkpOworICAgICAgICBz
aXplID0gYWR2YW5jZVdpZHRoRm9yR2x5cGgoYXNzZW1ibHlEYXRhLmxlZnQoKSkgKyBhZHZhbmNl
V2lkdGhGb3JHbHlwaChhc3NlbWJseURhdGEucmlnaHQoKSk7CiAgICAgICAgIGlmIChhc3NlbWJs
eURhdGEubWlkZGxlKCkuZ2x5cGgpCi0gICAgICAgICAgICBzaXplICs9IGFkdmFuY2VGb3JHbHlw
aChhc3NlbWJseURhdGEubWlkZGxlKCkpOworICAgICAgICAgICAgc2l6ZSArPSBhZHZhbmNlV2lk
dGhGb3JHbHlwaChhc3NlbWJseURhdGEubWlkZGxlKCkpOwogICAgIH0KICAgICBpZiAoc2l6ZSA+
IHN0cmV0Y2hTaXplKCkpCiAgICAgICAgIHJldHVybiBkYXRhOwpAQCAtNjE2LDcgKzYxNSw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZVN0eWxlKCkKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gV2UgZG8gbm90IHN0cmV0Y2ggaWYgdGhlIGJhc2UgZ2x5cGggaXMgbGFyZ2UgZW5v
dWdoLgogICAgICAgICBHbHlwaERhdGEgYmFzZUdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LmdseXBoRGF0YUZvckNoYXJhY3RlcihtX3RleHRDb250ZW50LCAhc3R5bGUoKS5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpOwotICAgICAgICBmbG9hdCBiYXNlU2l6ZSA9IG1faXNWZXJ0aWNhbCA/
IGhlaWdodEZvckdseXBoKGJhc2VHbHlwaCkgOiBhZHZhbmNlRm9yR2x5cGgoYmFzZUdseXBoKTsK
KyAgICAgICAgZmxvYXQgYmFzZVNpemUgPSBtX2lzVmVydGljYWwgPyBoZWlnaHRGb3JHbHlwaChi
YXNlR2x5cGgpIDogYWR2YW5jZVdpZHRoRm9yR2x5cGgoYmFzZUdseXBoKTsKICAgICAgICAgaWYg
KHN0cmV0Y2hTaXplKCkgPD0gYmFzZVNpemUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fc3RyZXRjaHlEYXRhID0gZmluZFN0cmV0Y2h5RGF0YShtX3RleHRDb250ZW50LCBudWxscHRy
KTsKQEAgLTY0NSw3ICs2NDQsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVT
dHlsZSgpCiAgICAgICAgICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlw
aChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAgICAgICAgICAgbV9zdHJldGNoSGVpZ2h0
QWJvdmVCYXNlbGluZSA9IC1nbHlwaEJvdW5kcy55KCk7CiAgICAgICAgICAgICBtX3N0cmV0Y2hE
ZXB0aEJlbG93QmFzZWxpbmUgPSBnbHlwaEJvdW5kcy5tYXhZKCk7Ci0gICAgICAgICAgICBtX3N0
cmV0Y2hXaWR0aCA9IGFkdmFuY2VGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwor
ICAgICAgICAgICAgbV9zdHJldGNoV2lkdGggPSBhZHZhbmNlV2lkdGhGb3JHbHlwaChtX3N0cmV0
Y2h5RGF0YS52YXJpYW50KCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fc3RyZXRjaHlEYXRhLm1v
ZGUoKSA9PSBEcmF3R2x5cGhBc3NlbWJseSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IGdseXBo
Qm91bmRzOwogICAgICAgICAgICAgbV9zdHJldGNoSGVpZ2h0QWJvdmVCYXNlbGluZSA9IDA7CkBA
IC03MzYsNyArNzM1LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnRH
bHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0IEdseXBoRGF0YSYgZGEKICAgICBpbmZvLmNvbnRl
eHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgR2x5cGhCdWZmZXIgYnVmZmVyOwotICAgIGJ1
ZmZlci5hZGQoZGF0YS5nbHlwaCwgZGF0YS5mb250LCBhZHZhbmNlRm9yR2x5cGgoZGF0YSkpOwor
ICAgIGJ1ZmZlci5hZGQoZGF0YS5nbHlwaCwgZGF0YS5mb250LCBhZHZhbmNlV2lkdGhGb3JHbHlw
aChkYXRhKSk7CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNj
YWRlKCksICpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luKTsKIAogICAgIHJldHVybiBn
bHlwaFBhaW50UmVjdDsKQEAgLTgyOSw3ICs4MjgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJh
dG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dAogICAgIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAg
ICAgICAgIEFTU0VSVChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgpOwogICAgICAgICBH
bHlwaEJ1ZmZlciBidWZmZXI7Ci0gICAgICAgIGJ1ZmZlci5hZGQobV9zdHJldGNoeURhdGEudmFy
aWFudCgpLmdseXBoLCBtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZm9udCwgYWR2YW5jZUZvckds
eXBoKG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKSkpOworICAgICAgICBidWZmZXIuYWRkKG1fc3Ry
ZXRjaHlEYXRhLnZhcmlhbnQoKS5nbHlwaCwgbV9zdHJldGNoeURhdGEudmFyaWFudCgpLmZvbnQs
IGFkdmFuY2VXaWR0aEZvckdseXBoKG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKSkpOwogICAgICAg
ICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBjZWlsZWRJbnRQb2ludChwYWludE9mZnNl
dCArIGxvY2F0aW9uKCkpOwogICAgICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNG
b3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAgICAgICBMYXlvdXRQb2ludCBv
cGVyYXRvck9yaWdpbihvcGVyYXRvclRvcExlZnQueCgpLCBvcGVyYXRvclRvcExlZnQueSgpIC0g
Z2x5cGhCb3VuZHMueSgpKTsKQEAgLTkyNSwxNyArOTI0LDE3IEBAIExheW91dFVuaXQgUmVuZGVy
TWF0aE1MT3BlcmF0b3I6OnRyYWlsaW5nU3BhY2VFcnJvcigpCiAKICAgICBpZiAobV9zdHJldGNo
eURhdGEubW9kZSgpID09IERyYXdOb3JtYWwpIHsKICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBz
dHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKHRleHRDb250ZW50KCks
ICFzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiB3aWR0
aCAtIGFkdmFuY2VGb3JHbHlwaChkYXRhKTsKKyAgICAgICAgcmV0dXJuIHdpZHRoIC0gYWR2YW5j
ZVdpZHRoRm9yR2x5cGgoZGF0YSk7CiAgICAgfQogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRhLm1v
ZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpCi0gICAgICAgIHJldHVybiB3aWR0aCAtIGFkdmFuY2VG
b3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOworICAgICAgICByZXR1cm4gd2lkdGgg
LSBhZHZhbmNlV2lkdGhGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogCi0gICAg
ZmxvYXQgYXNzZW1ibHlXaWR0aCA9IGFkdmFuY2VGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS50b3Ao
KSk7Ci0gICAgYXNzZW1ibHlXaWR0aCA9IHN0ZDo6bWF4KGFzc2VtYmx5V2lkdGgsIGFkdmFuY2VG
b3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5ib3R0b20oKSkpOwotICAgIGFzc2VtYmx5V2lkdGggPSBz
dGQ6Om1heChhc3NlbWJseVdpZHRoLCBhZHZhbmNlRm9yR2x5cGgobV9zdHJldGNoeURhdGEuZXh0
ZW5zaW9uKCkpKTsKKyAgICBmbG9hdCBhc3NlbWJseVdpZHRoID0gYWR2YW5jZVdpZHRoRm9yR2x5
cGgobV9zdHJldGNoeURhdGEudG9wKCkpOworICAgIGFzc2VtYmx5V2lkdGggPSBzdGQ6Om1heChh
c3NlbWJseVdpZHRoLCBhZHZhbmNlV2lkdGhGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5ib3R0b20o
KSkpOworICAgIGFzc2VtYmx5V2lkdGggPSBzdGQ6Om1heChhc3NlbWJseVdpZHRoLCBhZHZhbmNl
V2lkdGhGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5leHRlbnNpb24oKSkpOwogICAgIGlmIChtX3N0
cmV0Y2h5RGF0YS5taWRkbGUoKS5nbHlwaCkKLSAgICAgICAgYXNzZW1ibHlXaWR0aCA9IHN0ZDo6
bWF4KGFzc2VtYmx5V2lkdGgsIGFkdmFuY2VGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5taWRkbGUo
KSkpOworICAgICAgICBhc3NlbWJseVdpZHRoID0gc3RkOjptYXgoYXNzZW1ibHlXaWR0aCwgYWR2
YW5jZVdpZHRoRm9yR2x5cGgobV9zdHJldGNoeURhdGEubWlkZGxlKCkpKTsKICAgICByZXR1cm4g
d2lkdGggLSBhc3NlbWJseVdpZHRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggZTc1MjcyYmQ1MjI3
YzA5ZjRlYWQ0NzcyMWMyNzVlMTQ4Zjg4MDExOS4uNzEyNjY4M2Q0NTAyODhlMGUzNjEzN2Q4ZWJi
YTdlYjc4MTkzZWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaApAQCAtNjYsNyArNjYsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdG9yUHJvcGVydGllcygpOwogICAgIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKLSAgICBm
bG9hdCBhZHZhbmNlRm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRMZWFkaW5nU3BhY2UoTGF5b3V0VW5pdCBsZWFkaW5nU3BhY2UpIHsgbV9sZWFkaW5nU3BhY2Ug
PSBsZWFkaW5nU3BhY2U7IH0KICAgICB2b2lkIHNldFRyYWlsaW5nU3BhY2UoTGF5b3V0VW5pdCB0
cmFpbGluZ1NwYWNlKSB7IG1fdHJhaWxpbmdTcGFjZSA9IHRyYWlsaW5nU3BhY2U7IH0KICAgICBV
Q2hhciB0ZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dENvbnRlbnQ7IH0KQEAgLTE0
MSw5ICsxNDAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1N0cmV0Y2hpbmco
KSBjb25zdDsKIAotICAgIEZsb2F0UmVjdCBib3VuZHNGb3JHbHlwaChjb25zdCBHbHlwaERhdGEm
KSBjb25zdDsKLSAgICBmbG9hdCBoZWlnaHRGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmKSBjb25z
dDsKLQogICAgIGJvb2wgZ2V0R2x5cGhBc3NlbWJseUZhbGxCYWNrKFZlY3RvcjxPcGVuVHlwZU1h
dGhEYXRhOjpBc3NlbWJseVBhcnQ+LCBTdHJldGNoeURhdGEmKSBjb25zdDsKICAgICBTdHJldGNo
eURhdGEgZ2V0RGlzcGxheVN0eWxlTGFyZ2VPcGVyYXRvcihVQ2hhcikgY29uc3Q7CiAgICAgU3Ry
ZXRjaHlEYXRhIGZpbmRTdHJldGNoeURhdGEoVUNoYXIsIGZsb2F0KiBtYXhpbXVtR2x5cGhXaWR0
aCk7Cg==
</data>
<flag name="review"
          id="300682"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>