<?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>156893</bug_id>
          
          <creation_ts>2016-04-22 00:03:51 -0700</creation_ts>
          <short_desc>TextAutoSizingKey should use normal refcounting</short_desc>
          <delta_ts>2016-04-22 12:25:26 -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>WebKit 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>156846</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1186143</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-22 00:03:51 -0700</bug_when>
    <thetext>It uses custom refcounting unnecessarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186146</commentid>
    <comment_count>1</comment_count>
      <attachid>277014</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-22 00:21:10 -0700</bug_when>
    <thetext>Created attachment 277014
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186151</commentid>
    <comment_count>2</comment_count>
      <attachid>277017</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-22 00:33:57 -0700</bug_when>
    <thetext>Created attachment 277017
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186323</commentid>
    <comment_count>3</comment_count>
      <attachid>277017</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-04-22 11:03:20 -0700</bug_when>
    <thetext>Comment on attachment 277017
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186345</commentid>
    <comment_count>4</comment_count>
      <attachid>277082</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-22 11:42:55 -0700</bug_when>
    <thetext>Created attachment 277082
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186362</commentid>
    <comment_count>5</comment_count>
      <attachid>277082</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 12:25:19 -0700</bug_when>
    <thetext>Comment on attachment 277082
patch

Clearing flags on attachment: 277082

Committed r199893: &lt;http://trac.webkit.org/changeset/199893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1186363</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-22 12:25:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277014</attachid>
            <date>2016-04-22 00:21:10 -0700</date>
            <delta_ts>2016-04-22 00:33:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>text-autosize-clone-3.patch</filename>
            <type>text/plain</type>
            <size>15162</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTg3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA0LTIyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0QXV0b1NpemluZ0tleSBz
aG91bGQgdXNlIG5vcm1hbCByZWZjb3VudGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzcGVjaWFsIHJlZmNvdW50aW5nIG9mIHN0
eWxlIGluIGZhdm9yIG9mIFJlZlB0ci4gSXQgYWxzbyBiZWNvbWVzIGEgbW92ZS1vbmx5IHR5cGUK
KyAgICAgICAgdG8gc3VwcG9ydCBmdXR1cmUgc3dpdGNoIHRvIG5vbi1yZWZjb3VudGVkIFJlbmRl
clN0eWxlLgorCisgICAgICAgIEFsc28gZ2VuZXJhbCBjbGVhbnVwcyBhbmQgbW9kZXJuaXphdGlv
bi4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ1RyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRBdXRvU2l6aW5nVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YWRkQXV0b1NpemluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXNldEF1dG9TaXppbmdOb2Rlcyk6CisKKyAgICAgICAgICAgIEFkb3B0IHRvIGJlaW5n
IG1vdmUtb25seS4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisKKyAgICAgICAg
ICAgIENsb25lIHRoZSBzdHlsZSBmb3Igc2FmZXR5IGFnYWluc3QgbXV0YXRpb25zLiBDbG9uaW5n
IGlzIGNoZWFwLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ1ZhbHVlOjpudW1O
b2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2Rl
U2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6On5UZXh0QXV0b1NpemluZ0tleSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6b3BlcmF0b3I9
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpyZWYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmRlcmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEF1dG9TaXppbmdLZXk6OmlzRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5Ojpkb2MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmlzVmFsaWREb2MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmlzVmFsaWRTdHlsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRlZEtleURv
Yyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRl
ZEtleVN0eWxlKTogRGVsZXRlZC4KKworICAgICAgICAgICAgbV9kb2MgbWVtYmVyIGlzIG5vdCB1
c2VkIGZvciBhbnl0aGluZyBleGNlcHQgZGVsZXRlZCB2YWx1ZSBjb21wYXJpc29ucy4gUmVwbGFj
ZSBpdCB3aXRoIGEgYml0LgorCiAyMDE2LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTk3MzgpOiBUaGUgQU5HTEUgdXBk
YXRlIGJyb2tlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGluIEdUSysgcG9ydApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxOTk3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsMTIgKzQyMywxMiBAQCB1aW50
NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9CiAjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCiB2b2lkIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVk
VmFsdWUoVGV4dEF1dG9TaXppbmdLZXkmIHNsb3QpCiB7Ci0gICAgbmV3ICgmc2xvdCkgVGV4dEF1
dG9TaXppbmdLZXkoVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlTdHlsZSgpLCBUZXh0QXV0
b1NpemluZ0tleTo6ZGVsZXRlZEtleURvYygpKTsKKyAgICBuZXcgKCZzbG90KSBUZXh0QXV0b1Np
emluZ0tleShUZXh0QXV0b1NpemluZ0tleTo6RGVsZXRlZCk7CiB9CiAKIGJvb2wgVGV4dEF1dG9T
aXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuc3R5bGUoKSA9PSBUZXh0QXV0b1NpemluZ0tleTo6ZGVs
ZXRlZEtleVN0eWxlKCkgJiYgdmFsdWUuZG9jKCkgPT0gVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0
ZWRLZXlEb2MoKTsKKyAgICByZXR1cm4gdmFsdWUuaXNEZWxldGVkKCk7CiB9CiAjZW5kaWYKIApA
QCAtNTMxOSwxMSArNTMxOSwxMSBAQCBIVE1MQ2FudmFzRWxlbWVudCogRG9jdW1lbnQ6OmdldENT
U0NhbnZhCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiB2b2lkIERvY3VtZW50Ojph
ZGRBdXRvU2l6aW5nTm9kZShOb2RlKiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogewotICAg
IFRleHRBdXRvU2l6aW5nS2V5IGtleSgmbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSwgJmRvY3Vt
ZW50KCkpOwotICAgIFRleHRBdXRvU2l6aW5nTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90ZXh0
QXV0b1NpemVkTm9kZXMuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gVGV4dEF1dG9TaXppbmdWYWx1
ZTo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkTm9kZShub2RlLCBj
YW5kaWRhdGVTaXplKTsKKyAgICBUZXh0QXV0b1NpemluZ0tleSBrZXkoJm5vZGUtPnJlbmRlcmVy
KCktPnN0eWxlKCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0QXV0b1NpemVkTm9kZXMu
ZW5zdXJlKFdURk1vdmUoa2V5KSwgW10geworICAgICAgICByZXR1cm4gVGV4dEF1dG9TaXppbmdW
YWx1ZTo6Y3JlYXRlKCk7CisgICAgfSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YWRkTm9kZShub2RlLCBjYW5kaWRhdGVTaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dmFsaWRh
dGVBdXRvU2l6aW5nTm9kZXMoKQpAQCAtNTMzMywyMyArNTMzMywxNyBAQCB2b2lkIERvY3VtZW50
Ojp2YWxpZGF0ZUF1dG9TaXppbmdOb2RlcygpCiAgICAgICAgIFRleHRBdXRvU2l6aW5nVmFsdWUq
IHZhbHVlID0ga2V5VmFsdWVQYWlyLnZhbHVlLmdldCgpOwogICAgICAgICAvLyBVcGRhdGUgYWxs
IHRoZSBub2RlcyBpbiB0aGUgY29sbGVjdGlvbiB0byByZWZsZWN0IHRoZSBuZXcKICAgICAgICAg
Ly8gY2FuZGlkYXRlIHNpemUuCi0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQogICAgICAgICB2YWx1ZS0+YWRqdXN0Tm9kZVNpemVzKCk7Ci0gICAgICAgIGlmICgh
dmFsdWUtPm51bU5vZGVzKCkpCi0gICAgICAgICAgICBub2Rlc0ZvclJlbW92YWwuYXBwZW5kKGtl
eVZhbHVlUGFpci5rZXkpOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGtleSA6IG5vZGVzRm9yUmVt
b3ZhbCkKLSAgICAgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlKGtleSk7CisgICAgbV90
ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlSWYoW10gKFRleHRBdXRvU2l6aW5nTWFwOjpLZXlWYWx1
ZVBhaXJUeXBlJiBrZXlBbmRWYWx1ZSkgeworICAgICAgICByZXR1cm4gIWtleUFuZFZhbHVlLnZh
bHVlLT5udW1Ob2RlcygpOworICAgIH0pOwogfQogICAgIAogdm9pZCBEb2N1bWVudDo6cmVzZXRB
dXRvU2l6aW5nTm9kZXMoKQogewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3RleHRBdXRvU2l6
ZWROb2Rlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICB2YWx1
ZS0+cmVzZXQoKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdGV4dEF1dG9TaXpl
ZE5vZGVzLnZhbHVlcygpKQorICAgICAgICB2YWx1ZS0+cmVzZXQoKTsKICAgICBtX3RleHRBdXRv
U2l6ZWROb2Rlcy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEF1dG9TaXppbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b1NpemluZy5jcHAJKHJldmlzaW9uIDE5OTcyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYwICsz
NiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBjdXJy
ZW50U3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0
YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUpCiB7Ci0gICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmY3VycmVudFN0eWxlKTsKKyAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZjdXJyZW50U3R5bGUpOwogICAg
IGlmIChjdXJyZW50U3R5bGUubGFzdENoaWxkU3RhdGUoKSkKICAgICAgICAgbmV3U3R5bGUtPnNl
dExhc3RDaGlsZFN0YXRlKCk7CiAgICAgaWYgKGN1cnJlbnRTdHlsZS5maXJzdENoaWxkU3RhdGUo
KSkKICAgICAgICAgbmV3U3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOwotICAgIHJldHVybiBu
ZXdTdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1UZXh0QXV0b1Np
emluZ0tleTo6VGV4dEF1dG9TaXppbmdLZXkoKQotICAgIDogbV9zdHlsZSgwKQotICAgICwgbV9k
b2MoMCkKK1RleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleShEZWxldGVkVGFnKQor
ICAgIDogbV9pc0RlbGV0ZWQodHJ1ZSkKIHsKIH0KIAotVGV4dEF1dG9TaXppbmdLZXk6OlRleHRB
dXRvU2l6aW5nS2V5KFJlbmRlclN0eWxlKiBzdHlsZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IG1f
c3R5bGUoc3R5bGUpCi0gICAgLCBtX2RvYyhkb2MpCitUZXh0QXV0b1NpemluZ0tleTo6VGV4dEF1
dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDogbV9zdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmUoc3R5bGUpKQogewotICAgIHJlZigpOwotfQotCi1UZXh0QXV0b1NpemluZ0tleTo6
VGV4dEF1dG9TaXppbmdLZXkoY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIG90aGVyKQotICAgIDog
bV9zdHlsZShvdGhlci5tX3N0eWxlKQotICAgICwgbV9kb2Mob3RoZXIubV9kb2MpCi17Ci0gICAg
cmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5Ojp+VGV4dEF1dG9TaXppbmdLZXkoKQotewot
ICAgIGRlcmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5JiBUZXh0QXV0b1NpemluZ0tleTo6
b3BlcmF0b3I9KGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBvdGhlcikKLXsKLSAgICBvdGhlci5y
ZWYoKTsKLSAgICBkZXJlZigpOwotICAgIG1fc3R5bGUgPSBvdGhlci5tX3N0eWxlOwotICAgIG1f
ZG9jID0gb3RoZXIubV9kb2M7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIFRleHRBdXRv
U2l6aW5nS2V5OjpyZWYoKSBjb25zdAotewotICAgIGlmIChpc1ZhbGlkU3R5bGUoKSkKLSAgICAg
ICAgbV9zdHlsZS0+cmVmKCk7Ci19Ci0KLXZvaWQgVGV4dEF1dG9TaXppbmdLZXk6OmRlcmVmKCkg
Y29uc3QKLXsKLSAgICBpZiAoaXNWYWxpZFN0eWxlKCkgJiYgaXNWYWxpZERvYygpKQotICAgICAg
ICBtX3N0eWxlLT5kZXJlZigpOwogfQogCiBpbnQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6bnVtTm9k
ZXMoKSBjb25zdApAQCAtMTE0LDkgKzc4LDcgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjph
ZGp1c3ROb2RlU2l6ZQogICAgIC8vIGFsc28gbmVlZCB0byByZW1vdmUgdGhlIHN0eWxlIGZyb20g
dGhlIGRvY3VtZW50cyBtX3RleHRBdXRvU2l6ZWROb2RlcwogICAgIC8vIGNvbGxlY3Rpb24uICBS
ZXR1cm4gdHJ1ZSBpbmRpY2F0ZXMgd2UgbmVlZCB0byBkbyB0aGF0IHJlbW92YWwuCiAgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVzRm9yUmVtb3ZhbDsKLSAgICBIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+OjppdGVyYXRvciBlbmQgPSBtX2F1dG9TaXplZE5vZGVzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6aXRlcmF0b3IgaSA9IG1fYXV0b1NpemVkTm9kZXMuYmVn
aW4oKTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gYXV0b1NpemluZ05v
ZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6ZWROb2Rl
cykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCF0ZXh0IHx8ICF0ZXh0
LT5zdHlsZSgpLnRleHRTaXplQWRqdXN0KCkuaXNBdXRvKCkgfHwgIXRleHQtPmNhbmRpZGF0ZUNv
bXB1dGVkVGV4dFNpemUoKSkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIG5vZGUuCkBAIC0xMzYs
OSArOTgsOCBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVTaXplCiAgICAg
CiAgICAgLy8gQ29tcHV0ZSBhdmVyYWdlIHNpemUKICAgICBmbG9hdCBjdW11bGF0aXZlU2l6ZSA9
IDA7Ci0gICAgZW5kID0gbV9hdXRvU2l6ZWROb2Rlcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8
UmVmUHRyPE5vZGU+ID46Oml0ZXJhdG9yIGkgPSBtX2F1dG9TaXplZE5vZGVzLmJlZ2luKCk7IGkg
IT0gZW5kOyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vZGU+IGF1dG9TaXppbmdOb2RlID0gKmk7
CisgICAgZm9yIChhdXRvJiBhdXRvU2l6aW5nTm9kZSA6IG1fYXV0b1NpemVkTm9kZXMpIHsKKwog
ICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgY3VtdWxhdGl2ZVNpemUgKz0g
cmVuZGVyVGV4dC0+Y2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgpOwogICAgIH0KQEAgLTE0Nyw5
ICsxMDgsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVTaXplCiAgICAg
CiAgICAgLy8gQWRqdXN0IHNpemVzCiAgICAgYm9vbCBmaXJzdFBhc3MgPSB0cnVlOwotICAgIGVu
ZCA9IG1fYXV0b1NpemVkTm9kZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+OjppdGVyYXRvciBpID0gbV9hdXRvU2l6ZWROb2Rlcy5iZWdpbigpOyBpICE9IGVuZDsgKytp
KSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxOb2RlPiYgYXV0b1NpemluZ05vZGUgPSAqaTsKKyAg
ICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6ZWROb2RlcykgewogICAgICAg
ICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KGF1dG9TaXppbmdO
b2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKHRleHQgJiYgdGV4dC0+c3R5bGUoKS5mb250
RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSAhPSBhdmVyYWdlU2l6ZSkgewogICAgICAgICAg
ICAgZmxvYXQgc3BlY2lmaWVkU2l6ZSA9IHRleHQtPnN0eWxlKCkuZm9udERlc2NyaXB0aW9uKCku
c3BlY2lmaWVkU2l6ZSgpOwpAQCAtMTYwLDEyICsxMTksMTIgQEAgYm9vbCBUZXh0QXV0b1Npemlu
Z1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAgICAgIHNjYWxlQ2hhbmdlID0gYXZl
cmFnZVNpemUgLyBzcGVjaWZpZWRTaXplOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdp
dGhTdGF0ZSh0ZXh0LT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBjbG9uZVJl
bmRlclN0eWxlV2l0aFN0YXRlKHRleHQtPnN0eWxlKCkpOwogICAgICAgICAgICAgYXV0byBmb250
RGVzY3JpcHRpb24gPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGF2ZXJhZ2VTaXplKTsKICAgICAgICAgICAgIHN0
eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgICAgIHN0
eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1NpemluZ05vZGUtPmRvY3VtZW50KCkuZm9u
dFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgdGV4dC0+cGFyZW50KCktPnNldFN0eWxlKHN0eWxl
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgdGV4dC0+cGFyZW50KCktPnNldFN0eWxl
KFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUmVuZGVyRWxlbWVu
dCogcGFyZW50UmVuZGVyZXIgPSB0ZXh0LT5wYXJlbnQoKTsKICAgICAgICAgICAgIGlmIChwYXJl
bnRSZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpKQpAQCAtMTc0LDEwICsxMzMsMTAgQEAgYm9v
bCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAgLy8gSWYg
d2UgaGF2ZSBhIGxpc3Qgd2Ugc2hvdWxkIHJlc2l6ZSBMaXN0TWFya2VycyBzZXBhcmF0ZWx5Lgog
ICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBsaXN0TWFya2VyUmVuZGVyZXIgPSBwYXJlbnRSZW5k
ZXJlci0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgaWYgKGxpc3RNYXJrZXJSZW5kZXJlci0+
aXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShsaXN0TWFya2VyUmVuZGVyZXItPnN0eWxl
KCkpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0
YXRlKGxpc3RNYXJrZXJSZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgICAgICAgICAgc3R5bGUt
PnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIHN0
eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1NpemluZ05vZGUtPmRvY3VtZW50KCkuZm9u
dFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+
KCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KCpsaXN0TWFya2VyUmVu
ZGVyZXIpLnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gUmVzaXplIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgcGFyZW50
LgpAQCAtMTkyLDEyICsxNTEsMTIgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3RO
b2RlU2l6ZQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnQgbGluZUhlaWdodCA9IHNwZWNp
ZmllZExpbmVIZWlnaHQgKiBzY2FsZUNoYW5nZTsKICAgICAgICAgICAgIGlmICghbGluZUhlaWdo
dExlbmd0aC5pc0ZpeGVkKCkgfHwgbGluZUhlaWdodExlbmd0aC52YWx1ZSgpICE9IGxpbmVIZWln
aHQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1BhcmVudFN0eWxl
ID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICAg
ICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUocGFyZW50
U3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0eWxlLT5zZXRMaW5lSGVpZ2h0KExl
bmd0aChsaW5lSGVpZ2h0LCBGaXhlZCkpOwogICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0eWxl
LT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgIG5ld1BhcmVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsK
ICAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJmF1
dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKLSAgICAgICAgICAgICAg
ICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUobmV3UGFyZW50U3R5bGUucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgICAgICAgICAgcGFyZW50UmVuZGVyZXItPnNldFN0eWxlKFdURk1vdmUobmV3
UGFyZW50U3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIwNyw5
ICsxNjYsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVTaXplCiAKIHZv
aWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQoKQogewotICAgIEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+ID46Oml0ZXJhdG9yIGVuZCA9IG1fYXV0b1NpemVkTm9kZXMuZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBpID0gbV9hdXRvU2l6ZWROb2Rlcy5iZWdp
bigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxOb2RlPiYgYXV0b1Np
emluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6
ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVy
VGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCF0ZXh0KQog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTgsMTAgKzE3NSwxMCBAQCB2b2lkIFRleHRBdXRv
U2l6aW5nVmFsdWU6OnJlc2V0KCkKICAgICAgICAgZmxvYXQgb3JpZ2luYWxTaXplID0gZm9udERl
c2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5j
b21wdXRlZFNpemUoKSAhPSBvcmlnaW5hbFNpemUpIHsKICAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUob3JpZ2luYWxTaXplKTsKLSAgICAgICAgICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHRleHQtPnN0eWxl
KCkpOworICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUo
dGV4dC0+c3R5bGUoKSk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUo
JmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKLSAgICAgICAgICAg
IHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgICAgIHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gUmVzZXQgdGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQuCiAgICAg
ICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gdGV4dC0+cGFyZW50KCk7CkBAIC0y
MzQsMTEgKzE5MSwxMSBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KCkKICAgICAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlID0gcGFyZW50UmVuZGVyZXItPnN0eWxl
KCk7CiAgICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWlnaHQgPSBwYXJlbnRTdHlsZS5zcGVj
aWZpZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmlnaW5hbExpbmVIZWlnaHQgIT0gcGFy
ZW50U3R5bGUubGluZUhlaWdodCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7
CisgICAgICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhT
dGF0ZShwYXJlbnRTdHlsZSk7CiAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+c2V0TGluZUhl
aWdodChvcmlnaW5hbExpbmVIZWlnaHQpOwogICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPnNl
dEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICAgICAgbmV3UGFyZW50
U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+ZG9jdW1lbnQoKS5m
b250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUobmV3
UGFyZW50U3R5bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBwYXJlbnRSZW5kZXJl
ci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHlsZSkpOwogICAgICAgICB9CiAgICAgfQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmgJKHJldmlz
aW9uIDE5OTcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwyOSArNDAsMjcgQEAgY2xhc3MgTm9kZTsKIAogY2xhc3Mg
VGV4dEF1dG9TaXppbmdLZXkgewogcHVibGljOgotICAgIFRleHRBdXRvU2l6aW5nS2V5KCk7Ci0g
ICAgVGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqLCBEb2N1bWVudCopOwotICAgIH5UZXh0
QXV0b1NpemluZ0tleSgpOwotICAgIFRleHRBdXRvU2l6aW5nS2V5KGNvbnN0IFRleHRBdXRvU2l6
aW5nS2V5Jik7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkmIG9wZXJhdG9yPShjb25zdCBUZXh0QXV0
b1NpemluZ0tleSYpOwotICAgIERvY3VtZW50KiBkb2MoKSBjb25zdCB7IHJldHVybiBtX2RvYzsg
fQotICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KLSAg
ICBpbmxpbmUgYm9vbCBpc1ZhbGlkRG9jKCkgY29uc3QgeyByZXR1cm4gbV9kb2MgJiYgbV9kb2Mg
IT0gZGVsZXRlZEtleURvYygpOyB9Ci0gICAgaW5saW5lIGJvb2wgaXNWYWxpZFN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZSAmJiBtX3N0eWxlICE9IGRlbGV0ZWRLZXlTdHlsZSgpOyB9Ci0g
ICAgc3RhdGljIERvY3VtZW50KiBkZWxldGVkS2V5RG9jKCkgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxEb2N1bWVudCo+KC0xKTsgfQotICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogZGVsZXRlZEtl
eVN0eWxlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZW5kZXJTdHlsZSo+KC0xKTsgfQor
ICAgIFRleHRBdXRvU2l6aW5nS2V5KCkgPSBkZWZhdWx0OworICAgIGVudW0gRGVsZXRlZFRhZyB7
IERlbGV0ZWQgfTsKKyAgICBleHBsaWNpdCBUZXh0QXV0b1NpemluZ0tleShEZWxldGVkVGFnKTsK
KyAgICBleHBsaWNpdCBUZXh0QXV0b1NpemluZ0tleShSZW5kZXJTdHlsZSopOworICAgIFRleHRB
dXRvU2l6aW5nS2V5KFRleHRBdXRvU2l6aW5nS2V5JiYpID0gZGVmYXVsdDsKKworICAgIFRleHRB
dXRvU2l6aW5nS2V5JiBvcGVyYXRvcj0oVGV4dEF1dG9TaXppbmdLZXkmJikgPSBkZWZhdWx0Owor
CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsg
fQorICAgIGlubGluZSBib29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVk
OyB9CisKIHByaXZhdGU6Ci0gICAgdm9pZCByZWYoKSBjb25zdDsKLSAgICB2b2lkIGRlcmVmKCkg
Y29uc3Q7Ci0gICAgUmVuZGVyU3R5bGUqIG1fc3R5bGU7Ci0gICAgRG9jdW1lbnQqIG1fZG9jOwor
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKKyAgICBib29sIG1faXNEZWxldGVkIHsg
ZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dEF1dG9TaXpp
bmdLZXkmIGEsIGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBiKQogewotICAgIGlmIChhLmlzVmFs
aWRTdHlsZSgpICYmIGIuaXNWYWxpZFN0eWxlKCkpCi0gICAgICAgIHJldHVybiBhLnN0eWxlKCkt
PmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoYi5zdHlsZSgpKTsKLSAgICByZXR1cm4gYS5zdHlsZSgp
ID09IGIuc3R5bGUoKTsKKyAgICBpZiAoYS5pc0RlbGV0ZWQoKSB8fCBiLmlzRGVsZXRlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGEuc3R5bGUoKS0+ZXF1YWxGb3JUZXh0
QXV0b3NpemluZyhiLnN0eWxlKCkpOwogfQogCiBzdHJ1Y3QgVGV4dEF1dG9TaXppbmdIYXNoIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277017</attachid>
            <date>2016-04-22 00:33:57 -0700</date>
            <delta_ts>2016-04-22 11:42:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>text-autosize-clone-4.patch</filename>
            <type>text/plain</type>
            <size>15573</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTg3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA0LTIyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0QXV0b1NpemluZ0tleSBz
aG91bGQgdXNlIG5vcm1hbCByZWZjb3VudGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzcGVjaWFsIHJlZmNvdW50aW5nIG9mIHN0
eWxlIGluIGZhdm9yIG9mIFJlZlB0ci4gSXQgYWxzbyBiZWNvbWVzIGEgbW92ZS1vbmx5IHR5cGUK
KyAgICAgICAgdG8gc3VwcG9ydCBmdXR1cmUgc3dpdGNoIHRvIG5vbi1yZWZjb3VudGVkIFJlbmRl
clN0eWxlLgorCisgICAgICAgIEFsc28gZ2VuZXJhbCBjbGVhbnVwcyBhbmQgbW9kZXJuaXphdGlv
bi4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ1RyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRBdXRvU2l6aW5nVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6YWRkQXV0b1NpemluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXNldEF1dG9TaXppbmdOb2Rlcyk6CisKKyAgICAgICAgICAgIEFkb3B0IHRvIGJlaW5n
IG1vdmUtb25seS4KKworICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisKKyAgICAgICAg
ICAgIENsb25lIHRoZSBzdHlsZSBmb3Igc2FmZXR5IGFnYWluc3QgbXV0YXRpb25zLiBDbG9uaW5n
IGlzIGNoZWFwLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ1ZhbHVlOjpudW1O
b2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2Rl
U2l6ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6On5UZXh0QXV0b1NpemluZ0tleSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6b3BlcmF0b3I9
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpyZWYpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmRlcmVmKTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEF1dG9TaXppbmdLZXk6OmlzRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5Ojpkb2MpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmlzVmFsaWREb2MpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmlzVmFsaWRTdHlsZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRlZEtleURv
Yyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRl
ZEtleVN0eWxlKTogRGVsZXRlZC4KKworICAgICAgICAgICAgbV9kb2MgbWVtYmVyIGlzIG5vdCB1
c2VkIGZvciBhbnl0aGluZyBleGNlcHQgZGVsZXRlZCB2YWx1ZSBjb21wYXJpc29ucy4gUmVwbGFj
ZSBpdCB3aXRoIGEgYml0LgorCiAyMDE2LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxOTk3MzgpOiBUaGUgQU5HTEUgdXBk
YXRlIGJyb2tlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGluIEdUSysgcG9ydApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxOTk3MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsMTIgKzQyMywxMiBAQCB1aW50
NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9CiAjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCiB2b2lkIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVk
VmFsdWUoVGV4dEF1dG9TaXppbmdLZXkmIHNsb3QpCiB7Ci0gICAgbmV3ICgmc2xvdCkgVGV4dEF1
dG9TaXppbmdLZXkoVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlTdHlsZSgpLCBUZXh0QXV0
b1NpemluZ0tleTo6ZGVsZXRlZEtleURvYygpKTsKKyAgICBuZXcgKCZzbG90KSBUZXh0QXV0b1Np
emluZ0tleShUZXh0QXV0b1NpemluZ0tleTo6RGVsZXRlZCk7CiB9CiAKIGJvb2wgVGV4dEF1dG9T
aXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuc3R5bGUoKSA9PSBUZXh0QXV0b1NpemluZ0tleTo6ZGVs
ZXRlZEtleVN0eWxlKCkgJiYgdmFsdWUuZG9jKCkgPT0gVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0
ZWRLZXlEb2MoKTsKKyAgICByZXR1cm4gdmFsdWUuaXNEZWxldGVkKCk7CiB9CiAjZW5kaWYKIApA
QCAtNTMxOSwxMSArNTMxOSwxMSBAQCBIVE1MQ2FudmFzRWxlbWVudCogRG9jdW1lbnQ6OmdldENT
U0NhbnZhCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiB2b2lkIERvY3VtZW50Ojph
ZGRBdXRvU2l6aW5nTm9kZShOb2RlKiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQogewotICAg
IFRleHRBdXRvU2l6aW5nS2V5IGtleSgmbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSwgJmRvY3Vt
ZW50KCkpOwotICAgIFRleHRBdXRvU2l6aW5nTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV90ZXh0
QXV0b1NpemVkTm9kZXMuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gVGV4dEF1dG9TaXppbmdWYWx1
ZTo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkTm9kZShub2RlLCBj
YW5kaWRhdGVTaXplKTsKKyAgICBUZXh0QXV0b1NpemluZ0tleSBrZXkoJm5vZGUtPnJlbmRlcmVy
KCktPnN0eWxlKCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0QXV0b1NpemVkTm9kZXMu
ZW5zdXJlKFdURk1vdmUoa2V5KSwgW10geworICAgICAgICByZXR1cm4gVGV4dEF1dG9TaXppbmdW
YWx1ZTo6Y3JlYXRlKCk7CisgICAgfSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
YWRkTm9kZShub2RlLCBjYW5kaWRhdGVTaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dmFsaWRh
dGVBdXRvU2l6aW5nTm9kZXMoKQpAQCAtNTMzMywyMyArNTMzMywxNyBAQCB2b2lkIERvY3VtZW50
Ojp2YWxpZGF0ZUF1dG9TaXppbmdOb2RlcygpCiAgICAgICAgIFRleHRBdXRvU2l6aW5nVmFsdWUq
IHZhbHVlID0ga2V5VmFsdWVQYWlyLnZhbHVlLmdldCgpOwogICAgICAgICAvLyBVcGRhdGUgYWxs
IHRoZSBub2RlcyBpbiB0aGUgY29sbGVjdGlvbiB0byByZWZsZWN0IHRoZSBuZXcKICAgICAgICAg
Ly8gY2FuZGlkYXRlIHNpemUuCi0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLQogICAgICAgICB2YWx1ZS0+YWRqdXN0Tm9kZVNpemVzKCk7Ci0gICAgICAgIGlmICgh
dmFsdWUtPm51bU5vZGVzKCkpCi0gICAgICAgICAgICBub2Rlc0ZvclJlbW92YWwuYXBwZW5kKGtl
eVZhbHVlUGFpci5rZXkpOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGtleSA6IG5vZGVzRm9yUmVt
b3ZhbCkKLSAgICAgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlKGtleSk7CisgICAgbV90
ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlSWYoW10gKFRleHRBdXRvU2l6aW5nTWFwOjpLZXlWYWx1
ZVBhaXJUeXBlJiBrZXlBbmRWYWx1ZSkgeworICAgICAgICByZXR1cm4gIWtleUFuZFZhbHVlLnZh
bHVlLT5udW1Ob2RlcygpOworICAgIH0pOwogfQogICAgIAogdm9pZCBEb2N1bWVudDo6cmVzZXRB
dXRvU2l6aW5nTm9kZXMoKQogewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3RleHRBdXRvU2l6
ZWROb2Rlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICB2YWx1
ZS0+cmVzZXQoKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdGV4dEF1dG9TaXpl
ZE5vZGVzLnZhbHVlcygpKQorICAgICAgICB2YWx1ZS0+cmVzZXQoKTsKICAgICBtX3RleHRBdXRv
U2l6ZWROb2Rlcy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dEF1dG9TaXppbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0QXV0b1NpemluZy5jcHAJKHJldmlzaW9uIDE5OTcyNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYwICsz
NiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBjdXJy
ZW50U3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0
YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUpCiB7Ci0gICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmY3VycmVudFN0eWxlKTsKKyAg
ICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZjdXJyZW50U3R5bGUpOwogICAg
IGlmIChjdXJyZW50U3R5bGUubGFzdENoaWxkU3RhdGUoKSkKICAgICAgICAgbmV3U3R5bGUtPnNl
dExhc3RDaGlsZFN0YXRlKCk7CiAgICAgaWYgKGN1cnJlbnRTdHlsZS5maXJzdENoaWxkU3RhdGUo
KSkKICAgICAgICAgbmV3U3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOwotICAgIHJldHVybiBu
ZXdTdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1UZXh0QXV0b1Np
emluZ0tleTo6VGV4dEF1dG9TaXppbmdLZXkoKQotICAgIDogbV9zdHlsZSgwKQotICAgICwgbV9k
b2MoMCkKK1RleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleShEZWxldGVkVGFnKQor
ICAgIDogbV9pc0RlbGV0ZWQodHJ1ZSkKIHsKIH0KIAotVGV4dEF1dG9TaXppbmdLZXk6OlRleHRB
dXRvU2l6aW5nS2V5KFJlbmRlclN0eWxlKiBzdHlsZSwgRG9jdW1lbnQqIGRvYykKLSAgICA6IG1f
c3R5bGUoc3R5bGUpCi0gICAgLCBtX2RvYyhkb2MpCitUZXh0QXV0b1NpemluZ0tleTo6VGV4dEF1
dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDogbV9zdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmUoc3R5bGUpKQogewotICAgIHJlZigpOwotfQotCi1UZXh0QXV0b1NpemluZ0tleTo6
VGV4dEF1dG9TaXppbmdLZXkoY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIG90aGVyKQotICAgIDog
bV9zdHlsZShvdGhlci5tX3N0eWxlKQotICAgICwgbV9kb2Mob3RoZXIubV9kb2MpCi17Ci0gICAg
cmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5Ojp+VGV4dEF1dG9TaXppbmdLZXkoKQotewot
ICAgIGRlcmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5JiBUZXh0QXV0b1NpemluZ0tleTo6
b3BlcmF0b3I9KGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBvdGhlcikKLXsKLSAgICBvdGhlci5y
ZWYoKTsKLSAgICBkZXJlZigpOwotICAgIG1fc3R5bGUgPSBvdGhlci5tX3N0eWxlOwotICAgIG1f
ZG9jID0gb3RoZXIubV9kb2M7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lkIFRleHRBdXRv
U2l6aW5nS2V5OjpyZWYoKSBjb25zdAotewotICAgIGlmIChpc1ZhbGlkU3R5bGUoKSkKLSAgICAg
ICAgbV9zdHlsZS0+cmVmKCk7Ci19Ci0KLXZvaWQgVGV4dEF1dG9TaXppbmdLZXk6OmRlcmVmKCkg
Y29uc3QKLXsKLSAgICBpZiAoaXNWYWxpZFN0eWxlKCkgJiYgaXNWYWxpZERvYygpKQotICAgICAg
ICBtX3N0eWxlLT5kZXJlZigpOwogfQogCiBpbnQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6bnVtTm9k
ZXMoKSBjb25zdApAQCAtMTE0LDkgKzc4LDcgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjph
ZGp1c3ROb2RlU2l6ZQogICAgIC8vIGFsc28gbmVlZCB0byByZW1vdmUgdGhlIHN0eWxlIGZyb20g
dGhlIGRvY3VtZW50cyBtX3RleHRBdXRvU2l6ZWROb2RlcwogICAgIC8vIGNvbGxlY3Rpb24uICBS
ZXR1cm4gdHJ1ZSBpbmRpY2F0ZXMgd2UgbmVlZCB0byBkbyB0aGF0IHJlbW92YWwuCiAgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVzRm9yUmVtb3ZhbDsKLSAgICBIYXNoU2V0PFJlZlB0cjxO
b2RlPiA+OjppdGVyYXRvciBlbmQgPSBtX2F1dG9TaXplZE5vZGVzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6aXRlcmF0b3IgaSA9IG1fYXV0b1NpemVkTm9kZXMuYmVn
aW4oKTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gYXV0b1NpemluZ05v
ZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6ZWROb2Rl
cykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCF0ZXh0IHx8ICF0ZXh0
LT5zdHlsZSgpLnRleHRTaXplQWRqdXN0KCkuaXNBdXRvKCkgfHwgIXRleHQtPmNhbmRpZGF0ZUNv
bXB1dGVkVGV4dFNpemUoKSkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIG5vZGUuCkBAIC0xMjUs
OSArODcsOCBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVTaXplCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBub2Rlc0ZvclJlbW92YWwu
c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICBtX2F1dG9TaXplZE5vZGVzLnJlbW92ZShub2Rlc0ZvclJlbW92YWxbaV0pOworICAgIGZvciAo
YXV0byYgbm9kZSA6IG5vZGVzRm9yUmVtb3ZhbCkKKyAgICAgICAgbV9hdXRvU2l6ZWROb2Rlcy5y
ZW1vdmUobm9kZSk7CiAgICAgCiAgICAgLy8gSWYgd2Ugb25seSBoYXZlIG9uZSBwaWVjZSBvZiB0
ZXh0IHdpdGggdGhlIHN0eWxlIG9uIHRoZSBwYWdlIGRvbid0CiAgICAgLy8gYWRqdXN0IGl0J3Mg
c2l6ZS4KQEAgLTEzNiw5ICs5Nyw3IEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1ZTo6YWRqdXN0
Tm9kZVNpemUKICAgICAKICAgICAvLyBDb21wdXRlIGF2ZXJhZ2Ugc2l6ZQogICAgIGZsb2F0IGN1
bXVsYXRpdmVTaXplID0gMDsKLSAgICBlbmQgPSBtX2F1dG9TaXplZE5vZGVzLmVuZCgpOwotICAg
IGZvciAoSGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6aXRlcmF0b3IgaSA9IG1fYXV0b1NpemVkTm9k
ZXMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gYXV0b1Np
emluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6
ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gc3RhdGljX2Nhc3Q8
UmVuZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgY3VtdWxh
dGl2ZVNpemUgKz0gcmVuZGVyVGV4dC0+Y2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgpOwogICAg
IH0KQEAgLTE0Nyw5ICsxMDYsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5v
ZGVTaXplCiAgICAgCiAgICAgLy8gQWRqdXN0IHNpemVzCiAgICAgYm9vbCBmaXJzdFBhc3MgPSB0
cnVlOwotICAgIGVuZCA9IG1fYXV0b1NpemVkTm9kZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBpID0gbV9hdXRvU2l6ZWROb2Rlcy5iZWdpbigpOyBp
ICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxOb2RlPiYgYXV0b1NpemluZ05v
ZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRvU2l6ZWROb2Rl
cykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+
KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKHRleHQgJiYgdGV4dC0+
c3R5bGUoKS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSAhPSBhdmVyYWdlU2l6ZSkg
ewogICAgICAgICAgICAgZmxvYXQgc3BlY2lmaWVkU2l6ZSA9IHRleHQtPnN0eWxlKCkuZm9udERl
c2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwpAQCAtMTYwLDEyICsxMTcsMTIgQEAgYm9vbCBU
ZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAgICAgIHNjYWxl
Q2hhbmdlID0gYXZlcmFnZVNpemUgLyBzcGVjaWZpZWRTaXplOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY2xvbmVS
ZW5kZXJTdHlsZVdpdGhTdGF0ZSh0ZXh0LT5zdHlsZSgpKTsKKyAgICAgICAgICAgIGF1dG8gc3R5
bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHRleHQtPnN0eWxlKCkpOwogICAgICAgICAg
ICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGF2ZXJhZ2VTaXplKTsKICAg
ICAgICAgICAgIHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAg
ICAgICAgICAgIHN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1NpemluZ05vZGUtPmRv
Y3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgdGV4dC0+cGFyZW50KCktPnNl
dFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgdGV4dC0+cGFyZW50
KCktPnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
UmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSB0ZXh0LT5wYXJlbnQoKTsKICAgICAgICAg
ICAgIGlmIChwYXJlbnRSZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpKQpAQCAtMTc0LDEwICsx
MzEsMTAgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhIGxpc3Qgd2Ugc2hvdWxkIHJlc2l6ZSBMaXN0TWFya2VycyBz
ZXBhcmF0ZWx5LgogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBsaXN0TWFya2VyUmVuZGVyZXIg
PSBwYXJlbnRSZW5kZXJlci0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgaWYgKGxpc3RNYXJr
ZXJSZW5kZXJlci0+aXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShsaXN0TWFya2VyUmVu
ZGVyZXItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBjbG9uZVJlbmRl
clN0eWxlV2l0aFN0YXRlKGxpc3RNYXJrZXJSZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgICAgICAg
ICAgICAgc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAg
ICAgICAgICAgIHN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1NpemluZ05vZGUtPmRv
Y3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRl
ckxpc3RNYXJrZXI+KCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxlLnJlbGVhc2VO
b25OdWxsKCkpOworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KCps
aXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVzaXplIHRoZSBsaW5lIGhlaWdodCBv
ZiB0aGUgcGFyZW50LgpAQCAtMTkyLDEyICsxNDksMTIgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1Zh
bHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnQgbGluZUhl
aWdodCA9IHNwZWNpZmllZExpbmVIZWlnaHQgKiBzY2FsZUNoYW5nZTsKICAgICAgICAgICAgIGlm
ICghbGluZUhlaWdodExlbmd0aC5pc0ZpeGVkKCkgfHwgbGluZUhlaWdodExlbmd0aC52YWx1ZSgp
ICE9IGxpbmVIZWlnaHQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5l
d1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVyU3R5bGVXaXRo
U3RhdGUocGFyZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0eWxlLT5zZXRM
aW5lSGVpZ2h0KExlbmd0aChsaW5lSGVpZ2h0LCBGaXhlZCkpOwogICAgICAgICAgICAgICAgIG5l
d1BhcmVudFN0eWxlLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRMZW5ndGgpOwog
ICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERl
c2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+Zm9udENhc2NhZGUo
KS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsKLSAg
ICAgICAgICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUobmV3UGFyZW50U3R5bGUucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICAgICAgcGFyZW50UmVuZGVyZXItPnNldFN0eWxl
KFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTIwNyw5ICsxNjQsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5v
ZGVTaXplCiAKIHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQoKQogewotICAgIEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+ID46Oml0ZXJhdG9yIGVuZCA9IG1fYXV0b1NpemVkTm9kZXMuZW5kKCk7
Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBpID0gbV9hdXRvU2l6
ZWROb2Rlcy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxO
b2RlPiYgYXV0b1NpemluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2Rl
IDogbV9hdXRvU2l6ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAg
aWYgKCF0ZXh0KQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTgsMTAgKzE3MywxMCBAQCB2
b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KCkKICAgICAgICAgZmxvYXQgb3JpZ2luYWxT
aXplID0gZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKICAgICAgICAgaWYgKGZvbnRE
ZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAhPSBvcmlnaW5hbFNpemUpIHsKICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUob3JpZ2luYWxTaXplKTsKLSAgICAgICAg
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRl
KHRleHQtPnN0eWxlKCkpOworICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25lUmVuZGVyU3R5
bGVXaXRoU3RhdGUodGV4dC0+c3R5bGUoKSk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0Rm9udERl
c2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+Zm9udENhc2Nh
ZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3RvcigpKTsK
LSAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShzdHlsZS5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShXVEZNb3ZlKHN0eWxl
KSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gUmVzZXQgdGhlIGxpbmUgaGVpZ2h0IG9mIHRoZSBw
YXJlbnQuCiAgICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gdGV4dC0+cGFy
ZW50KCk7CkBAIC0yMzQsMTEgKzE4OSwxMSBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJl
c2V0KCkKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlID0gcGFyZW50UmVu
ZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWlnaHQgPSBwYXJl
bnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmlnaW5hbExpbmVI
ZWlnaHQgIT0gcGFyZW50U3R5bGUubGluZUhlaWdodCgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShw
YXJlbnRTdHlsZSk7CisgICAgICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5k
ZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7CiAgICAgICAgICAgICBuZXdQYXJlbnRTdHls
ZS0+c2V0TGluZUhlaWdodChvcmlnaW5hbExpbmVIZWlnaHQpOwogICAgICAgICAgICAgbmV3UGFy
ZW50U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogICAgICAgICAg
ICAgbmV3UGFyZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6aW5nTm9kZS0+
ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBwYXJlbnRSZW5kZXJlci0+
c2V0U3R5bGUobmV3UGFyZW50U3R5bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBw
YXJlbnRSZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHlsZSkpOwogICAgICAg
ICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRBdXRvU2l6
aW5nLmgJKHJldmlzaW9uIDE5OTcyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
QXV0b1NpemluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyOSArNDAsMjcgQEAgY2xhc3MgTm9k
ZTsKIAogY2xhc3MgVGV4dEF1dG9TaXppbmdLZXkgewogcHVibGljOgotICAgIFRleHRBdXRvU2l6
aW5nS2V5KCk7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqLCBEb2N1bWVudCop
OwotICAgIH5UZXh0QXV0b1NpemluZ0tleSgpOwotICAgIFRleHRBdXRvU2l6aW5nS2V5KGNvbnN0
IFRleHRBdXRvU2l6aW5nS2V5Jik7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkmIG9wZXJhdG9yPShj
b25zdCBUZXh0QXV0b1NpemluZ0tleSYpOwotICAgIERvY3VtZW50KiBkb2MoKSBjb25zdCB7IHJl
dHVybiBtX2RvYzsgfQotICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3R5bGU7IH0KLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkRG9jKCkgY29uc3QgeyByZXR1cm4gbV9k
b2MgJiYgbV9kb2MgIT0gZGVsZXRlZEtleURvYygpOyB9Ci0gICAgaW5saW5lIGJvb2wgaXNWYWxp
ZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZSAmJiBtX3N0eWxlICE9IGRlbGV0ZWRLZXlT
dHlsZSgpOyB9Ci0gICAgc3RhdGljIERvY3VtZW50KiBkZWxldGVkS2V5RG9jKCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxEb2N1bWVudCo+KC0xKTsgfQotICAgIHN0YXRpYyBSZW5kZXJTdHls
ZSogZGVsZXRlZEtleVN0eWxlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZW5kZXJTdHls
ZSo+KC0xKTsgfQorICAgIFRleHRBdXRvU2l6aW5nS2V5KCkgPSBkZWZhdWx0OworICAgIGVudW0g
RGVsZXRlZFRhZyB7IERlbGV0ZWQgfTsKKyAgICBleHBsaWNpdCBUZXh0QXV0b1NpemluZ0tleShE
ZWxldGVkVGFnKTsKKyAgICBleHBsaWNpdCBUZXh0QXV0b1NpemluZ0tleShSZW5kZXJTdHlsZSop
OworICAgIFRleHRBdXRvU2l6aW5nS2V5KFRleHRBdXRvU2l6aW5nS2V5JiYpID0gZGVmYXVsdDsK
KworICAgIFRleHRBdXRvU2l6aW5nS2V5JiBvcGVyYXRvcj0oVGV4dEF1dG9TaXppbmdLZXkmJikg
PSBkZWZhdWx0OworCisgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZS5nZXQoKTsgfQorICAgIGlubGluZSBib29sIGlzRGVsZXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEZWxldGVkOyB9CisKIHByaXZhdGU6Ci0gICAgdm9pZCByZWYoKSBjb25zdDsKLSAgICB2
b2lkIGRlcmVmKCkgY29uc3Q7Ci0gICAgUmVuZGVyU3R5bGUqIG1fc3R5bGU7Ci0gICAgRG9jdW1l
bnQqIG1fZG9jOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKKyAgICBib29sIG1f
aXNEZWxldGVkIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dEF1dG9TaXppbmdLZXkmIGEsIGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBiKQogewotICAg
IGlmIChhLmlzVmFsaWRTdHlsZSgpICYmIGIuaXNWYWxpZFN0eWxlKCkpCi0gICAgICAgIHJldHVy
biBhLnN0eWxlKCktPmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoYi5zdHlsZSgpKTsKLSAgICByZXR1
cm4gYS5zdHlsZSgpID09IGIuc3R5bGUoKTsKKyAgICBpZiAoYS5pc0RlbGV0ZWQoKSB8fCBiLmlz
RGVsZXRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGEuc3R5bGUoKS0+
ZXF1YWxGb3JUZXh0QXV0b3NpemluZyhiLnN0eWxlKCkpOwogfQogCiBzdHJ1Y3QgVGV4dEF1dG9T
aXppbmdIYXNoIHsK
</data>
<flag name="review"
          id="301286"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277082</attachid>
            <date>2016-04-22 11:42:55 -0700</date>
            <delta_ts>2016-04-22 12:25:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>text-autosize-clone-5.patch</filename>
            <type>text/plain</type>
            <size>15657</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5OTg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTA0LTIyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0QXV0b1NpemluZ0tleSBz
aG91bGQgdXNlIG5vcm1hbCByZWZjb3VudGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2ODkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KKworICAgICAgICBHZXQgcmlkIG9mIHNwZWNpYWwgcmVmY291bnRpbmcgb2Ygc3R5
bGUgaW4gZmF2b3Igb2YgUmVmUHRyLiBJdCBhbHNvIGJlY29tZXMgYSBtb3ZlLW9ubHkgdHlwZQor
ICAgICAgICB0byBzdXBwb3J0IGZ1dHVyZSBzd2l0Y2ggdG8gbm9uLXJlZmNvdW50ZWQgUmVuZGVy
U3R5bGUuCisKKyAgICAgICAgQWxzbyBnZW5lcmFsIGNsZWFudXBzIGFuZCBtb2Rlcm5pemF0aW9u
LgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRB
dXRvU2l6aW5nVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEF1dG9TaXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphZGRBdXRvU2l6aW5nTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc2V0QXV0b1NpemluZ05vZGVzKToKKworICAgICAgICAgICAgQWRvcHQgdG8gYmVpbmcg
bW92ZS1vbmx5LgorCisgICAgICAgICogcmVuZGVyaW5nL1RleHRBdXRvU2l6aW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNsb25lUmVuZGVyU3R5bGVXaXRoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KToKKworICAgICAgICAg
ICAgQ2xvbmUgdGhlIHN0eWxlIGZvciBzYWZldHkgYWdhaW5zdCBtdXRhdGlvbnMuIENsb25pbmcg
aXMgY2hlYXAuCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFsdWU6Om51bU5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVT
aXplcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ1ZhbHVlOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6flRleHRBdXRvU2l6aW5nS2V5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OnJlZik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6ZGVyZWYpOiBEZWxl
dGVkLgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0QXV0b1NpemluZy5oOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OlRleHRBdXRvU2l6aW5nS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpzdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
QXV0b1NpemluZ0tleTo6aXNEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdLZXk6OmRvYyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6aXNWYWxpZERvYyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1NpemluZ0tleTo6aXNWYWxpZFN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpkZWxldGVkS2V5RG9j
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRBdXRvU2l6aW5nS2V5OjpkZWxldGVk
S2V5U3R5bGUpOiBEZWxldGVkLgorCisgICAgICAgICAgICBtX2RvYyBtZW1iZXIgaXMgbm90IHVz
ZWQgZm9yIGFueXRoaW5nIGV4Y2VwdCBkZWxldGVkIHZhbHVlIGNvbXBhcmlzb25zLiBSZXBsYWNl
IGl0IHdpdGggYSBiaXQuCisKIDIwMTYtMDQtMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTQ4OTgpOiBNdWx0aSBkb3dubG9hZCBv
ZiBleHRlcm5hbCBTVkcgZGVmcyBmaWxlIGJ5IDx1c2U+IHhsaW5rczpocmVmIChjYWNoaW5nKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxOTk4NzYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsMTIgKzQyOCwx
MiBAQCB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9CiAjaWYgRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCiB2b2lkIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpjb25zdHJ1
Y3REZWxldGVkVmFsdWUoVGV4dEF1dG9TaXppbmdLZXkmIHNsb3QpCiB7Ci0gICAgbmV3ICgmc2xv
dCkgVGV4dEF1dG9TaXppbmdLZXkoVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlTdHlsZSgp
LCBUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRlZEtleURvYygpKTsKKyAgICBuZXcgKCZzbG90KSBU
ZXh0QXV0b1NpemluZ0tleShUZXh0QXV0b1NpemluZ0tleTo6RGVsZXRlZCk7CiB9CiAKIGJvb2wg
VGV4dEF1dG9TaXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKGNvbnN0IFRleHRBdXRvU2l6aW5n
S2V5JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuc3R5bGUoKSA9PSBUZXh0QXV0b1Npemlu
Z0tleTo6ZGVsZXRlZEtleVN0eWxlKCkgJiYgdmFsdWUuZG9jKCkgPT0gVGV4dEF1dG9TaXppbmdL
ZXk6OmRlbGV0ZWRLZXlEb2MoKTsKKyAgICByZXR1cm4gdmFsdWUuaXNEZWxldGVkKCk7CiB9CiAj
ZW5kaWYKIApAQCAtNTI5MSwxMSArNTI5MSwxMSBAQCBIVE1MQ2FudmFzRWxlbWVudCogRG9jdW1l
bnQ6OmdldENTU0NhbnZhCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiB2b2lkIERv
Y3VtZW50OjphZGRBdXRvU2l6aW5nTm9kZShOb2RlKiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXpl
KQogewotICAgIFRleHRBdXRvU2l6aW5nS2V5IGtleSgmbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUo
KSwgJmRvY3VtZW50KCkpOwotICAgIFRleHRBdXRvU2l6aW5nTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV90ZXh0QXV0b1NpemVkTm9kZXMuYWRkKGtleSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gVGV4dEF1dG9T
aXppbmdWYWx1ZTo6Y3JlYXRlKCk7Ci0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+YWRkTm9k
ZShub2RlLCBjYW5kaWRhdGVTaXplKTsKKyAgICBUZXh0QXV0b1NpemluZ0tleSBrZXkoJm5vZGUt
PnJlbmRlcmVyKCktPnN0eWxlKCkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXh0QXV0b1Np
emVkTm9kZXMuZW5zdXJlKFdURk1vdmUoa2V5KSwgW10geworICAgICAgICByZXR1cm4gVGV4dEF1
dG9TaXppbmdWYWx1ZTo6Y3JlYXRlKCk7CisgICAgfSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+YWRkTm9kZShub2RlLCBjYW5kaWRhdGVTaXplKTsKIH0KIAogdm9pZCBEb2N1bWVu
dDo6dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMoKQpAQCAtNTMwNSwyMyArNTMwNSwxNyBAQCB2b2lk
IERvY3VtZW50Ojp2YWxpZGF0ZUF1dG9TaXppbmdOb2RlcygpCiAgICAgICAgIFRleHRBdXRvU2l6
aW5nVmFsdWUqIHZhbHVlID0ga2V5VmFsdWVQYWlyLnZhbHVlLmdldCgpOwogICAgICAgICAvLyBV
cGRhdGUgYWxsIHRoZSBub2RlcyBpbiB0aGUgY29sbGVjdGlvbiB0byByZWZsZWN0IHRoZSBuZXcK
ICAgICAgICAgLy8gY2FuZGlkYXRlIHNpemUuCi0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQogICAgICAgICB2YWx1ZS0+YWRqdXN0Tm9kZVNpemVzKCk7Ci0gICAg
ICAgIGlmICghdmFsdWUtPm51bU5vZGVzKCkpCi0gICAgICAgICAgICBub2Rlc0ZvclJlbW92YWwu
YXBwZW5kKGtleVZhbHVlUGFpci5rZXkpOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGtleSA6IG5v
ZGVzRm9yUmVtb3ZhbCkKLSAgICAgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlKGtleSk7
CisgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMucmVtb3ZlSWYoW10gKFRleHRBdXRvU2l6aW5nTWFw
OjpLZXlWYWx1ZVBhaXJUeXBlJiBrZXlBbmRWYWx1ZSkgeworICAgICAgICByZXR1cm4gIWtleUFu
ZFZhbHVlLnZhbHVlLT5udW1Ob2RlcygpOworICAgIH0pOwogfQogICAgIAogdm9pZCBEb2N1bWVu
dDo6cmVzZXRBdXRvU2l6aW5nTm9kZXMoKQogewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3Rl
eHRBdXRvU2l6ZWROb2Rlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAg
ICAgICB2YWx1ZS0+cmVzZXQoKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdGV4
dEF1dG9TaXplZE5vZGVzLnZhbHVlcygpKQorICAgICAgICB2YWx1ZS0+cmVzZXQoKTsKICAgICBt
X3RleHRBdXRvU2l6ZWROb2Rlcy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dEF1dG9TaXppbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAJKHJldmlzaW9uIDE5OTg3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0QXV0b1NpemluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYwICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGNvbnN0IFJlbmRlclN0
eWxlJiBjdXJyZW50U3R5bGUpCitzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjbG9uZVJlbmRlclN0
eWxlV2l0aFN0YXRlKGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUpCiB7Ci0gICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZSgmY3VycmVudFN0
eWxlKTsKKyAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKCZjdXJyZW50U3R5
bGUpOwogICAgIGlmIChjdXJyZW50U3R5bGUubGFzdENoaWxkU3RhdGUoKSkKICAgICAgICAgbmV3
U3R5bGUtPnNldExhc3RDaGlsZFN0YXRlKCk7CiAgICAgaWYgKGN1cnJlbnRTdHlsZS5maXJzdENo
aWxkU3RhdGUoKSkKICAgICAgICAgbmV3U3R5bGUtPnNldEZpcnN0Q2hpbGRTdGF0ZSgpOwotICAg
IHJldHVybiBuZXdTdHlsZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1U
ZXh0QXV0b1NpemluZ0tleTo6VGV4dEF1dG9TaXppbmdLZXkoKQotICAgIDogbV9zdHlsZSgwKQot
ICAgICwgbV9kb2MoMCkKK1RleHRBdXRvU2l6aW5nS2V5OjpUZXh0QXV0b1NpemluZ0tleShEZWxl
dGVkVGFnKQorICAgIDogbV9pc0RlbGV0ZWQodHJ1ZSkKIHsKIH0KIAotVGV4dEF1dG9TaXppbmdL
ZXk6OlRleHRBdXRvU2l6aW5nS2V5KFJlbmRlclN0eWxlKiBzdHlsZSwgRG9jdW1lbnQqIGRvYykK
LSAgICA6IG1fc3R5bGUoc3R5bGUpCi0gICAgLCBtX2RvYyhkb2MpCitUZXh0QXV0b1NpemluZ0tl
eTo6VGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDogbV9zdHlsZShS
ZW5kZXJTdHlsZTo6Y2xvbmUoc3R5bGUpKQogewotICAgIHJlZigpOwotfQotCi1UZXh0QXV0b1Np
emluZ0tleTo6VGV4dEF1dG9TaXppbmdLZXkoY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIG90aGVy
KQotICAgIDogbV9zdHlsZShvdGhlci5tX3N0eWxlKQotICAgICwgbV9kb2Mob3RoZXIubV9kb2Mp
Ci17Ci0gICAgcmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5Ojp+VGV4dEF1dG9TaXppbmdL
ZXkoKQotewotICAgIGRlcmVmKCk7Ci19Ci0KLVRleHRBdXRvU2l6aW5nS2V5JiBUZXh0QXV0b1Np
emluZ0tleTo6b3BlcmF0b3I9KGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBvdGhlcikKLXsKLSAg
ICBvdGhlci5yZWYoKTsKLSAgICBkZXJlZigpOwotICAgIG1fc3R5bGUgPSBvdGhlci5tX3N0eWxl
OwotICAgIG1fZG9jID0gb3RoZXIubV9kb2M7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi12b2lk
IFRleHRBdXRvU2l6aW5nS2V5OjpyZWYoKSBjb25zdAotewotICAgIGlmIChpc1ZhbGlkU3R5bGUo
KSkKLSAgICAgICAgbV9zdHlsZS0+cmVmKCk7Ci19Ci0KLXZvaWQgVGV4dEF1dG9TaXppbmdLZXk6
OmRlcmVmKCkgY29uc3QKLXsKLSAgICBpZiAoaXNWYWxpZFN0eWxlKCkgJiYgaXNWYWxpZERvYygp
KQotICAgICAgICBtX3N0eWxlLT5kZXJlZigpOwogfQogCiBpbnQgVGV4dEF1dG9TaXppbmdWYWx1
ZTo6bnVtTm9kZXMoKSBjb25zdApAQCAtMTE0LDkgKzc4LDcgQEAgYm9vbCBUZXh0QXV0b1Npemlu
Z1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgIC8vIGFsc28gbmVlZCB0byByZW1vdmUgdGhlIHN0
eWxlIGZyb20gdGhlIGRvY3VtZW50cyBtX3RleHRBdXRvU2l6ZWROb2RlcwogICAgIC8vIGNvbGxl
Y3Rpb24uICBSZXR1cm4gdHJ1ZSBpbmRpY2F0ZXMgd2UgbmVlZCB0byBkbyB0aGF0IHJlbW92YWwu
CiAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG5vZGVzRm9yUmVtb3ZhbDsKLSAgICBIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBlbmQgPSBtX2F1dG9TaXplZE5vZGVzLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6aXRlcmF0b3IgaSA9IG1fYXV0b1NpemVk
Tm9kZXMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9kZT4gYXV0
b1NpemluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRv
U2l6ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCF0ZXh0
IHx8ICF0ZXh0LT5zdHlsZSgpLnRleHRTaXplQWRqdXN0KCkuaXNBdXRvKCkgfHwgIXRleHQtPmNh
bmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoKSkgewogICAgICAgICAgICAgLy8gcmVtb3ZlIG5vZGUu
CkBAIC0xMjUsOSArODcsOCBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6OmFkanVzdE5vZGVT
aXplCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBub2Rlc0Zv
clJlbW92YWwuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQotICAgICAgICBtX2F1dG9TaXplZE5vZGVzLnJlbW92ZShub2Rlc0ZvclJlbW92YWxbaV0pOwor
ICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVzRm9yUmVtb3ZhbCkKKyAgICAgICAgbV9hdXRvU2l6
ZWROb2Rlcy5yZW1vdmUobm9kZSk7CiAgICAgCiAgICAgLy8gSWYgd2Ugb25seSBoYXZlIG9uZSBw
aWVjZSBvZiB0ZXh0IHdpdGggdGhlIHN0eWxlIG9uIHRoZSBwYWdlIGRvbid0CiAgICAgLy8gYWRq
dXN0IGl0J3Mgc2l6ZS4KQEAgLTEzNiw5ICs5Nyw3IEBAIGJvb2wgVGV4dEF1dG9TaXppbmdWYWx1
ZTo6YWRqdXN0Tm9kZVNpemUKICAgICAKICAgICAvLyBDb21wdXRlIGF2ZXJhZ2Ugc2l6ZQogICAg
IGZsb2F0IGN1bXVsYXRpdmVTaXplID0gMDsKLSAgICBlbmQgPSBtX2F1dG9TaXplZE5vZGVzLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8Tm9kZT4gPjo6aXRlcmF0b3IgaSA9IG1fYXV0
b1NpemVkTm9kZXMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBSZWZQdHI8Tm9k
ZT4gYXV0b1NpemluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDog
bV9hdXRvU2l6ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAg
ICAgY3VtdWxhdGl2ZVNpemUgKz0gcmVuZGVyVGV4dC0+Y2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6
ZSgpOwogICAgIH0KQEAgLTE0Nyw5ICsxMDYsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6
OmFkanVzdE5vZGVTaXplCiAgICAgCiAgICAgLy8gQWRqdXN0IHNpemVzCiAgICAgYm9vbCBmaXJz
dFBhc3MgPSB0cnVlOwotICAgIGVuZCA9IG1fYXV0b1NpemVkTm9kZXMuZW5kKCk7Ci0gICAgZm9y
IChIYXNoU2V0PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBpID0gbV9hdXRvU2l6ZWROb2Rlcy5i
ZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFJlZlB0cjxOb2RlPiYgYXV0
b1NpemluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9TaXppbmdOb2RlIDogbV9hdXRv
U2l6ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8UmVu
ZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKHRleHQg
JiYgdGV4dC0+c3R5bGUoKS5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSAhPSBhdmVy
YWdlU2l6ZSkgewogICAgICAgICAgICAgZmxvYXQgc3BlY2lmaWVkU2l6ZSA9IHRleHQtPnN0eWxl
KCkuZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpOwpAQCAtMTYwLDEyICsxMTcsMTIg
QEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAg
ICAgIHNjYWxlQ2hhbmdlID0gYXZlcmFnZVNpemUgLyBzcGVjaWZpZWRTaXplOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
ID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZSh0ZXh0LT5zdHlsZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKHRleHQtPnN0eWxlKCkpOwog
ICAgICAgICAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9u
KCk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGF2ZXJhZ2VT
aXplKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKICAgICAgICAgICAgIHN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1Npemlu
Z05vZGUtPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgdGV4dC0+cGFy
ZW50KCktPnNldFN0eWxlKHN0eWxlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgdGV4
dC0+cGFyZW50KCktPnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSB0ZXh0LT5wYXJlbnQoKTsK
ICAgICAgICAgICAgIGlmIChwYXJlbnRSZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpKQpAQCAt
MTc0LDEwICsxMzEsMTAgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6
ZQogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGxpc3Qgd2Ugc2hvdWxkIHJlc2l6ZSBMaXN0
TWFya2VycyBzZXBhcmF0ZWx5LgogICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBsaXN0TWFya2Vy
UmVuZGVyZXIgPSBwYXJlbnRSZW5kZXJlci0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgaWYg
KGxpc3RNYXJrZXJSZW5kZXJlci0+aXNMaXN0TWFya2VyKCkpIHsKLSAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShsaXN0
TWFya2VyUmVuZGVyZXItPnN0eWxlKCkpOworICAgICAgICAgICAgICAgIGF1dG8gc3R5bGUgPSBj
bG9uZVJlbmRlclN0eWxlV2l0aFN0YXRlKGxpc3RNYXJrZXJSZW5kZXJlci0+c3R5bGUoKSk7CiAg
ICAgICAgICAgICAgICAgc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
OwogICAgICAgICAgICAgICAgIHN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmYXV0b1Npemlu
Z05vZGUtPmRvY3VtZW50KCkuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICAgICAgICAgIGRvd25j
YXN0PFJlbmRlckxpc3RNYXJrZXI+KCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKHN0eWxl
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlckxpc3RN
YXJrZXI+KCpsaXN0TWFya2VyUmVuZGVyZXIpLnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVzaXplIHRoZSBsaW5l
IGhlaWdodCBvZiB0aGUgcGFyZW50LgpAQCAtMTkyLDEyICsxNDksMTIgQEAgYm9vbCBUZXh0QXV0
b1NpemluZ1ZhbHVlOjphZGp1c3ROb2RlU2l6ZQogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
bnQgbGluZUhlaWdodCA9IHNwZWNpZmllZExpbmVIZWlnaHQgKiBzY2FsZUNoYW5nZTsKICAgICAg
ICAgICAgIGlmICghbGluZUhlaWdodExlbmd0aC5pc0ZpeGVkKCkgfHwgbGluZUhlaWdodExlbmd0
aC52YWx1ZSgpICE9IGxpbmVIZWlnaHQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRT
dHlsZSk7CisgICAgICAgICAgICAgICAgYXV0byBuZXdQYXJlbnRTdHlsZSA9IGNsb25lUmVuZGVy
U3R5bGVXaXRoU3RhdGUocGFyZW50U3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0
eWxlLT5zZXRMaW5lSGVpZ2h0KExlbmd0aChsaW5lSGVpZ2h0LCBGaXhlZCkpOwogICAgICAgICAg
ICAgICAgIG5ld1BhcmVudFN0eWxlLT5zZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHRM
ZW5ndGgpOwogICAgICAgICAgICAgICAgIG5ld1BhcmVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICBuZXdQYXJlbnRTdHlsZS0+Zm9u
dENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxlY3Rv
cigpKTsKLSAgICAgICAgICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUobmV3UGFyZW50
U3R5bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICAgICAgcGFyZW50UmVuZGVyZXIt
PnNldFN0eWxlKFdURk1vdmUobmV3UGFyZW50U3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTIwNyw5ICsxNjQsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVmFsdWU6
OmFkanVzdE5vZGVTaXplCiAKIHZvaWQgVGV4dEF1dG9TaXppbmdWYWx1ZTo6cmVzZXQoKQogewot
ICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID46Oml0ZXJhdG9yIGVuZCA9IG1fYXV0b1NpemVkTm9k
ZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxOb2RlPiA+OjppdGVyYXRvciBpID0g
bV9hdXRvU2l6ZWROb2Rlcy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGNvbnN0
IFJlZlB0cjxOb2RlPiYgYXV0b1NpemluZ05vZGUgPSAqaTsKKyAgICBmb3IgKGF1dG8mIGF1dG9T
aXppbmdOb2RlIDogbV9hdXRvU2l6ZWROb2RlcykgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dCo+KGF1dG9TaXppbmdOb2RlLT5yZW5kZXJlcigpKTsK
ICAgICAgICAgaWYgKCF0ZXh0KQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMTgsMTAgKzE3
MywxMCBAQCB2b2lkIFRleHRBdXRvU2l6aW5nVmFsdWU6OnJlc2V0KCkKICAgICAgICAgZmxvYXQg
b3JpZ2luYWxTaXplID0gZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKICAgICAgICAg
aWYgKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAhPSBvcmlnaW5hbFNpemUpIHsKICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUob3JpZ2luYWxTaXplKTsK
LSAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBjbG9uZVJlbmRlclN0eWxl
V2l0aFN0YXRlKHRleHQtPnN0eWxlKCkpOworICAgICAgICAgICAgYXV0byBzdHlsZSA9IGNsb25l
UmVuZGVyU3R5bGVXaXRoU3RhdGUodGV4dC0+c3R5bGUoKSk7CiAgICAgICAgICAgICBzdHlsZS0+
c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiAgICAgICAgICAgICBzdHlsZS0+
Zm9udENhc2NhZGUoKS51cGRhdGUoJmF1dG9TaXppbmdOb2RlLT5kb2N1bWVudCgpLmZvbnRTZWxl
Y3RvcigpKTsKLSAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShzdHlsZS5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIHRleHQtPnBhcmVudCgpLT5zZXRTdHlsZShXVEZN
b3ZlKHN0eWxlKSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gUmVzZXQgdGhlIGxpbmUgaGVpZ2h0
IG9mIHRoZSBwYXJlbnQuCiAgICAgICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0g
dGV4dC0+cGFyZW50KCk7CkBAIC0yMzQsMTEgKzE4OSwxMSBAQCB2b2lkIFRleHRBdXRvU2l6aW5n
VmFsdWU6OnJlc2V0KCkKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlID0g
cGFyZW50UmVuZGVyZXItPnN0eWxlKCk7CiAgICAgICAgIExlbmd0aCBvcmlnaW5hbExpbmVIZWln
aHQgPSBwYXJlbnRTdHlsZS5zcGVjaWZpZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGlmIChvcmln
aW5hbExpbmVIZWlnaHQgIT0gcGFyZW50U3R5bGUubGluZUhlaWdodCgpKSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1BhcmVudFN0eWxlID0gY2xvbmVSZW5kZXJTdHlsZVdp
dGhTdGF0ZShwYXJlbnRTdHlsZSk7CisgICAgICAgICAgICBhdXRvIG5ld1BhcmVudFN0eWxlID0g
Y2xvbmVSZW5kZXJTdHlsZVdpdGhTdGF0ZShwYXJlbnRTdHlsZSk7CiAgICAgICAgICAgICBuZXdQ
YXJlbnRTdHlsZS0+c2V0TGluZUhlaWdodChvcmlnaW5hbExpbmVIZWlnaHQpOwogICAgICAgICAg
ICAgbmV3UGFyZW50U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwog
ICAgICAgICAgICAgbmV3UGFyZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZhdXRvU2l6
aW5nTm9kZS0+ZG9jdW1lbnQoKS5mb250U2VsZWN0b3IoKSk7Ci0gICAgICAgICAgICBwYXJlbnRS
ZW5kZXJlci0+c2V0U3R5bGUobmV3UGFyZW50U3R5bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgICAgICBwYXJlbnRSZW5kZXJlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdQYXJlbnRTdHlsZSkp
OwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRBdXRvU2l6aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRBdXRvU2l6aW5nLmgJKHJldmlzaW9uIDE5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0QXV0b1NpemluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyOSArNDAsMjkgQEAg
Y2xhc3MgTm9kZTsKIAogY2xhc3MgVGV4dEF1dG9TaXppbmdLZXkgewogcHVibGljOgotICAgIFRl
eHRBdXRvU2l6aW5nS2V5KCk7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkoUmVuZGVyU3R5bGUqLCBE
b2N1bWVudCopOwotICAgIH5UZXh0QXV0b1NpemluZ0tleSgpOwotICAgIFRleHRBdXRvU2l6aW5n
S2V5KGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5Jik7Ci0gICAgVGV4dEF1dG9TaXppbmdLZXkmIG9w
ZXJhdG9yPShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYpOwotICAgIERvY3VtZW50KiBkb2MoKSBj
b25zdCB7IHJldHVybiBtX2RvYzsgfQotICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGU7IH0KLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkRG9jKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2MgJiYgbV9kb2MgIT0gZGVsZXRlZEtleURvYygpOyB9Ci0gICAgaW5saW5lIGJv
b2wgaXNWYWxpZFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZSAmJiBtX3N0eWxlICE9IGRl
bGV0ZWRLZXlTdHlsZSgpOyB9Ci0gICAgc3RhdGljIERvY3VtZW50KiBkZWxldGVkS2V5RG9jKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxEb2N1bWVudCo+KC0xKTsgfQotICAgIHN0YXRpYyBS
ZW5kZXJTdHlsZSogZGVsZXRlZEtleVN0eWxlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxS
ZW5kZXJTdHlsZSo+KC0xKTsgfQorICAgIFRleHRBdXRvU2l6aW5nS2V5KCkgPSBkZWZhdWx0Owor
ICAgIGVudW0gRGVsZXRlZFRhZyB7IERlbGV0ZWQgfTsKKyAgICBleHBsaWNpdCBUZXh0QXV0b1Np
emluZ0tleShEZWxldGVkVGFnKTsKKyAgICBleHBsaWNpdCBUZXh0QXV0b1NpemluZ0tleShSZW5k
ZXJTdHlsZSopOworICAgIFRleHRBdXRvU2l6aW5nS2V5KFRleHRBdXRvU2l6aW5nS2V5JiYpID0g
ZGVmYXVsdDsKKworICAgIFRleHRBdXRvU2l6aW5nS2V5JiBvcGVyYXRvcj0oVGV4dEF1dG9TaXpp
bmdLZXkmJikgPSBkZWZhdWx0OworCisgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQorICAgIGlubGluZSBib29sIGlzRGVsZXRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEZWxldGVkOyB9CisKIHByaXZhdGU6Ci0gICAgdm9pZCByZWYoKSBjb25z
dDsKLSAgICB2b2lkIGRlcmVmKCkgY29uc3Q7Ci0gICAgUmVuZGVyU3R5bGUqIG1fc3R5bGU7Ci0g
ICAgRG9jdW1lbnQqIG1fZG9jOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKKyAg
ICBib29sIG1faXNEZWxldGVkIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIGEsIGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiBi
KQogewotICAgIGlmIChhLmlzVmFsaWRTdHlsZSgpICYmIGIuaXNWYWxpZFN0eWxlKCkpCi0gICAg
ICAgIHJldHVybiBhLnN0eWxlKCktPmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoYi5zdHlsZSgpKTsK
LSAgICByZXR1cm4gYS5zdHlsZSgpID09IGIuc3R5bGUoKTsKKyAgICBpZiAoYS5pc0RlbGV0ZWQo
KSB8fCBiLmlzRGVsZXRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFhLnN0
eWxlKCkgfHwgIWIuc3R5bGUoKSkKKyAgICAgICAgcmV0dXJuIGEuc3R5bGUoKSA9PSBiLnN0eWxl
KCk7CisgICAgcmV0dXJuIGEuc3R5bGUoKS0+ZXF1YWxGb3JUZXh0QXV0b3NpemluZyhiLnN0eWxl
KCkpOwogfQogCiBzdHJ1Y3QgVGV4dEF1dG9TaXppbmdIYXNoIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>