<?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>137573</bug_id>
          
          <creation_ts>2014-10-09 13:50:41 -0700</creation_ts>
          <short_desc>Use RenderObject::firstChildSlow() / lastChildSlow() less</short_desc>
          <delta_ts>2014-10-09 16:55:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mario</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040679</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 13:50:41 -0700</bug_when>
    <thetext>Use RenderObject::firstChildSlow() / lastChildSlow() less by using tighter typing at call sites whenever possible to be able to call RenderElement::firstChild() / lastChild() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040684</commentid>
    <comment_count>1</comment_count>
      <attachid>239567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 14:06:32 -0700</bug_when>
    <thetext>Created attachment 239567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040689</commentid>
    <comment_count>2</comment_count>
      <attachid>239570</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-09 14:31:26 -0700</bug_when>
    <thetext>Created attachment 239570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040726</commentid>
    <comment_count>3</comment_count>
      <attachid>239570</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-09 16:17:10 -0700</bug_when>
    <thetext>Comment on attachment 239570
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040748</commentid>
    <comment_count>4</comment_count>
      <attachid>239570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 16:55:48 -0700</bug_when>
    <thetext>Comment on attachment 239570
Patch

Clearing flags on attachment: 239570

Committed r174542: &lt;http://trac.webkit.org/changeset/174542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040749</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 16:55:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239567</attachid>
            <date>2014-10-09 14:06:32 -0700</date>
            <delta_ts>2014-10-09 14:31:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137573-20141009140635.patch</filename>
            <type>text/plain</type>
            <size>19618</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyMjFjNmJlZjkyMTk3
YzQ4NDE3NWUzMTI0NDNkNDNmOGE2YWY1ZC4uOTdmMWFmNzg4NjRjYjZmZDEwNTAwMDZkMWVmMDQz
NjM1NDE4ZWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIFJlbmRlck9iamVjdDo6
Zmlyc3RDaGlsZFNsb3coKSAvIGxhc3RDaGlsZFNsb3coKSBsZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVuZGVyT2JqZWN0OjpmaXJzdENo
aWxkU2xvdygpIC8gbGFzdENoaWxkU2xvdygpIGxlc3MgYnkgdXNpbmcKKyAgICAgICAgdGlnaHRl
ciB0eXBpbmcgYXQgY2FsbCBzaXRlcyB3aGVuZXZlciBwb3NzaWJsZSB0byBiZSBhYmxlIHRvIGNh
bGwgdGhlCisgICAgICAgIGZhc3RlciBSZW5kZXJFbGVtZW50OjpmaXJzdENoaWxkKCkgLyBsYXN0
Q2hpbGQoKSBpbnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1c2VzIG1vcmUgcmVm
ZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIHdoZW4gcG9zc2libGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RD
aGlsZElzSW5saW5lQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpsYXN0
Q2hpbGRIYXNDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RX
aXRoVGhyZXNob2xkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVuZGVyZWRDaGFy
YWN0ZXJzRXhjZWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5v
bnltb3VzUnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJs
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVy
OjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNG
b3JGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjo6Y29sbGVjdFRleHRQb3NpdGlvbmluZ0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRDaGFyYWN0ZXJEYXRhTWFw
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisKKzIwMTQt
MTAtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVbnJldmll
d2VkIEdUSyBidWlsZCBmaXggYWZ0ZXIgcjE3NDUwNC4KIAogICAgICAgICBNaXNzaW5nIGhlYWRl
ciBpbmNsdWRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNzZhN2I3OWFkMTQ0NmNmYTA4NTE3
NGE0ZDJkNTc1MDg4YjBmNjBkYi4uYzJhNTBkNWZhNDVhMjI1NDdmMDgxZWU0YjBiZTNiZDgyYzcz
ZTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zMDgsOSArMzA4LDkgQEAgc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGNoaWxkQmVmb3JlQ29uc2lkZXJpbmdDb250aW51YXRpb25zKFJl
bmRlcklubGluZSogcmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIGZpcnN0Q2hpbGRJc0lubGluZUNvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQorc3RhdGljIGlubGluZSBib29sIGZpcnN0Q2hpbGRJc0lubGluZUNvbnRpbnVhdGlvbihSZW5k
ZXJFbGVtZW50JiByZW5kZXJlcikKIHsKLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVy
ZXItPmZpcnN0Q2hpbGRTbG93KCk7CisgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVy
LmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gY2hpbGQgJiYgY2hpbGQtPmlzSW5saW5lRWxlbWVu
dENvbnRpbnVhdGlvbigpOwogfQogCkBAIC0zMjksOSArMzI5LDExIEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZygpIGNvbnN0
CiAKICAgICAvLyBDYXNlIDI6IEFub255bW91cyBibG9jayBwYXJlbnQgb2YgdGhlIGVuZCBvZiBh
IGNvbnRpbnVhdGlvbiAtIHNraXAgYWxsIHRoZSB3YXkgdG8gYmVmb3JlCiAgICAgLy8gdGhlIHBh
cmVudCBvZiB0aGUgc3RhcnQsIHNpbmNlIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB3aWxsIGJlIGxp
bmtlZCB1cCB2aWEgdGhlIGNvbnRpbnVhdGlvbi4KLSAgICBlbHNlIGlmIChtX3JlbmRlcmVyLT5p
c0Fub255bW91c0Jsb2NrKCkgJiYgZmlyc3RDaGlsZElzSW5saW5lQ29udGludWF0aW9uKG1fcmVu
ZGVyZXIpKSB7Ci0gICAgICAgIGF1dG8qIGZpcnN0UGFyZW50ID0gc3RhcnRPZkNvbnRpbnVhdGlv
bnMoKm1fcmVuZGVyZXItPmZpcnN0Q2hpbGRTbG93KCkpLT5wYXJlbnQoKTsKLSAgICAgICAgd2hp
bGUgKGZpcnN0Q2hpbGRJc0lubGluZUNvbnRpbnVhdGlvbihmaXJzdFBhcmVudCkpCisgICAgZWxz
ZSBpZiAobV9yZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpICYmIGZpcnN0Q2hpbGRJc0lubGlu
ZUNvbnRpbnVhdGlvbihkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm1fcmVuZGVyZXIpKSkgeworICAg
ICAgICBSZW5kZXJCbG9jayYgcmVuZGVyQmxvY2sgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm1f
cmVuZGVyZXIpOworICAgICAgICBhdXRvKiBmaXJzdFBhcmVudCA9IHN0YXJ0T2ZDb250aW51YXRp
b25zKCpyZW5kZXJCbG9jay5maXJzdENoaWxkKCkpLT5wYXJlbnQoKTsKKyAgICAgICAgQVNTRVJU
KGZpcnN0UGFyZW50KTsKKyAgICAgICAgd2hpbGUgKGZpcnN0Q2hpbGRJc0lubGluZUNvbnRpbnVh
dGlvbigqZmlyc3RQYXJlbnQpKQogICAgICAgICAgICAgZmlyc3RQYXJlbnQgPSBzdGFydE9mQ29u
dGludWF0aW9ucygqZmlyc3RQYXJlbnQtPmZpcnN0Q2hpbGQoKSktPnBhcmVudCgpOwogICAgICAg
ICBwcmV2aW91c1NpYmxpbmcgPSBmaXJzdFBhcmVudC0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAg
fQpAQCAtMzUxLDkgKzM1Myw5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZygpIGNvbnN0CiAgICAgcmV0dXJuIGF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocHJldmlvdXNTaWJsaW5nKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBib29sIGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
c3RhdGljIGlubGluZSBib29sIGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbihSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKIHsKLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXItPmxhc3RD
aGlsZFNsb3coKTsKKyAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gcmVuZGVyZXIubGFzdENoaWxk
KCk7CiAgICAgcmV0dXJuIGNoaWxkICYmIGlzSW5saW5lV2l0aENvbnRpbnVhdGlvbihjaGlsZCk7
CiB9CiAKQEAgLTM3Miw5ICszNzQsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6bmV4dFNpYmxpbmcoKSBjb25zdAogCiAgICAgLy8gQ2FzZSAyOiBB
bm9ueW1vdXMgYmxvY2sgcGFyZW50IG9mIHRoZSBzdGFydCBvZiBhIGNvbnRpbnVhdGlvbiAtIHNr
aXAgYWxsIHRoZSB3YXkgdG8KICAgICAvLyBhZnRlciB0aGUgcGFyZW50IG9mIHRoZSBlbmQsIHNp
bmNlIGV2ZXJ5dGhpbmcgaW4gYmV0d2VlbiB3aWxsIGJlIGxpbmtlZCB1cCB2aWEgdGhlIGNvbnRp
bnVhdGlvbi4KLSAgICBlbHNlIGlmIChtX3JlbmRlcmVyLT5pc0Fub255bW91c0Jsb2NrKCkgJiYg
bGFzdENoaWxkSGFzQ29udGludWF0aW9uKG1fcmVuZGVyZXIpKSB7CisgICAgZWxzZSBpZiAobV9y
ZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpICYmIGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbihk
b3duY2FzdDxSZW5kZXJCbG9jaz4oKm1fcmVuZGVyZXIpKSkgewogICAgICAgICBSZW5kZXJFbGVt
ZW50KiBsYXN0UGFyZW50ID0gZW5kT2ZDb250aW51YXRpb25zKCpkb3duY2FzdDxSZW5kZXJCbG9j
az4oKm1fcmVuZGVyZXIpLmxhc3RDaGlsZCgpKS0+cGFyZW50KCk7Ci0gICAgICAgIHdoaWxlIChs
YXN0Q2hpbGRIYXNDb250aW51YXRpb24obGFzdFBhcmVudCkpCisgICAgICAgIEFTU0VSVChsYXN0
UGFyZW50KTsKKyAgICAgICAgd2hpbGUgKGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbigqbGFzdFBh
cmVudCkpCiAgICAgICAgICAgICBsYXN0UGFyZW50ID0gZW5kT2ZDb250aW51YXRpb25zKCpsYXN0
UGFyZW50LT5sYXN0Q2hpbGQoKSktPnBhcmVudCgpOwogICAgICAgICBuZXh0U2libGluZyA9IGxh
c3RQYXJlbnQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IGJlNDM1YjFhZGFhMzRhMjRkNzNkZGU5ZTg2MGJiMzlkYWYyYjdjYzAuLjk2NzQ5OGQ5
OWU3ZDY2Y2E0MzNmODU1NmZmNGFiMDM1MjU1ZmIyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKQEAgLTIyMzQsMjUgKzIyMzQsMjQgQEAgdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250
ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmIHIpCiAgICAgU2Nyb2xsVmlldzo6cmVwYWludENv
bnRlbnRSZWN0YW5nbGUocik7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3VudFJlbmRlcmVkQ2hh
cmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZChjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCB1bnNpZ25lZCBjb3VudFNvRmFyLCB1bnNpZ25lZCB0aHJlc2hvbGQpCitzdGF0aWMg
dW5zaWduZWQgY291bnRSZW5kZXJlZENoYXJhY3RlcnNJblJlbmRlck9iamVjdFdpdGhUaHJlc2hv
bGQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIHVuc2lnbmVkIHRocmVzaG9sZCkKIHsK
LSAgICAvLyBGSVhNRTogQ29uc2lkZXIgd3JpdGluZyB0aGlzIHVzaW5nIFJlbmRlck9iamVjdDo6
bmV4dEluUHJlT3JkZXIoKSBpbnN0ZWFkIG9mIHVzaW5nIHJlY3Vyc2lvbi4KLSAgICBpZiAoaXM8
UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICBjb3VudFNvRmFyICs9IGRvd25jYXN0PFJl
bmRlclRleHQ+KHJlbmRlcmVyKS50ZXh0KCktPmxlbmd0aCgpOwotCi0gICAgZm9yIChSZW5kZXJP
YmplY3QqIGNoaWxkID0gcmVuZGVyZXIuZmlyc3RDaGlsZFNsb3coKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNvdW50U29GYXIgPj0gdGhyZXNo
b2xkKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNvdW50U29GYXIgPSBjb3VudFJlbmRl
cmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCgqY2hpbGQsIGNvdW50U29G
YXIsIHRocmVzaG9sZCk7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGZvciAoY29uc3Qg
UmVuZGVyT2JqZWN0KiBkZXNjZW5kYW50ID0gJnJlbmRlcmVyOyBkZXNjZW5kYW50OyBkZXNjZW5k
YW50ID0gZGVzY2VuZGFudC0+bmV4dEluUHJlT3JkZXIoKSkgeworICAgICAgICBpZiAoaXM8UmVu
ZGVyVGV4dD4oKmRlc2NlbmRhbnQpKSB7CisgICAgICAgICAgICBjb3VudCArPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PigqZGVzY2VuZGFudCkudGV4dCgpLT5sZW5ndGgoKTsKKyAgICAgICAgICAgIGlm
IChjb3VudCA+PSB0aHJlc2hvbGQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIGNvdW50U29GYXI7CisgICAgcmV0dXJuIGNvdW50OwogfQogCiBi
b29sIEZyYW1lVmlldzo6cmVuZGVyZWRDaGFyYWN0ZXJzRXhjZWVkKHVuc2lnbmVkIHRocmVzaG9s
ZCkKIHsKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmpl
Y3RXaXRoVGhyZXNob2xkKCptX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCwgdGhyZXNob2xk
KSA+PSB0aHJlc2hvbGQ7CisgICAgcmV0dXJuIGNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5k
ZXJPYmplY3RXaXRoVGhyZXNob2xkKCptX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgdGhyZXNo
b2xkKSA+PSB0aHJlc2hvbGQ7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojpjb250ZW50c1Jlc2l6ZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggZWQwNDg3NmY1
YWZkY2FlMDQ2NDAyYjBlOTNhZjA5ZDlkZDQ1MDYwZS4uOWM3MTJhYWE4NDllZDhjNmM3MDUxZWMx
ODM0ZTE3MTIwNDQyMmJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hp
bGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAgICBSZW5kZXJPYmplY3QqIGxh
c3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9CiAKKyAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFmaXJzdENoaWxkKCk7IH0KKwog
ICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIHN0YW5kYWxvbmUgYW5kIG1vdmUgdG8gcmVsZXZhbnQg
ZmlsZXMuCiAgICAgYm9vbCBpc1JlbmRlckxheWVyTW9kZWxPYmplY3QoKSBjb25zdDsKICAgICBi
b29sIGlzQm94TW9kZWxPYmplY3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5LmNwcAppbmRleCBjZGVjNTlhMDVhYjY1ZWM3NWM5ODgxYjc5ODhlMzNjYTVhYTE2MTFk
Li5mMDJhYmMwZGE5NWE3OGE4NGRhNmZmMTljYzcwMTAxNjI1MDA5NzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwCkBAIC00NiwzMCArNDYsMzAgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzQW5vbnltb3VzUnVieUlubGluZUJsb2NrKGNvbnN0IFJlbmRlck9iamVjdCog
b2JqZWN0KQogewogICAgIEFTU0VSVCghb2JqZWN0CiAgICAgICAgIHx8ICFvYmplY3QtPnBhcmVu
dCgpLT5pc1J1YnkoKQotICAgICAgICB8fCBvYmplY3QtPmlzUnVieVJ1bigpCisgICAgICAgIHx8
IGlzPFJlbmRlclJ1YnlSdW4+KCpvYmplY3QpCiAgICAgICAgIHx8IChvYmplY3QtPmlzSW5saW5l
KCkgJiYgKG9iamVjdC0+aXNCZWZvcmVDb250ZW50KCkgfHwgb2JqZWN0LT5pc0FmdGVyQ29udGVu
dCgpKSkKLSAgICAgICAgfHwgKG9iamVjdC0+aXNBbm9ueW1vdXMoKSAmJiBvYmplY3QtPmlzUmVu
ZGVyQmxvY2soKSAmJiBvYmplY3QtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9CTE9DSykp
OworICAgICAgICB8fCAob2JqZWN0LT5pc0Fub255bW91cygpICYmIGlzPFJlbmRlckJsb2NrPigq
b2JqZWN0KSAmJiBvYmplY3QtPnN0eWxlKCkuZGlzcGxheSgpID09IElOTElORV9CTE9DSykpOwog
CiAgICAgcmV0dXJuIG9iamVjdAogICAgICAgICAmJiBvYmplY3QtPnBhcmVudCgpLT5pc1J1Ynko
KQotICAgICAgICAmJiBvYmplY3QtPmlzUmVuZGVyQmxvY2soKQotICAgICAgICAmJiAhb2JqZWN0
LT5pc1J1YnlSdW4oKTsKKyAgICAgICAgJiYgaXM8UmVuZGVyQmxvY2s+KCpvYmplY3QpCisgICAg
ICAgICYmICFpczxSZW5kZXJSdWJ5UnVuPigqb2JqZWN0KTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIGlzUnVieUJlZm9yZUJsb2NrKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAg
IHJldHVybiBpc0Fub255bW91c1J1YnlJbmxpbmVCbG9jayhvYmplY3QpCiAgICAgICAgICYmICFv
YmplY3QtPnByZXZpb3VzU2libGluZygpCi0gICAgICAgICYmIG9iamVjdC0+Zmlyc3RDaGlsZFNs
b3coKQotICAgICAgICAmJiBvYmplY3QtPmZpcnN0Q2hpbGRTbG93KCktPnN0eWxlKCkuc3R5bGVU
eXBlKCkgPT0gQkVGT1JFOworICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVj
dCkuZmlyc3RDaGlsZCgpCisgICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0
KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gQkVGT1JFOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNSdWJ5QWZ0ZXJCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKICAgICByZXR1cm4gaXNBbm9ueW1vdXNSdWJ5SW5saW5lQmxvY2sob2JqZWN0KQogICAg
ICAgICAmJiAhb2JqZWN0LT5uZXh0U2libGluZygpCi0gICAgICAgICYmIG9iamVjdC0+Zmlyc3RD
aGlsZFNsb3coKQotICAgICAgICAmJiBvYmplY3QtPmZpcnN0Q2hpbGRTbG93KCktPnN0eWxlKCku
c3R5bGVUeXBlKCkgPT0gQUZURVI7CisgICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigq
b2JqZWN0KS5maXJzdENoaWxkKCkKKyAgICAgICAgJiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpv
YmplY3QpLmZpcnN0Q2hpbGQoKS0+c3R5bGUoKS5zdHlsZVR5cGUoKSA9PSBBRlRFUjsKIH0KIAog
c3RhdGljIGlubGluZSBSZW5kZXJCbG9jayogcnVieUJlZm9yZUJsb2NrKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJ1YnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0lubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmUuaAppbmRleCBlNWRhMTQ1YWQwZDFiMWFkYmE3ZGJmZjNjYTVmYTgxMjI0NDQ5ODZkLi4y
YzRlOTFhZDdjZGFlMmUyNTU1YTNmNmE5ZjljZGVmMDgwNzg0OGNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKQEAgLTY1LDYgKzY1LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogcmVtb3ZlQ2hpbGQoUmVuZGVyT2Jq
ZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdJbmxpbmUsIGlz
U1ZHSW5saW5lKCkpCiAKICNlbmRpZiAvLyAhUmVuZGVyU1ZHVFNwYW5fSApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggMTExM2ZhZDE2M2Zk
ZmFkN2ZkYjQwM2E3ZTM5YmMxZjI3NmEyMGRjMC4uOGU3NTkwNmM1NTE2N2JmYzJiZDA5ZTM2ZTJk
Y2RmNGM3NTI2ZDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlv
dXQoKQogICAgICAgICBBU1NFUlQobV9sYXlvdXRBdHRyaWJ1dGVzLmlzRW1wdHkoKSk7CiAgICAg
ICAgIGNvbGxlY3RMYXlvdXRBdHRyaWJ1dGVzKHRoaXMsIG1fbGF5b3V0QXR0cmlidXRlcyk7CiAg
ICAgICAgIHVwZGF0ZUZvbnRJbkFsbERlc2NlbmRhbnRzKHRoaXMpOwotICAgICAgICBtX2xheW91
dEF0dHJpYnV0ZXNCdWlsZGVyLmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvckZvclN1YnRyZWUodGhp
cyk7CisgICAgICAgIG1fbGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuYnVpbGRMYXlvdXRBdHRyaWJ1
dGVzRm9yRm9yU3VidHJlZSgqdGhpcyk7CiAKICAgICAgICAgbV9uZWVkc1Jlb3JkZXJpbmcgPSB0
cnVlOwogICAgICAgICBtX25lZWRzVGV4dE1ldHJpY3NVcGRhdGUgPSBmYWxzZTsKQEAgLTM3NSw3
ICszNzUsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OmxheW91dCgpCiAgICAgICAgICAgICBtX25l
ZWRzVGV4dE1ldHJpY3NVcGRhdGUgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG1fbGF5
b3V0QXR0cmlidXRlc0J1aWxkZXIuYnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZSh0
aGlzKTsKKyAgICAgICAgbV9sYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5idWlsZExheW91dEF0dHJp
YnV0ZXNGb3JGb3JTdWJ0cmVlKCp0aGlzKTsKICAgICAgICAgbV9uZWVkc1Jlb3JkZXJpbmcgPSB0
cnVlOwogICAgICAgICBtX25lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUgPSBmYWxzZTsKICAg
ICAgICAgdXBkYXRlQ2FjaGVkQm91bmRhcmllc0luUGFyZW50cyA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5jcHAKaW5kZXggNDQyNmUwYjA1OTYxNGJhOTI4ZDAwM2MyMDY4MmZjMjgy
MjFlZTI2OS4uNDY3YzIxNTgxYjIxZDUxNTA1ZjcyYjU2NmFhNDVhYmM0OGM0ZWU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oIgogCisj
aW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4
dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKICNpbmNsdWRlICJTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgiCkBAIC00MiwyMSArNDMsMTkgQEAgdm9pZCBTVkdUZXh0TGF5b3V0QXR0
cmlidXRlc0J1aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJlcihSZW5k
ZXIKIAogICAgICAgICBtX3RleHRMZW5ndGggPSAwOwogICAgICAgICBib29sIGxhc3RDaGFyYWN0
ZXJXYXNTcGFjZSA9IHRydWU7Ci0gICAgICAgIGNvbGxlY3RUZXh0UG9zaXRpb25pbmdFbGVtZW50
cyh0ZXh0Um9vdCwgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsKKyAgICAgICAgY29sbGVjdFRleHRQ
b3NpdGlvbmluZ0VsZW1lbnRzKCp0ZXh0Um9vdCwgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsKIAog
ICAgICAgICBpZiAoIW1fdGV4dExlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBidWlsZENoYXJhY3RlckRhdGFNYXAodGV4dFJvb3QpOworICAgICAgICBidWlsZENoYXJhY3Rl
ckRhdGFNYXAoKnRleHRSb290KTsKICAgICB9CiAKICAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxk
TWV0cmljc0FuZExheW91dEF0dHJpYnV0ZXModGV4dFJvb3QsICZ0ZXh0LCBtX2NoYXJhY3RlckRh
dGFNYXApOwogfQogCi1ib29sIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRM
YXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVkdUZXh0KiB0ZXh0Um9vdCkKK2Jv
b2wgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNG
b3JGb3JTdWJ0cmVlKFJlbmRlclNWR1RleHQmIHRleHRSb290KQogewotICAgIEFTU0VSVCh0ZXh0
Um9vdCk7Ci0KICAgICBtX2NoYXJhY3RlckRhdGFNYXAuY2xlYXIoKTsKIAogICAgIGlmIChtX3Rl
eHRQb3NpdGlvbnMuaXNFbXB0eSgpKSB7CkBAIC02OSw3ICs2OCw3IEBAIGJvb2wgU1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVl
KFJlbmRlclNWCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJ1aWxkQ2hhcmFjdGVyRGF0
YU1hcCh0ZXh0Um9vdCk7Ci0gICAgbV9tZXRyaWNzQnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlv
dXRBdHRyaWJ1dGVzKHRleHRSb290LCAwLCBtX2NoYXJhY3RlckRhdGFNYXApOworICAgIG1fbWV0
cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcygmdGV4dFJvb3QsIG51
bGxwdHIsIG1fY2hhcmFjdGVyRGF0YU1hcCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTk2
LDI1ICs5NSwyNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1JlbmRlclNWR0lubGluZVRl
eHQoY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4dCYgdGV4dCwgdQogICAgIH0KIH0KIAotdm9pZCBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmNvbGxlY3RUZXh0UG9zaXRpb25pbmdFbGVt
ZW50cyhSZW5kZXJPYmplY3QqIHN0YXJ0LCBib29sJiBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpCit2
b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6Y29sbGVjdFRleHRQb3NpdGlvbmlu
Z0VsZW1lbnRzKFJlbmRlckJveE1vZGVsT2JqZWN0JiBzdGFydCwgYm9vbCYgbGFzdENoYXJhY3Rl
cldhc1NwYWNlKQogewotICAgIEFTU0VSVCghc3RhcnQtPmlzU1ZHVGV4dCgpIHx8IG1fdGV4dFBv
c2l0aW9ucy5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghaXM8UmVuZGVyU1ZHVGV4dD4oc3RhcnQp
IHx8IG1fdGV4dFBvc2l0aW9ucy5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChSZW5kZXJPYmplY3Qq
IGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGRTbG93KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNTVkdJbmxpbmVUZXh0KCkpIHsK
LSAgICAgICAgICAgIHByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KCp0b1JlbmRlclNWR0lubGlu
ZVRleHQoY2hpbGQpLCBtX3RleHRMZW5ndGgsIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSk7CisgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gc3RhcnQuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5s
aW5lVGV4dD4oKmNoaWxkKSkgeworICAgICAgICAgICAgcHJvY2Vzc1JlbmRlclNWR0lubGluZVRl
eHQoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmNoaWxkKSwgbV90ZXh0TGVuZ3RoLCBs
YXN0Q2hhcmFjdGVyV2FzU3BhY2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoIWNoaWxkLT5pc1NWR0lubGluZSgpKQorICAgICAgICBpZiAoIWlzPFJl
bmRlclNWR0lubGluZT4oKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIGVsZW1lbnQgPSBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKGNoaWxkKTsKKyAgICAgICAgUmVuZGVyU1ZHSW5s
aW5lJiBpbmxpbmVDaGlsZCA9IGRvd25jYXN0PFJlbmRlclNWR0lubGluZT4oKmNoaWxkKTsKKyAg
ICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogZWxlbWVudCA9IFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoaW5saW5lQ2hpbGQpOworCiAgICAgICAg
IHVuc2lnbmVkIGF0UG9zaXRpb24gPSBtX3RleHRQb3NpdGlvbnMuc2l6ZSgpOwogICAgICAgICBp
ZiAoZWxlbWVudCkKICAgICAgICAgICAgIG1fdGV4dFBvc2l0aW9ucy5hcHBlbmQoVGV4dFBvc2l0
aW9uKGVsZW1lbnQsIG1fdGV4dExlbmd0aCkpOwogCi0gICAgICAgIGNvbGxlY3RUZXh0UG9zaXRp
b25pbmdFbGVtZW50cyhjaGlsZCwgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsKKyAgICAgICAgY29s
bGVjdFRleHRQb3NpdGlvbmluZ0VsZW1lbnRzKGlubGluZUNoaWxkLCBsYXN0Q2hhcmFjdGVyV2Fz
U3BhY2UpOwogCiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTI2LDcgKzEyNyw3IEBAIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpj
b2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoUmVuZGVyT2JqZWN0CiAgICAgfQogfQogCi12
b2lkIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRDaGFyYWN0ZXJEYXRhTWFw
KFJlbmRlclNWR1RleHQqIHRleHRSb290KQordm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXI6OmJ1aWxkQ2hhcmFjdGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0JiB0ZXh0Um9vdCkKIHsK
ICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiBvdXRlcm1vc3RUZXh0RWxlbWVudCA9IFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIodGV4dFJvb3QpOwog
ICAgIEFTU0VSVChvdXRlcm1vc3RUZXh0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIu
aAppbmRleCA0MjgyZDY1MGMzMDMxZGU5MDM1MTMxYjM5NzQxNjNmYjUxZDE3NThiLi4xNzM2Yjg4
NmJjMzQxZmY1OWE0NjQ1ZmY2YmQ2MjdkMGJhNzVhYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1
aWxkZXIpOwogcHVibGljOgogICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcigpOwot
ICAgIGJvb2wgYnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVkdUZXh0
Kik7CisgICAgYm9vbCBidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKFJlbmRlclNW
R1RleHQmKTsKICAgICB2b2lkIGJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJlcihS
ZW5kZXJTVkdJbmxpbmVUZXh0Jik7CiAKICAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4dFJl
bmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqKTsKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIH07CiAKLSAgICB2b2lkIGJ1aWxkQ2hhcmFj
dGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0Kik7Ci0gICAgdm9pZCBjb2xsZWN0VGV4dFBvc2l0aW9u
aW5nRWxlbWVudHMoUmVuZGVyT2JqZWN0KiwgYm9vbCYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsK
KyAgICB2b2lkIGJ1aWxkQ2hhcmFjdGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0Jik7CisgICAgdm9p
ZCBjb2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoUmVuZGVyQm94TW9kZWxPYmplY3QmLCBi
b29sJiBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpOwogICAgIHZvaWQgZmlsbENoYXJhY3RlckRhdGFN
YXAoY29uc3QgVGV4dFBvc2l0aW9uJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggNjkwMzU5Njg1NzU5Y2Fm
OTc3N2IyZDVkNGQwYmU1ZmNhYWU4ZTZlYy4uYmIxMjc0NjEzZGM3YWJjODNhYjUxN2FmYTNlZmE0
N2NlMGNmMjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJSZW5k
ZXJTVkdJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1RleHQuaCIKKyNpbmNsdWRlICJTVkdBbHRHbHlwaEVsZW1lbnQuaCIKICNpbmNs
dWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTE2MywyNyArMTY1LDI0IEBAIHZvaWQgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQqIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgaWYgKCFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIXJlbmRlcmVyLT5pc1NW
R0lubGluZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWlzPFJlbmRlclNWR1RleHQ+
KHJlbmRlcmVyKSAmJiAhaXM8UmVuZGVyU1ZHSW5saW5lPihyZW5kZXJlcikpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0gICAg
QVNTRVJUKG5vZGUpOwotICAgIEFTU0VSVChub2RlLT5pc1NWR0VsZW1lbnQoKSk7CisgICAgQVNT
RVJUKHJlbmRlcmVyLmVsZW1lbnQoKSk7CisgICAgU1ZHRWxlbWVudCYgZWxlbWVudCA9IGRvd25j
YXN0PFNWR0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogCi0gICAgaWYgKCFub2RlLT5o
YXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKQotICAgICAgICAmJiAhbm9kZS0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6dHNwYW5UYWcpCisgICAgaWYgKCFpczxTVkdUZXh0RWxlbWVudD4oZWxlbWVu
dCkKKyAgICAgICAgJiYgIWlzPFNWR1RTcGFuRWxlbWVudD4oZWxlbWVudCkKICNpZiBFTkFCTEUo
U1ZHX0ZPTlRTKQotICAgICAgICAmJiAhbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6YWx0R2x5
cGhUYWcpCisgICAgICAgICYmICFpczxTVkdBbHRHbHlwaEVsZW1lbnQ+KGVsZW1lbnQpCiAjZW5k
aWYKLSAgICAgICAgJiYgIW5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgJiYgIWlzPFNWR1RSZWZFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCo+KG5vZGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1
c2UgZG93bmNhc3Q8PigpLgorICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8U1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCY+KGVsZW1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAppbmRleCBiOWQ5ZTVlYmJjMGMyYWMxYzA0Y2JkZGZk
NzgwYzE0MGY0ZTY5ODI2Li42MjI5MGJjMTBjN2M2NDdjOGMxNWU2ZDY0NzM0M2E4YTNhNGE2NWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIGVsZW1lbnRGcm9tUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQq
IGVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKIAogcHJvdGVjdGVk
OgogICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239570</attachid>
            <date>2014-10-09 14:31:26 -0700</date>
            <delta_ts>2014-10-09 16:55:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137573-20141009143129.patch</filename>
            <type>text/plain</type>
            <size>19735</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiYWVlNDQ1YmI3ZjQ4
MjRiZTIwYjBlYzlkMzZhZWNmM2ViNDllOS4uOGQ4MWZjZGI2MzQ0ZDlmOWM0NGVmZTU3NDA3NTAy
ZGUxOThjOGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTEwLTA5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFJlbmRlck9iamVjdDo6
Zmlyc3RDaGlsZFNsb3coKSAvIGxhc3RDaGlsZFNsb3coKSBsZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgUmVuZGVyT2JqZWN0OjpmaXJzdENo
aWxkU2xvdygpIC8gbGFzdENoaWxkU2xvdygpIGxlc3MgYnkgdXNpbmcKKyAgICAgICAgdGlnaHRl
ciB0eXBpbmcgYXQgY2FsbCBzaXRlcyB3aGVuZXZlciBwb3NzaWJsZSB0byBiZSBhYmxlIHRvIGNh
bGwgdGhlCisgICAgICAgIGZhc3RlciBSZW5kZXJFbGVtZW50OjpmaXJzdENoaWxkKCkgLyBsYXN0
Q2hpbGQoKSBpbnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1c2VzIG1vcmUgcmVm
ZXJlbmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzIHdoZW4gcG9zc2libGUuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RD
aGlsZElzSW5saW5lQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpsYXN0
Q2hpbGRIYXNDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvdW50UmVuZGVyZWRDaGFyYWN0ZXJzSW5SZW5kZXJPYmplY3RX
aXRoVGhyZXNob2xkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVuZGVyZWRDaGFy
YWN0ZXJzRXhjZWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQW5v
bnltb3VzUnVieUlubGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUJlZm9yZUJs
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUnVieUFmdGVyQmxvY2spOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVy
OjpidWlsZExheW91dEF0dHJpYnV0ZXNGb3JUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91dEF0dHJpYnV0ZXNG
b3JGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjo6Y29sbGVjdFRleHRQb3NpdGlvbmluZ0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVpbGRDaGFyYWN0ZXJEYXRhTWFw
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRl
ci5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVy
ZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisKIDIwMTQt
MTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
TW92ZSBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyIHRvIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IDc2YTdiNzlhZDE0NDZjZmEwODUxNzRhNGQyZDU3NTA4OGIwZjYwZGIuLmMyYTUw
ZDVmYTQ1YTIyNTQ3ZjA4MWVlNGIwYmUzYmQ4MmM3M2U3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cApAQCAtMzA4LDkgKzMwOCw5IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBjaGlsZEJl
Zm9yZUNvbnNpZGVyaW5nQ29udGludWF0aW9ucyhSZW5kZXJJbmxpbmUqIHJlCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBmaXJzdENoaWxkSXNJbmxpbmVDb250
aW51YXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRpYyBpbmxpbmUgYm9vbCBmaXJz
dENoaWxkSXNJbmxpbmVDb250aW51YXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0g
ICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVyLT5maXJzdENoaWxkU2xvdygpOworICAg
IFJlbmRlck9iamVjdCogY2hpbGQgPSByZW5kZXJlci5maXJzdENoaWxkKCk7CiAgICAgcmV0dXJu
IGNoaWxkICYmIGNoaWxkLT5pc0lubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKIH0KIApAQCAt
MzI5LDkgKzMyOSwxMSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpwcmV2aW91c1NpYmxpbmcoKSBjb25zdAogCiAgICAgLy8gQ2FzZSAyOiBBbm9ueW1v
dXMgYmxvY2sgcGFyZW50IG9mIHRoZSBlbmQgb2YgYSBjb250aW51YXRpb24gLSBza2lwIGFsbCB0
aGUgd2F5IHRvIGJlZm9yZQogICAgIC8vIHRoZSBwYXJlbnQgb2YgdGhlIHN0YXJ0LCBzaW5jZSBl
dmVyeXRoaW5nIGluIGJldHdlZW4gd2lsbCBiZSBsaW5rZWQgdXAgdmlhIHRoZSBjb250aW51YXRp
b24uCi0gICAgZWxzZSBpZiAobV9yZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpICYmIGZpcnN0
Q2hpbGRJc0lubGluZUNvbnRpbnVhdGlvbihtX3JlbmRlcmVyKSkgewotICAgICAgICBhdXRvKiBm
aXJzdFBhcmVudCA9IHN0YXJ0T2ZDb250aW51YXRpb25zKCptX3JlbmRlcmVyLT5maXJzdENoaWxk
U2xvdygpKS0+cGFyZW50KCk7Ci0gICAgICAgIHdoaWxlIChmaXJzdENoaWxkSXNJbmxpbmVDb250
aW51YXRpb24oZmlyc3RQYXJlbnQpKQorICAgIGVsc2UgaWYgKG1fcmVuZGVyZXItPmlzQW5vbnlt
b3VzQmxvY2soKSAmJiBmaXJzdENoaWxkSXNJbmxpbmVDb250aW51YXRpb24oZG93bmNhc3Q8UmVu
ZGVyQmxvY2s+KCptX3JlbmRlcmVyKSkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2smIHJlbmRlckJs
b2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCptX3JlbmRlcmVyKTsKKyAgICAgICAgYXV0byog
Zmlyc3RQYXJlbnQgPSBzdGFydE9mQ29udGludWF0aW9ucygqcmVuZGVyQmxvY2suZmlyc3RDaGls
ZCgpKS0+cGFyZW50KCk7CisgICAgICAgIEFTU0VSVChmaXJzdFBhcmVudCk7CisgICAgICAgIHdo
aWxlIChmaXJzdENoaWxkSXNJbmxpbmVDb250aW51YXRpb24oKmZpcnN0UGFyZW50KSkKICAgICAg
ICAgICAgIGZpcnN0UGFyZW50ID0gc3RhcnRPZkNvbnRpbnVhdGlvbnMoKmZpcnN0UGFyZW50LT5m
aXJzdENoaWxkKCkpLT5wYXJlbnQoKTsKICAgICAgICAgcHJldmlvdXNTaWJsaW5nID0gZmlyc3RQ
YXJlbnQtPnByZXZpb3VzU2libGluZygpOwogICAgIH0KQEAgLTM1MSw5ICszNTMsOSBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwcmV2aW91c1NpYmxp
bmcoKSBjb25zdAogICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHByZXZp
b3VzU2libGluZyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBsYXN0Q2hpbGRIYXNDb250aW51
YXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXN0Q2hp
bGRIYXNDb250aW51YXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0gICAgUmVuZGVy
T2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVyLT5sYXN0Q2hpbGRTbG93KCk7CisgICAgUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IHJlbmRlcmVyLmxhc3RDaGlsZCgpOwogICAgIHJldHVybiBjaGlsZCAmJiBp
c0lubGluZVdpdGhDb250aW51YXRpb24oY2hpbGQpOwogfQogCkBAIC0zNzIsOSArMzc0LDEwIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om5leHRTaWJs
aW5nKCkgY29uc3QKIAogICAgIC8vIENhc2UgMjogQW5vbnltb3VzIGJsb2NrIHBhcmVudCBvZiB0
aGUgc3RhcnQgb2YgYSBjb250aW51YXRpb24gLSBza2lwIGFsbCB0aGUgd2F5IHRvCiAgICAgLy8g
YWZ0ZXIgdGhlIHBhcmVudCBvZiB0aGUgZW5kLCBzaW5jZSBldmVyeXRoaW5nIGluIGJldHdlZW4g
d2lsbCBiZSBsaW5rZWQgdXAgdmlhIHRoZSBjb250aW51YXRpb24uCi0gICAgZWxzZSBpZiAobV9y
ZW5kZXJlci0+aXNBbm9ueW1vdXNCbG9jaygpICYmIGxhc3RDaGlsZEhhc0NvbnRpbnVhdGlvbiht
X3JlbmRlcmVyKSkgeworICAgIGVsc2UgaWYgKG1fcmVuZGVyZXItPmlzQW5vbnltb3VzQmxvY2so
KSAmJiBsYXN0Q2hpbGRIYXNDb250aW51YXRpb24oZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCptX3Jl
bmRlcmVyKSkpIHsKICAgICAgICAgUmVuZGVyRWxlbWVudCogbGFzdFBhcmVudCA9IGVuZE9mQ29u
dGludWF0aW9ucygqZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCptX3JlbmRlcmVyKS5sYXN0Q2hpbGQo
KSktPnBhcmVudCgpOwotICAgICAgICB3aGlsZSAobGFzdENoaWxkSGFzQ29udGludWF0aW9uKGxh
c3RQYXJlbnQpKQorICAgICAgICBBU1NFUlQobGFzdFBhcmVudCk7CisgICAgICAgIHdoaWxlIChs
YXN0Q2hpbGRIYXNDb250aW51YXRpb24oKmxhc3RQYXJlbnQpKQogICAgICAgICAgICAgbGFzdFBh
cmVudCA9IGVuZE9mQ29udGludWF0aW9ucygqbGFzdFBhcmVudC0+bGFzdENoaWxkKCkpLT5wYXJl
bnQoKTsKICAgICAgICAgbmV4dFNpYmxpbmcgPSBsYXN0UGFyZW50LT5uZXh0U2libGluZygpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBiZTQzNWIxYWRhYTM0YTI0ZDcz
ZGRlOWU4NjBiYjM5ZGFmMmI3Y2MwLi45Njc0OThkOTllN2Q2NmNhNDMzZjg1NTZmZjRhYjAzNTI1
NWZiMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yMjM0LDI1ICsyMjM0LDI0
IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0
JiByKQogICAgIFNjcm9sbFZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKHIpOwogfQogCi1z
dGF0aWMgdW5zaWduZWQgY291bnRSZW5kZXJlZENoYXJhY3RlcnNJblJlbmRlck9iamVjdFdpdGhU
aHJlc2hvbGQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zaWduZWQgY291bnRTb0Zh
ciwgdW5zaWduZWQgdGhyZXNob2xkKQorc3RhdGljIHVuc2lnbmVkIGNvdW50UmVuZGVyZWRDaGFy
YWN0ZXJzSW5SZW5kZXJPYmplY3RXaXRoVGhyZXNob2xkKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCB1bnNpZ25lZCB0aHJlc2hvbGQpCiB7Ci0gICAgLy8gRklYTUU6IENvbnNpZGVyIHdy
aXRpbmcgdGhpcyB1c2luZyBSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyKCkgaW5zdGVhZCBv
ZiB1c2luZyByZWN1cnNpb24uCi0gICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAg
ICAgICAgY291bnRTb0ZhciArPSBkb3duY2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlcikudGV4dCgp
LT5sZW5ndGgoKTsKLQotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHJlbmRlcmVyLmZp
cnN0Q2hpbGRTbG93KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgIGlmIChjb3VudFNvRmFyID49IHRocmVzaG9sZCkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjb3VudFNvRmFyID0gY291bnRSZW5kZXJlZENoYXJhY3RlcnNJblJlbmRlck9iamVj
dFdpdGhUaHJlc2hvbGQoKmNoaWxkLCBjb3VudFNvRmFyLCB0aHJlc2hvbGQpOworICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogZGVzY2VuZGFudCA9
ICZyZW5kZXJlcjsgZGVzY2VuZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblBy
ZU9yZGVyKCkpIHsKKyAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KCpkZXNjZW5kYW50KSkgewor
ICAgICAgICAgICAgY291bnQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4oKmRlc2NlbmRhbnQpLnRl
eHQoKS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoY291bnQgPj0gdGhyZXNob2xkKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBjb3VudFNv
RmFyOworICAgIHJldHVybiBjb3VudDsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnJlbmRlcmVkQ2hh
cmFjdGVyc0V4Y2VlZCh1bnNpZ25lZCB0aHJlc2hvbGQpCiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBjb3Vu
dFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCgqbV9mcmFtZS0+
Y29udGVudFJlbmRlcmVyKCksIDAsIHRocmVzaG9sZCkgPj0gdGhyZXNob2xkOworICAgIHJldHVy
biBjb3VudFJlbmRlcmVkQ2hhcmFjdGVyc0luUmVuZGVyT2JqZWN0V2l0aFRocmVzaG9sZCgqbV9m
cmFtZS0+Y29udGVudFJlbmRlcmVyKCksIHRocmVzaG9sZCkgPj0gdGhyZXNob2xkOwogfQogCiB2
b2lkIEZyYW1lVmlldzo6Y29udGVudHNSZXNpemVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCmluZGV4IGVkMDQ4NzZmNWFmZGNhZTA0NjQwMmIwZTkzYWYwOWQ5ZGQ0
NTA2MGUuLjljNzEyYWFhODQ5ZWQ4YzZjNzA1MWVjMTgzNGUxNzEyMDQ0MjJiZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtNTUsNiArNTUsOCBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJz
dENoaWxkOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RDaGlsZDsgfQogCisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAhZmlyc3RDaGlsZCgpOyB9CisKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSBz
dGFuZGFsb25lIGFuZCBtb3ZlIHRvIHJlbGV2YW50IGZpbGVzLgogICAgIGJvb2wgaXNSZW5kZXJM
YXllck1vZGVsT2JqZWN0KCkgY29uc3Q7CiAgICAgYm9vbCBpc0JveE1vZGVsT2JqZWN0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKaW5kZXggY2RlYzU5YTA1
YWI2NWVjNzVjOTg4MWI3OTg4ZTMzY2E1YWExNjExZC4uZjAyYWJjMGRhOTVhNzhhODRkYTZmZjE5
Y2M3MDEwMTYyNTAwOTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNw
cApAQCAtNDYsMzAgKzQ2LDMwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Fub255bW91c1J1YnlJ
bmxpbmVCbG9jayhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBBU1NFUlQoIW9i
amVjdAogICAgICAgICB8fCAhb2JqZWN0LT5wYXJlbnQoKS0+aXNSdWJ5KCkKLSAgICAgICAgfHwg
b2JqZWN0LT5pc1J1YnlSdW4oKQorICAgICAgICB8fCBpczxSZW5kZXJSdWJ5UnVuPigqb2JqZWN0
KQogICAgICAgICB8fCAob2JqZWN0LT5pc0lubGluZSgpICYmIChvYmplY3QtPmlzQmVmb3JlQ29u
dGVudCgpIHx8IG9iamVjdC0+aXNBZnRlckNvbnRlbnQoKSkpCi0gICAgICAgIHx8IChvYmplY3Qt
PmlzQW5vbnltb3VzKCkgJiYgb2JqZWN0LT5pc1JlbmRlckJsb2NrKCkgJiYgb2JqZWN0LT5zdHls
ZSgpLmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0spKTsKKyAgICAgICAgfHwgKG9iamVjdC0+aXNB
bm9ueW1vdXMoKSAmJiBpczxSZW5kZXJCbG9jaz4oKm9iamVjdCkgJiYgb2JqZWN0LT5zdHlsZSgp
LmRpc3BsYXkoKSA9PSBJTkxJTkVfQkxPQ0spKTsKIAogICAgIHJldHVybiBvYmplY3QKICAgICAg
ICAgJiYgb2JqZWN0LT5wYXJlbnQoKS0+aXNSdWJ5KCkKLSAgICAgICAgJiYgb2JqZWN0LT5pc1Jl
bmRlckJsb2NrKCkKLSAgICAgICAgJiYgIW9iamVjdC0+aXNSdWJ5UnVuKCk7CisgICAgICAgICYm
IGlzPFJlbmRlckJsb2NrPigqb2JqZWN0KQorICAgICAgICAmJiAhaXM8UmVuZGVyUnVieVJ1bj4o
Km9iamVjdCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1YnlCZWZvcmVCbG9jayhjb25z
dCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICByZXR1cm4gaXNBbm9ueW1vdXNSdWJ5SW5s
aW5lQmxvY2sob2JqZWN0KQogICAgICAgICAmJiAhb2JqZWN0LT5wcmV2aW91c1NpYmxpbmcoKQot
ICAgICAgICAmJiBvYmplY3QtPmZpcnN0Q2hpbGRTbG93KCkKLSAgICAgICAgJiYgb2JqZWN0LT5m
aXJzdENoaWxkU2xvdygpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEJFRk9SRTsKKyAgICAgICAg
JiYgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCpvYmplY3QpLmZpcnN0Q2hpbGQoKQorICAgICAgICAm
JiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0
eWxlVHlwZSgpID09IEJFRk9SRTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzUnVieUFmdGVy
QmxvY2soY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIGlzQW5vbnlt
b3VzUnVieUlubGluZUJsb2NrKG9iamVjdCkKICAgICAgICAgJiYgIW9iamVjdC0+bmV4dFNpYmxp
bmcoKQotICAgICAgICAmJiBvYmplY3QtPmZpcnN0Q2hpbGRTbG93KCkKLSAgICAgICAgJiYgb2Jq
ZWN0LT5maXJzdENoaWxkU2xvdygpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IEFGVEVSOworICAg
ICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKm9iamVjdCkuZmlyc3RDaGlsZCgpCisgICAg
ICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxl
KCkuc3R5bGVUeXBlKCkgPT0gQUZURVI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sq
IHJ1YnlCZWZvcmVCbG9jayhjb25zdCBSZW5kZXJFbGVtZW50KiBydWJ5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggZTVkYTE0NWFkMGQx
YjFhZGJhN2RiZmYzY2E1ZmE4MTIyNDQ0OTg2ZC4uMmM0ZTkxYWQ3Y2RhZTJlMjU1NWEzZjZhOWY5
Y2RlZjA4MDc4NDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZS5oCkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlIGZpbmFsOwogfTsK
IAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JF
TkRFUl9PQkpFQ1QoUmVuZGVyU1ZHSW5saW5lLCBpc1NWR0lubGluZSgpKQogCiAjZW5kaWYgLy8g
IVJlbmRlclNWR1RTcGFuX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuY3BwCmluZGV4IDExMTNmYWQxNjNmZGZhZDdmZGI0MDNhN2UzOWJjMWYyNzZhMjBk
YzAuLjhlNzU5MDZjNTUxNjdiZmMyYmQwOWUzNmUyZGNkZjRjNzUyNmQzOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtMzYxLDcgKzM2
MSw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6bGF5b3V0KCkKICAgICAgICAgQVNTRVJUKG1fbGF5
b3V0QXR0cmlidXRlcy5pc0VtcHR5KCkpOwogICAgICAgICBjb2xsZWN0TGF5b3V0QXR0cmlidXRl
cyh0aGlzLCBtX2xheW91dEF0dHJpYnV0ZXMpOwogICAgICAgICB1cGRhdGVGb250SW5BbGxEZXNj
ZW5kYW50cyh0aGlzKTsKLSAgICAgICAgbV9sYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5idWlsZExh
eW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKHRoaXMpOworICAgICAgICBtX2xheW91dEF0dHJp
YnV0ZXNCdWlsZGVyLmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvckZvclN1YnRyZWUoKnRoaXMpOwog
CiAgICAgICAgIG1fbmVlZHNSZW9yZGVyaW5nID0gdHJ1ZTsKICAgICAgICAgbV9uZWVkc1RleHRN
ZXRyaWNzVXBkYXRlID0gZmFsc2U7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBSZW5kZXJTVkdU
ZXh0OjpsYXlvdXQoKQogICAgICAgICAgICAgbV9uZWVkc1RleHRNZXRyaWNzVXBkYXRlID0gZmFs
c2U7CiAgICAgICAgIH0KIAotICAgICAgICBtX2xheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmJ1aWxk
TGF5b3V0QXR0cmlidXRlc0ZvckZvclN1YnRyZWUodGhpcyk7CisgICAgICAgIG1fbGF5b3V0QXR0
cmlidXRlc0J1aWxkZXIuYnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZSgqdGhpcyk7
CiAgICAgICAgIG1fbmVlZHNSZW9yZGVyaW5nID0gdHJ1ZTsKICAgICAgICAgbV9uZWVkc1Bvc2l0
aW9uaW5nVmFsdWVzVXBkYXRlID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZUNhY2hlZEJvdW5kYXJp
ZXNJblBhcmVudHMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwCmluZGV4IDQ0
MjZlMGIwNTk2MTRiYTkyOGQwMDNjMjA2ODJmYzI4MjIxZWUyNjkuLjQ2N2MyMTU4MWIyMWQ1MTUw
NWY3MmI1NjZhYTQ1YWJjNDhjNGVlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAK
QEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuaCIKIAorI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZS5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdU
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIgpAQCAtNDIsMjEg
KzQzLDE5IEBAIHZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZExheW91
dEF0dHJpYnV0ZXNGb3JUZXh0UmVuZGVyZXIoUmVuZGVyCiAKICAgICAgICAgbV90ZXh0TGVuZ3Ro
ID0gMDsKICAgICAgICAgYm9vbCBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UgPSB0cnVlOwotICAgICAg
ICBjb2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHModGV4dFJvb3QsIGxhc3RDaGFyYWN0ZXJX
YXNTcGFjZSk7CisgICAgICAgIGNvbGxlY3RUZXh0UG9zaXRpb25pbmdFbGVtZW50cygqdGV4dFJv
b3QsIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSk7CiAKICAgICAgICAgaWYgKCFtX3RleHRMZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYnVpbGRDaGFyYWN0ZXJEYXRhTWFwKHRl
eHRSb290KTsKKyAgICAgICAgYnVpbGRDaGFyYWN0ZXJEYXRhTWFwKCp0ZXh0Um9vdCk7CiAgICAg
fQogCiAgICAgbV9tZXRyaWNzQnVpbGRlci5idWlsZE1ldHJpY3NBbmRMYXlvdXRBdHRyaWJ1dGVz
KHRleHRSb290LCAmdGV4dCwgbV9jaGFyYWN0ZXJEYXRhTWFwKTsKIH0KIAotYm9vbCBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXI6OmJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvckZvclN1YnRy
ZWUoUmVuZGVyU1ZHVGV4dCogdGV4dFJvb3QpCitib29sIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
QnVpbGRlcjo6YnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVkdUZXh0
JiB0ZXh0Um9vdCkKIHsKLSAgICBBU1NFUlQodGV4dFJvb3QpOwotCiAgICAgbV9jaGFyYWN0ZXJE
YXRhTWFwLmNsZWFyKCk7CiAKICAgICBpZiAobV90ZXh0UG9zaXRpb25zLmlzRW1wdHkoKSkgewpA
QCAtNjksNyArNjgsNyBAQCBib29sIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6YnVp
bGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBidWlsZENoYXJhY3RlckRhdGFNYXAodGV4dFJvb3QpOwotICAgIG1fbWV0
cmljc0J1aWxkZXIuYnVpbGRNZXRyaWNzQW5kTGF5b3V0QXR0cmlidXRlcyh0ZXh0Um9vdCwgMCwg
bV9jaGFyYWN0ZXJEYXRhTWFwKTsKKyAgICBtX21ldHJpY3NCdWlsZGVyLmJ1aWxkTWV0cmljc0Fu
ZExheW91dEF0dHJpYnV0ZXMoJnRleHRSb290LCBudWxscHRyLCBtX2NoYXJhY3RlckRhdGFNYXAp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05NiwyNSArOTUsMjcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIHByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KGNvbnN0IFJlbmRlclNWR0lubGluZVRl
eHQmIHRleHQsIHUKICAgICB9CiB9CiAKLXZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWls
ZGVyOjpjb2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoUmVuZGVyT2JqZWN0KiBzdGFydCwg
Ym9vbCYgbGFzdENoYXJhY3Rlcldhc1NwYWNlKQordm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXI6OmNvbGxlY3RUZXh0UG9zaXRpb25pbmdFbGVtZW50cyhSZW5kZXJCb3hNb2RlbE9i
amVjdCYgc3RhcnQsIGJvb2wmIGxhc3RDaGFyYWN0ZXJXYXNTcGFjZSkKIHsKLSAgICBBU1NFUlQo
IXN0YXJ0LT5pc1NWR1RleHQoKSB8fCBtX3RleHRQb3NpdGlvbnMuaXNFbXB0eSgpKTsKKyAgICBB
U1NFUlQoIWlzPFJlbmRlclNWR1RleHQ+KHN0YXJ0KSB8fCBtX3RleHRQb3NpdGlvbnMuaXNFbXB0
eSgpKTsKIAotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IHN0YXJ0LT5maXJzdENoaWxk
U2xvdygpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBp
ZiAoY2hpbGQtPmlzU1ZHSW5saW5lVGV4dCgpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUmVuZGVy
U1ZHSW5saW5lVGV4dCgqdG9SZW5kZXJTVkdJbmxpbmVUZXh0KGNoaWxkKSwgbV90ZXh0TGVuZ3Ro
LCBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9
IHN0YXJ0LmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KCpjaGlsZCkpIHsKKyAgICAg
ICAgICAgIHByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KGRvd25jYXN0PFJlbmRlclNWR0lubGlu
ZVRleHQ+KCpjaGlsZCksIG1fdGV4dExlbmd0aCwgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjaGlsZC0+aXNT
VkdJbmxpbmUoKSkKKyAgICAgICAgaWYgKCFpczxSZW5kZXJTVkdJbmxpbmU+KCpjaGlsZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
KiBlbGVtZW50ID0gU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJl
cihjaGlsZCk7CisgICAgICAgIFJlbmRlclNWR0lubGluZSYgaW5saW5lQ2hpbGQgPSBkb3duY2Fz
dDxSZW5kZXJTVkdJbmxpbmU+KCpjaGlsZCk7CisgICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQqIGVsZW1lbnQgPSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjplbGVtZW50RnJvbVJl
bmRlcmVyKGlubGluZUNoaWxkKTsKKwogICAgICAgICB1bnNpZ25lZCBhdFBvc2l0aW9uID0gbV90
ZXh0UG9zaXRpb25zLnNpemUoKTsKICAgICAgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgICAgICBt
X3RleHRQb3NpdGlvbnMuYXBwZW5kKFRleHRQb3NpdGlvbihlbGVtZW50LCBtX3RleHRMZW5ndGgp
KTsKIAotICAgICAgICBjb2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoY2hpbGQsIGxhc3RD
aGFyYWN0ZXJXYXNTcGFjZSk7CisgICAgICAgIGNvbGxlY3RUZXh0UG9zaXRpb25pbmdFbGVtZW50
cyhpbmxpbmVDaGlsZCwgbGFzdENoYXJhY3Rlcldhc1NwYWNlKTsKIAogICAgICAgICBpZiAoIWVs
ZW1lbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEyNiw3ICsxMjcsNyBAQCB2b2lkIFNW
R1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcjo6Y29sbGVjdFRleHRQb3NpdGlvbmluZ0VsZW1l
bnRzKFJlbmRlck9iamVjdAogICAgIH0KIH0KIAotdm9pZCBTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXI6OmJ1aWxkQ2hhcmFjdGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0KiB0ZXh0Um9vdCkK
K3ZvaWQgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyOjpidWlsZENoYXJhY3RlckRhdGFN
YXAoUmVuZGVyU1ZHVGV4dCYgdGV4dFJvb3QpCiB7CiAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCogb3V0ZXJtb3N0VGV4dEVsZW1lbnQgPSBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpl
bGVtZW50RnJvbVJlbmRlcmVyKHRleHRSb290KTsKICAgICBBU1NFUlQob3V0ZXJtb3N0VGV4dEVs
ZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXNCdWlsZGVyLmgKaW5kZXggNDI4MmQ2NTBjMzAzMWRlOTAz
NTEzMWIzOTc0MTYzZmI1MWQxNzU4Yi4uNjFhZmMxY2Y1Mzc2OGY2NjZjZjQ5ZmIxZGJmYTliNzEx
ZmVkYmY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyQm94TW9kZWxPYmplY3Q7CiBjbGFz
cyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTVkdJbmxpbmVUZXh0OwogY2xhc3MgUmVuZGVy
U1ZHVGV4dDsKQEAgLTQxLDcgKzQyLDcgQEAgY2xhc3MgU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdUZXh0TGF5b3V0QXR0cmlidXRl
c0J1aWxkZXIpOwogcHVibGljOgogICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlcigp
OwotICAgIGJvb2wgYnVpbGRMYXlvdXRBdHRyaWJ1dGVzRm9yRm9yU3VidHJlZShSZW5kZXJTVkdU
ZXh0Kik7CisgICAgYm9vbCBidWlsZExheW91dEF0dHJpYnV0ZXNGb3JGb3JTdWJ0cmVlKFJlbmRl
clNWR1RleHQmKTsKICAgICB2b2lkIGJ1aWxkTGF5b3V0QXR0cmlidXRlc0ZvclRleHRSZW5kZXJl
cihSZW5kZXJTVkdJbmxpbmVUZXh0Jik7CiAKICAgICB2b2lkIHJlYnVpbGRNZXRyaWNzRm9yVGV4
dFJlbmRlcmVyKFJlbmRlclNWR0lubGluZVRleHQqKTsKQEAgLTY0LDggKzY1LDggQEAgcHJpdmF0
ZToKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIH07CiAKLSAgICB2b2lkIGJ1aWxkQ2hh
cmFjdGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0Kik7Ci0gICAgdm9pZCBjb2xsZWN0VGV4dFBvc2l0
aW9uaW5nRWxlbWVudHMoUmVuZGVyT2JqZWN0KiwgYm9vbCYgbGFzdENoYXJhY3Rlcldhc1NwYWNl
KTsKKyAgICB2b2lkIGJ1aWxkQ2hhcmFjdGVyRGF0YU1hcChSZW5kZXJTVkdUZXh0Jik7CisgICAg
dm9pZCBjb2xsZWN0VGV4dFBvc2l0aW9uaW5nRWxlbWVudHMoUmVuZGVyQm94TW9kZWxPYmplY3Qm
LCBib29sJiBsYXN0Q2hhcmFjdGVyV2FzU3BhY2UpOwogICAgIHZvaWQgZmlsbENoYXJhY3RlckRh
dGFNYXAoY29uc3QgVGV4dFBvc2l0aW9uJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggNjkwMzU5Njg1NzU5
Y2FmOTc3N2IyZDVkNGQwYmU1ZmNhYWU4ZTZlYy4uYmIxMjc0NjEzZGM3YWJjODNhYjUxN2FmYTNl
ZmE0N2NlMGNmMjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcApAQCAtMjMsOCArMjMsMTAgQEAKICNpbmNsdWRlICJTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJS
ZW5kZXJTVkdJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlJlbmRlclNWR1RleHQuaCIKKyNpbmNsdWRlICJTVkdBbHRHbHlwaEVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0Lmgi
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTE2MywyNyArMTY1LDI0IEBAIHZvaWQgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLVNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQqIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQq
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyQm94
TW9kZWxPYmplY3QmIHJlbmRlcmVyKQogewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgaWYgKCFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIXJlbmRlcmVyLT5p
c1NWR0lubGluZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWlzPFJlbmRlclNWR1Rl
eHQ+KHJlbmRlcmVyKSAmJiAhaXM8UmVuZGVyU1ZHSW5saW5lPihyZW5kZXJlcikpCisgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0g
ICAgQVNTRVJUKG5vZGUpOwotICAgIEFTU0VSVChub2RlLT5pc1NWR0VsZW1lbnQoKSk7CisgICAg
QVNTRVJUKHJlbmRlcmVyLmVsZW1lbnQoKSk7CisgICAgU1ZHRWxlbWVudCYgZWxlbWVudCA9IGRv
d25jYXN0PFNWR0VsZW1lbnQ+KCpyZW5kZXJlci5lbGVtZW50KCkpOwogCi0gICAgaWYgKCFub2Rl
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjp0ZXh0VGFnKQotICAgICAgICAmJiAhbm9kZS0+aGFzVGFn
TmFtZShTVkdOYW1lczo6dHNwYW5UYWcpCisgICAgaWYgKCFpczxTVkdUZXh0RWxlbWVudD4oZWxl
bWVudCkKKyAgICAgICAgJiYgIWlzPFNWR1RTcGFuRWxlbWVudD4oZWxlbWVudCkKICNpZiBFTkFC
TEUoU1ZHX0ZPTlRTKQotICAgICAgICAmJiAhbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6YWx0
R2x5cGhUYWcpCisgICAgICAgICYmICFpczxTVkdBbHRHbHlwaEVsZW1lbnQ+KGVsZW1lbnQpCiAj
ZW5kaWYKLSAgICAgICAgJiYgIW5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnRyZWZUYWcpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgJiYgIWlzPFNWR1RSZWZFbGVtZW50PihlbGVtZW50
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCo+KG5vZGUpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgZG93bmNhc3Q8PigpLgorICAgIHJldHVybiAmc3RhdGljX2Nhc3Q8U1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudCY+KGVsZW1lbnQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAppbmRleCBiOWQ5ZTVlYmJjMGMyYWMxYzA0Y2Jk
ZGZkNzgwYzE0MGY0ZTY5ODI2Li42MjI5MGJjMTBjN2M2NDdjOGMxNWU2ZDY0NzM0M2E4YTNhNGE2
NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIGVsZW1lbnRGcm9tUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQqIGVsZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyQm94TW9kZWxPYmplY3QmKTsKIAogcHJvdGVj
dGVkOgogICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>