<?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>125030</bug_id>
          
          <creation_ts>2013-11-30 11:07:53 -0800</creation_ts>
          <short_desc>[CTTE] WebPageProxy should store the PageClient as a reference</short_desc>
          <delta_ts>2013-11-30 11:11:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>955074</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-30 11:07:53 -0800</bug_when>
    <thetext>[CTTE] WebPageProxy should store the PageClient as a reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955075</commentid>
    <comment_count>1</comment_count>
      <attachid>218093</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-30 11:08:10 -0800</bug_when>
    <thetext>Created attachment 218093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955076</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-30 11:09:24 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955077</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-30 11:11:29 -0800</bug_when>
    <thetext>Committed r159889: &lt;http://trac.webkit.org/changeset/159889&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218093</attachid>
            <date>2013-11-30 11:08:10 -0800</date>
            <delta_ts>2013-11-30 11:09:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125030-20131130110810.patch</filename>
            <type>text/plain</type>
            <size>45360</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBAQAorMjAxMy0xMS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtDVFRFXSBXZWJQYWdlUHJveHkgc2hv
dWxkIHN0b3JlIHRoZSBQYWdlQ2xpZW50IGFzIGEgcmVmZXJlbmNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUwMzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFn
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoQ29udGV4dFJlZjpw
YWdlR3JvdXBSZWY6cmVsYXRlZFRvUGFnZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6
cGFnZUdyb3VwUmVmOnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV2ViUGFnZVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluZFpvb21hYmxlQXJlYSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Vmll
d05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzcGxheVZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhblNjcm9sbFZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVZpZXdTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojp2aWV3U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnREcmFn
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldFdpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRXaW5kb3dGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Ny
ZWVuVG9XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd1RvU2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRGlkUmVxdWVzdFNjcm9s
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzaG93Q29sb3JQaWNrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldEZpbmRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNo
b3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVybmFsU2hv
d0NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWdpc3RlckVk
aXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRUb29sVGlwKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDdXJzb3IpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2Nlc3NFeGl0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVDcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0b3JlRGlzY2FyZGFibGVTdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvcnJlY3Rpb25QYW5lbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzbWlzc0NvcnJlY3Rpb25QYW5lbFNvb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpY3RhdGlv
bkFsdGVybmF0aXZlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0RWRpdG9yQ29tbWFuZHNGb3JL
ZXlFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1haW5Eb2N1bWVudERpZFJlY2VpdmVNb2JpbGVEb2NU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRHZXRUYXBIaWdobGlnaHRH
ZW9tZXRyaWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VWaWV3
cG9ydEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRBc3Np
c3RpbmdOb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdG9wQXNzaXN0aW5n
Tm9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jvb3RMYXllcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1l
c0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVk
VGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RHJhZ0ltYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmludGVycHJldFF1ZXVlZEtleUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VuKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25k
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhlY3V0ZVNhdmVkQ29t
bWFuZEJ5U2VsZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndrVmlldyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW50cmluc2ljQ29udGVudFNpemVEaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIpOgorCiAyMDEzLTExLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1JUVEVdIFRoZSBQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
aWVzIHNob3VsZCB1c2UgV2ViUGFnZVByb3h5IHJlZmVyZW5jZXMuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxNTk4ODcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MCw3
ICs3NDAsNyBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCogcGFnZUNsaWVudCwgV2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94
eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
YWdlR3JvdXAqIHBhZ2VHcm91cCwgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSkKIHsKICAgICBS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHJldmlzaW9uIDE1OTg4NykKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgs
NyBAQCBwdWJsaWM6CiAKICAgICBTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIoKSBjb25z
dCB7IHJldHVybiAqbV9zdG9yYWdlTWFuYWdlcjsgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJQYWdl
UHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCosIFdlYlBhZ2VHcm91cCosIFdlYlBhZ2VQ
cm94eSogcmVsYXRlZFBhZ2UgPSAwKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3VwKiwgV2ViUGFnZVByb3h5KiByZWxh
dGVkUGFnZSA9IDApOwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBj
b25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTU5ODg4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyMiwxMiArMjIyLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWJLZXlib2FyZEV2ZW50VHlw
ZVMKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECiAKLVBhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRy
PFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcywgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIHVpbnQ2
NF90IHBhZ2VJRCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJv
Y2VzcywgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdl
R3JvdXAsIHBhZ2VJRCkpOwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzcywgV2Vi
UGFnZUdyb3VwKiBwYWdlR3JvdXAsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1By
b3h5PiBwcm9jZXNzLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQog
ICAgIDogbV9wYWdlQ2xpZW50KHBhZ2VDbGllbnQpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykK
ICAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKQEAgLTQ5MCw3ICs0OTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3MoCiAKICAgICBpbml0aWFsaXplV2ViUGFn
ZSgpOwogCi0gICAgbV9wYWdlQ2xpZW50LT5kaWRSZWxhdW5jaFByb2Nlc3MoKTsKKyAgICBtX3Bh
Z2VDbGllbnQuZGlkUmVsYXVuY2hQcm9jZXNzKCk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2FpdEZv
ckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7CiB9CiAKQEAgLTUxNiw3ICs1MTYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fcHJvY2Vzcy0+cmVnaXN0
ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1zW2ldLmdldCgpKTsKIAotICAgIG1fZHJh
d2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKKyAgICBt
X2RyYXdpbmdBcmVhID0gbV9wYWdlQ2xpZW50LmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKICAg
ICBBU1NFUlQobV9kcmF3aW5nQXJlYSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikK
QEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1faXND
bG9zZWQgPSB0cnVlOwogCiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnBhZ2VDbG9zZWQoKTsKLSAg
ICBtX3BhZ2VDbGllbnQtPnBhZ2VDbG9zZWQoKTsKKyAgICBtX3BhZ2VDbGllbnQucGFnZUNsb3Nl
ZCgpOwogCiAgICAgbV9wcm9jZXNzLT5kaXNjb25uZWN0RnJhbWVzRnJvbVBhZ2UodGhpcyk7CiAK
QEAgLTkxMCwzNiArOTEwLDM2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbEVuZExpdmVS
ZXNpemUKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPnNldFZpZXdOZWVkc0Rpc3BsYXkocmVj
dCk7CisgICAgbV9wYWdlQ2xpZW50LnNldFZpZXdOZWVkc0Rpc3BsYXkocmVjdCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaXNwbGF5VmlldygpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5kaXNw
bGF5VmlldygpOworICAgIG1fcGFnZUNsaWVudC5kaXNwbGF5VmlldygpOwogfQogCiBib29sIFdl
YlBhZ2VQcm94eTo6Y2FuU2Nyb2xsVmlldygpCiB7Ci0gICAgcmV0dXJuIG1fcGFnZUNsaWVudC0+
Y2FuU2Nyb2xsVmlldygpOworICAgIHJldHVybiBtX3BhZ2VDbGllbnQuY2FuU2Nyb2xsVmlldygp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsVmlldyhjb25zdCBJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBJbnRTaXplJiBzY3JvbGxPZmZzZXQpCiB7Ci0gICAgbV9wYWdlQ2xpZW50
LT5zY3JvbGxWaWV3KHNjcm9sbFJlY3QsIHNjcm9sbE9mZnNldCk7CisgICAgbV9wYWdlQ2xpZW50
LnNjcm9sbFZpZXcoc2Nyb2xsUmVjdCwgc2Nyb2xsT2Zmc2V0KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVwZGF0ZVZpZXdTdGF0ZShWaWV3U3RhdGU6OkZsYWdzIGZsYWdzVG9VcGRhdGUpCiB7
CiAgICAgbV92aWV3U3RhdGUgJj0gfmZsYWdzVG9VcGRhdGU7Ci0gICAgaWYgKGZsYWdzVG9VcGRh
dGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzVmlzaWJsZSAmJiBtX3BhZ2VDbGllbnQtPmlzV2luZG93
VmlzaWJsZSgpKQorICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpXaW5kb3dJc1Zp
c2libGUgJiYgbV9wYWdlQ2xpZW50LmlzV2luZG93VmlzaWJsZSgpKQogICAgICAgICBtX3ZpZXdT
dGF0ZSB8PSBWaWV3U3RhdGU6OldpbmRvd0lzVmlzaWJsZTsKLSAgICBpZiAoZmxhZ3NUb1VwZGF0
ZSAmIFZpZXdTdGF0ZTo6SXNGb2N1c2VkICYmIG1fcGFnZUNsaWVudC0+aXNWaWV3Rm9jdXNlZCgp
KQorICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc0ZvY3VzZWQgJiYgbV9wYWdl
Q2xpZW50LmlzVmlld0ZvY3VzZWQoKSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRl
OjpJc0ZvY3VzZWQ7Ci0gICAgaWYgKGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lz
QWN0aXZlICYmIG1fcGFnZUNsaWVudC0+aXNWaWV3V2luZG93QWN0aXZlKCkpCisgICAgaWYgKGZs
YWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlICYmIG1fcGFnZUNsaWVudC5p
c1ZpZXdXaW5kb3dBY3RpdmUoKSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpX
aW5kb3dJc0FjdGl2ZTsKLSAgICBpZiAoZmxhZ3NUb1VwZGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNp
YmxlICYmIG1fcGFnZUNsaWVudC0+aXNWaWV3VmlzaWJsZSgpKQorICAgIGlmIChmbGFnc1RvVXBk
YXRlICYgVmlld1N0YXRlOjpJc1Zpc2libGUgJiYgbV9wYWdlQ2xpZW50LmlzVmlld1Zpc2libGUo
KSkKICAgICAgICAgbV92aWV3U3RhdGUgfD0gVmlld1N0YXRlOjpJc1Zpc2libGU7Ci0gICAgaWYg
KGZsYWdzVG9VcGRhdGUgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cgJiYgbV9wYWdlQ2xpZW50LT5p
c1ZpZXdJbldpbmRvdygpKQorICAgIGlmIChmbGFnc1RvVXBkYXRlICYgVmlld1N0YXRlOjpJc0lu
V2luZG93ICYmIG1fcGFnZUNsaWVudC5pc1ZpZXdJbldpbmRvdygpKQogICAgICAgICBtX3ZpZXdT
dGF0ZSB8PSBWaWV3U3RhdGU6OklzSW5XaW5kb3c7CiB9CiAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpCiAKICAgICBpZiAobWF5SGF2
ZUNoYW5nZWQgJiBWaWV3U3RhdGU6OklzSW5XaW5kb3cpIHsKICAgICAgICAgaWYgKG1fdmlld1N0
YXRlICYgVmlld1N0YXRlOjpJc0luV2luZG93KSB7Ci0gICAgICAgICAgICBMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUgPSBtX3BhZ2VDbGllbnQtPnZpZXdMYXllckhvc3RpbmdNb2Rl
KCk7CisgICAgICAgICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBtX3Bh
Z2VDbGllbnQudmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICAgICAgICAgIGlmIChtX2xheWVy
SG9zdGluZ01vZGUgIT0gbGF5ZXJIb3N0aW5nTW9kZSkgewogICAgICAgICAgICAgICAgIG1fbGF5
ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9zdGluZ01vZGU7CiAgICAgICAgICAgICAgICAgbV9kcmF3
aW5nQXJlYS0+bGF5ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpOwpAQCAtMTAxNSw3ICsxMDE1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3UwogCiBJbnRTaXplIFdl
YlBhZ2VQcm94eTo6dmlld1NpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VDbGllbnQt
PnZpZXdTaXplKCk7CisgICAgcmV0dXJuIG1fcGFnZUNsaWVudC52aWV3U2l6ZSgpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tl
eWJvYXJkRXZlbnRWYWxpZCwgY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCkK
QEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoY29uc3Qg
RHJhZ0QKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BhZ2VDbGllbnQtPnN0
YXJ0RHJhZyhkcmFnRGF0YSwgZHJhZ0ltYWdlLnJlbGVhc2UoKSk7CisgICAgbV9wYWdlQ2xpZW50
LnN0YXJ0RHJhZyhkcmFnRGF0YSwgZHJhZ0ltYWdlLnJlbGVhc2UoKSk7CiB9CiAjZW5kaWYKIApA
QCAtMTM3Niw3ICsxMzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQo
Y29ucwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAg
ICAgIG1fcGFnZUNsaWVudC0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50LCBpc0V2ZW50SGFuZGxl
ZCk7CisgICAgICAgICAgICBtX3BhZ2VDbGllbnQuZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50LCBp
c0V2ZW50SGFuZGxlZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhdHRh
Y2ggdGhlIGluY29taW5nIGV2ZW50cyB0byB0aGUgbmV3ZXN0IHF1ZXVlZCBldmVudCBzbyB0aGF0
IGFsbAogICAgICAgICAgICAgLy8gdGhlIGV2ZW50cyBhcmUgZGVsaXZlcmVkIGluIHRoZSBjb3Jy
ZWN0IG9yZGVyIHdoZW4gdGhlIGV2ZW50IGlzIGRlcXVlZC4KQEAgLTIwMTAsNyArMjAxMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgKIAogICAgIG1fcHJvY2Vz
cy0+cGFnZVByZWZlcmVuY2VzQ2hhbmdlZCh0aGlzKTsKIAotICAgIG1fcGFnZUNsaWVudC0+cHJl
ZmVyZW5jZXNEaWRDaGFuZ2UoKTsKKyAgICBtX3BhZ2VDbGllbnQucHJlZmVyZW5jZXNEaWRDaGFu
Z2UoKTsKIAogICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBtb3JlIHNlbnNlIHRvIHNl
bmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCiAgICAgLy8gSG93ZXZlciwgV2ViS2l0
VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNlIGNoYW5nZSBub3RpZmlj
YXRpb24KQEAgLTIxNjAsMTUgKzIxNjAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1p
dExvYWRGb3JGcmFtZQogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAg
IG1fcGFnZUxvYWRTdGF0ZS5kaWRDb21taXRMb2FkKCk7Ci0gICAgICAgIG1fcGFnZUNsaWVudC0+
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSgpOworICAgICAgICBtX3BhZ2VDbGllbnQuZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZSgpOwogICAgIH0KIAogI2lmIFVTRShBUFBLSVQpCiAgICAgLy8g
RklYTUUgKGJ1ZyA1OTExMSk6IGRpZENvbW1pdExvYWRGb3JGcmFtZSBjb21lcyB0b28gbGF0ZSB3
aGVuIHJlc3RvcmluZyBhIHBhZ2UgZnJvbSBiL2YgY2FjaGUsIG1ha2luZyB1cyBkaXNhYmxlIHNl
Y3VyZSBldmVudCBtb2RlIGluIHBhc3N3b3JkIGZpZWxkcy4KICAgICAvLyBGSVhNRTogQSBsb2Fk
IGdvaW5nIG9uIGluIG9uZSBmcmFtZSBzaG91bGRuJ3QgYWZmZWN0IHRleHQgZWRpdGluZyBpbiBv
dGhlciBmcmFtZXMgb24gdGhlIHBhZ2UuCi0gICAgbV9wYWdlQ2xpZW50LT5yZXNldFNlY3VyZUlu
cHV0U3RhdGUoKTsKKyAgICBtX3BhZ2VDbGllbnQucmVzZXRTZWN1cmVJbnB1dFN0YXRlKCk7CiAg
ICAgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVU
ZXh0SWdub3JlZCk7Ci0gICAgbV9wYWdlQ2xpZW50LT5kaXNtaXNzRGljdGlvbmFyeUxvb2t1cFBh
bmVsKCk7CisgICAgbV9wYWdlQ2xpZW50LmRpc21pc3NEaWN0aW9uYXJ5TG9va3VwUGFuZWwoKTsK
ICNlbmRpZgogCiAgICAgY2xlYXJMb2FkRGVwZW5kZW50Q2FsbGJhY2tzKCk7CkBAIC0yNTI5LDcg
KzI1MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlCiAgICAg
aWYgKHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAgbV9wYWdlQ2xpZW50LT5jbGVhckFsbEVkaXRD
b21tYW5kcygpOworICAgIG1fcGFnZUNsaWVudC5jbGVhckFsbEVkaXRDb21tYW5kcygpOwogICAg
IG1fdWlDbGllbnQuY2xvc2UodGhpcyk7CiB9CiAKQEAgLTI2NzksMjIgKzI2NzksMjIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldElzUmVzaXphYmxlKGJvb2wmIAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0V2luZG93RnJhbWUoY29uc3QgRmxvYXRSZWN0JiBuZXdXaW5kb3dGcmFtZSkKIHsKLSAg
ICBtX3VpQ2xpZW50LnNldFdpbmRvd0ZyYW1lKHRoaXMsIG1fcGFnZUNsaWVudC0+Y29udmVydFRv
RGV2aWNlU3BhY2UobmV3V2luZG93RnJhbWUpKTsKKyAgICBtX3VpQ2xpZW50LnNldFdpbmRvd0Zy
YW1lKHRoaXMsIG1fcGFnZUNsaWVudC5jb252ZXJ0VG9EZXZpY2VTcGFjZShuZXdXaW5kb3dGcmFt
ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2luZG93RnJhbWUoRmxvYXRSZWN0JiBu
ZXdXaW5kb3dGcmFtZSkKIHsKLSAgICBuZXdXaW5kb3dGcmFtZSA9IG1fcGFnZUNsaWVudC0+Y29u
dmVydFRvVXNlclNwYWNlKG1fdWlDbGllbnQud2luZG93RnJhbWUodGhpcykpOworICAgIG5ld1dp
bmRvd0ZyYW1lID0gbV9wYWdlQ2xpZW50LmNvbnZlcnRUb1VzZXJTcGFjZShtX3VpQ2xpZW50Lndp
bmRvd0ZyYW1lKHRoaXMpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JlZW5Ub1dp
bmRvdyhjb25zdCBJbnRQb2ludCYgc2NyZWVuUG9pbnQsIEludFBvaW50JiB3aW5kb3dQb2ludCkK
IHsKLSAgICB3aW5kb3dQb2ludCA9IG1fcGFnZUNsaWVudC0+c2NyZWVuVG9XaW5kb3coc2NyZWVu
UG9pbnQpOworICAgIHdpbmRvd1BvaW50ID0gbV9wYWdlQ2xpZW50LnNjcmVlblRvV2luZG93KHNj
cmVlblBvaW50KTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dUb1NjcmVlbihj
b25zdCBJbnRSZWN0JiB2aWV3UmVjdCwgSW50UmVjdCYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9
IG1fcGFnZUNsaWVudC0+d2luZG93VG9TY3JlZW4odmlld1JlY3QpOworICAgIHJlc3VsdCA9IG1f
cGFnZUNsaWVudC53aW5kb3dUb1NjcmVlbih2aWV3UmVjdCk7CiB9CiAgICAgCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCYgc2hvdWxkQ2xvc2UpCkBAIC0yNzExLDI0ICsyNzEx
LDI0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5CZWZvcmVVbmxvYWRDb25maXIKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5wYWdlRGlk
UmVxdWVzdFNjcm9sbChwb2ludCk7CisgICAgbV9wYWdlQ2xpZW50LnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKHBvaW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VUcmFuc2l0aW9uVmlld3Bv
cnRSZWFkeSgpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5wYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKTsKKyAgICBtX3BhZ2VDbGllbnQucGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQog
ewotICAgIG1fcGFnZUNsaWVudC0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVk
UmVjdCk7CisgICAgbV9wYWdlQ2xpZW50LmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292
ZXJlZFJlY3QpOwogfQogCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCiB7Ci0gICAg
bV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoYXR0cik7CisgICAgbV9w
YWdlQ2xpZW50LmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhdHRyKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwoKQpAQCAtMjgwNywxNCArMjgwNywxNCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JCiAjaWYgUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewotICAgIG1fcGFnZUNsaWVudC0+aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKKyAgICBtX3BhZ2VDbGllbnQuaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KGRvd25sb2FkKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JN
KEdUSykKIAogI2lmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oSU9TKQogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAg
bV9wYWdlQ2xpZW50LT5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsKKyAgICBtX3BhZ2VDbGll
bnQuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjgzNCw3ICsy
ODM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb2xvclBpY2tlcihjb25zdAogICAgIG1f
Y29sb3JQaWNrZXIgPSAwOwogI2VuZGlmCiAgICAgaWYgKCFtX2NvbG9yUGlja2VyKQotICAgICAg
ICBtX2NvbG9yUGlja2VyID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb2xvclBpY2tlcih0aGlzLCBp
bml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0KTsKKyAgICAgICAgbV9jb2xvclBpY2tlciA9IG1fcGFn
ZUNsaWVudC5jcmVhdGVDb2xvclBpY2tlcih0aGlzLCBpbml0aWFsQ29sb3IsIGVsZW1lbnRSZWN0
KTsKICAgICBtX2NvbG9yUGlja2VyLT5zaG93Q29sb3JQaWNrZXIoaW5pdGlhbENvbG9yKTsKIH0K
IApAQCAtMjk0NywyNyArMjk0NywyNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdG9yU3RhdGVD
aGFuZ2VkKGNvCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIFNlbGVjdGlvbiBiZWluZyBub25l
IGlzIGEgdGVtcG9yYXJ5IHN0YXRlIHdoZW4gZWRpdGluZy4gRmxpcHBpbmcgc2VjdXJlIGlucHV0
IHN0YXRlIHRvbyBxdWlja2x5IHdhcyBjYXVzaW5nIHRyb3VibGUgKG5vdCBmdWxseSB1bmRlcnN0
b29kKS4KICAgICBpZiAoY291bGRDaGFuZ2VTZWN1cmVJbnB1dFN0YXRlICYmICFlZGl0b3JTdGF0
ZS5zZWxlY3Rpb25Jc05vbmUpCi0gICAgICAgIG1fcGFnZUNsaWVudC0+dXBkYXRlU2VjdXJlSW5w
dXRTdGF0ZSgpOworICAgICAgICBtX3BhZ2VDbGllbnQudXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
OwogCiAgICAgaWYgKGVkaXRvclN0YXRlLnNob3VsZElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9u
Q2hhbmdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoY2xvc2VkQ29tcG9zaXRpb24pCi0g
ICAgICAgIG1fcGFnZUNsaWVudC0+bm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21w
b3NpdGlvbigpOworICAgICAgICBtX3BhZ2VDbGllbnQubm90aWZ5SW5wdXRDb250ZXh0QWJvdXRE
aXNjYXJkZWRDb21wb3NpdGlvbigpOwogICAgIGlmIChlZGl0b3JTdGF0ZS5oYXNDb21wb3NpdGlv
bikgewogICAgICAgICAvLyBBYmFuZG9uIHRoZSBjdXJyZW50IGlubGluZSBpbnB1dCBzZXNzaW9u
IGlmIHNlbGVjdGlvbiBjaGFuZ2VkIGZvciBhbnkgb3RoZXIgcmVhc29uIGJ1dCBhbiBpbnB1dCBt
ZXRob2QgY2hhbmdpbmcgdGhlIGNvbXBvc2l0aW9uLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBs
b2dpYyBzaG91bGQgYmUgaW4gV2ViQ29yZSwgbm8gbmVlZCB0byByb3VuZC10cmlwIHRvIFVJIHBy
b2Nlc3MgdG8gY2FuY2VsIHRoZSBjb21wb3NpdGlvbi4KICAgICAgICAgY2FuY2VsQ29tcG9zaXRp
b24oKTsKLSAgICAgICAgbV9wYWdlQ2xpZW50LT5ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2Nh
cmRlZENvbXBvc2l0aW9uKCk7CisgICAgICAgIG1fcGFnZUNsaWVudC5ub3RpZnlJbnB1dENvbnRl
eHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCk7CiAgICAgfQogI2lmIFBMQVRGT1JNKElPUykK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCBvbiBp
T1MgdG8gbWFrZSBzdXJlIHRoZSBzZWxlY3Rpb24gaXMgcmVkcmF3bi4KLSAgICAgICAgbV9wYWdl
Q2xpZW50LT5zZWxlY3Rpb25EaWRDaGFuZ2UoKTsKKyAgICAgICAgbV9wYWdlQ2xpZW50LnNlbGVj
dGlvbkRpZENoYW5nZSgpOwogICAgIH0KICNlbmRpZgogI2VsaWYgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShHVEspCi0gICAgbV9wYWdlQ2xpZW50LT51cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOwor
ICAgIG1fcGFnZUNsaWVudC51cGRhdGVUZXh0SW5wdXRTdGF0ZSgpOwogI2VuZGlmCiB9CiAKQEAg
LTI5ODAsMTggKzI5ODAsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1h
bmRGbwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuVW5kb1JlZG8odWludDMyX3QgYWN0aW9uLCBi
b29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LT5jYW5VbmRvUmVkbyhz
dGF0aWNfY2FzdDxVbmRvT3JSZWRvPihhY3Rpb24pKTsKKyAgICByZXN1bHQgPSBtX3BhZ2VDbGll
bnQuY2FuVW5kb1JlZG8oc3RhdGljX2Nhc3Q8VW5kb09yUmVkbz4oYWN0aW9uKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpleGVjdXRlVW5kb1JlZG8odWludDMyX3QgYWN0aW9uLCBib29sJiBy
ZXN1bHQpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5leGVjdXRlVW5kb1JlZG8oc3RhdGljX2Nhc3Q8
VW5kb09yUmVkbz4oYWN0aW9uKSk7CisgICAgbV9wYWdlQ2xpZW50LmV4ZWN1dGVVbmRvUmVkbyhz
dGF0aWNfY2FzdDxVbmRvT3JSZWRvPihhY3Rpb24pKTsKICAgICByZXN1bHQgPSB0cnVlOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQogewotICAgIG1fcGFn
ZUNsaWVudC0+Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKKyAgICBtX3BhZ2VDbGllbnQuY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvdW50U3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3VudCkKQEAgLTMw
MDcsNyArMzAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRJbWFnZUZvckZpbmRNYXQK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IEZsb2F0UmVjdCYgc2Vs
ZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiB0
ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgZmxvYXQgY29udGVudEltYWdlU2Nh
bGVGYWN0b3IsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5k
bGUsIGJvb2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKQogewogICAgIFJlZlB0cjxGaW5kSW5kaWNh
dG9yPiBmaW5kSW5kaWNhdG9yID0gRmluZEluZGljYXRvcjo6Y3JlYXRlKHNlbGVjdGlvblJlY3RJ
bldpbmRvd0Nvb3JkaW5hdGVzLCB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywg
Y29udGVudEltYWdlU2NhbGVGYWN0b3IsIGNvbnRlbnRJbWFnZUhhbmRsZSk7Ci0gICAgbV9wYWdl
Q2xpZW50LT5zZXRGaW5kSW5kaWNhdG9yKGZpbmRJbmRpY2F0b3IucmVsZWFzZSgpLCBmYWRlT3V0
LCBhbmltYXRlKTsKKyAgICBtX3BhZ2VDbGllbnQuc2V0RmluZEluZGljYXRvcihmaW5kSW5kaWNh
dG9yLnJlbGVhc2UoKSwgZmFkZU91dCwgYW5pbWF0ZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBtYXRjaENvdW50
KQpAQCAtMzA3Nyw3ICszMDc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUo
Y29uc3QgSQogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiAgICAgfQogCi0gICAgbV9h
Y3RpdmVQb3B1cE1lbnUgPSBtX3BhZ2VDbGllbnQtPmNyZWF0ZVBvcHVwTWVudVByb3h5KHRoaXMp
OworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gbV9wYWdlQ2xpZW50LmNyZWF0ZVBvcHVwTWVudVBy
b3h5KHRoaXMpOwogCiAgICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzEzNyw3ICszMTM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmludGVybmFsU2hvd0Nv
bnRleHRNZQogICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51ID0gMDsKICAgICB9CiAKLSAgICBt
X2FjdGl2ZUNvbnRleHRNZW51ID0gbV9wYWdlQ2xpZW50LT5jcmVhdGVDb250ZXh0TWVudVByb3h5
KHRoaXMpOworICAgIG1fYWN0aXZlQ29udGV4dE1lbnUgPSBtX3BhZ2VDbGllbnQuY3JlYXRlQ29u
dGV4dE1lbnVQcm94eSh0aGlzKTsKICAgICBpZiAoIW1fYWN0aXZlQ29udGV4dE1lbnUpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMzI4MCw3ICszMjgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNo
YW5nZVNwZWxsaW5nVG9Xb3JkKAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29t
bWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmRQcm94eSwgVW5kb09y
UmVkbyB1bmRvT3JSZWRvKQogewotICAgIG1fcGFnZUNsaWVudC0+cmVnaXN0ZXJFZGl0Q29tbWFu
ZChjb21tYW5kUHJveHksIHVuZG9PclJlZG8pOworICAgIG1fcGFnZUNsaWVudC5yZWdpc3RlckVk
aXRDb21tYW5kKGNvbW1hbmRQcm94eSwgdW5kb09yUmVkbyk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjphZGRFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5KiBjb21tYW5kKQpAQCAtMzM5
OCwyMCArMzM5OCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9vbFRpcChjb25zdCBTdHJp
CiB7CiAgICAgU3RyaW5nIG9sZFRvb2xUaXAgPSBtX3Rvb2xUaXA7CiAgICAgbV90b29sVGlwID0g
dG9vbFRpcDsKLSAgICBtX3BhZ2VDbGllbnQtPnRvb2xUaXBDaGFuZ2VkKG9sZFRvb2xUaXAsIG1f
dG9vbFRpcCk7CisgICAgbV9wYWdlQ2xpZW50LnRvb2xUaXBDaGFuZ2VkKG9sZFRvb2xUaXAsIG1f
dG9vbFRpcCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXJzb3IoY29uc3QgV2ViQ29y
ZTo6Q3Vyc29yJiBjdXJzb3IpCiB7CiAgICAgLy8gVGhlIFdlYiBwcm9jZXNzIG1heSBoYXZlIGFz
a2VkIHRvIGNoYW5nZSB0aGUgY3Vyc29yIHdoZW4gdGhlIHZpZXcgd2FzIGluIGFuIGFjdGl2ZSB3
aW5kb3csIGJ1dAogICAgIC8vIGlmIGl0IGlzIG5vIGxvbmdlciBpbiBhIHdpbmRvdyBvciB0aGUg
d2luZG93IGlzIG5vdCBhY3RpdmUsIHRoZW4gdGhlIGN1cnNvciBzaG91bGQgbm90IGNoYW5nZS4K
LSAgICBpZiAobV9wYWdlQ2xpZW50LT5pc1ZpZXdXaW5kb3dBY3RpdmUoKSkKLSAgICAgICAgbV9w
YWdlQ2xpZW50LT5zZXRDdXJzb3IoY3Vyc29yKTsKKyAgICBpZiAobV9wYWdlQ2xpZW50LmlzVmll
d1dpbmRvd0FjdGl2ZSgpKQorICAgICAgICBtX3BhZ2VDbGllbnQuc2V0Q3Vyc29yKGN1cnNvcik7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
Ym9vbCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5zZXRDdXJz
b3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoaGlkZGVuVW50aWxNb3VzZU1vdmVzKTsKKyAgICBtX3Bh
Z2VDbGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VN
b3Zlcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qg
b3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQpAQCAtMzQ4NCw3ICszNDg0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MwogICAgICAgICBpZiAoIW1fa2V5RXZlbnRR
dWV1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpKSwgbV9wYWdlSUQpOwogCi0g
ICAgICAgIG1fcGFnZUNsaWVudC0+ZG9uZVdpdGhLZXlFdmVudChldmVudCwgaGFuZGxlZCk7Cisg
ICAgICAgIG1fcGFnZUNsaWVudC5kb25lV2l0aEtleUV2ZW50KGV2ZW50LCBoYW5kbGVkKTsKICAg
ICAgICAgaWYgKGhhbmRsZWQpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzUwMSwxMCArMzUw
MSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzCiAgICAgICAg
IE1FU1NBR0VfQ0hFQ0sodHlwZSA9PSBxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQudHlwZSgp
KTsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUucmVtb3ZlRmlyc3QoKTsKIAotICAgICAgICBt
X3BhZ2VDbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZl
bnQsIGhhbmRsZWQpOworICAgICAgICBtX3BhZ2VDbGllbnQuZG9uZVdpdGhUb3VjaEV2ZW50KHF1
ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudCwgaGFuZGxlZCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcXVldWVkRXZlbnRzLmRlZmVycmVkVG91Y2hFdmVudHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
IG1fcGFnZUNsaWVudC0+ZG9uZVdpdGhUb3VjaEV2ZW50KHF1ZXVlZEV2ZW50cy5kZWZlcnJlZFRv
dWNoRXZlbnRzLmF0KGkpLCBpc0V2ZW50SGFuZGxlZCk7CisgICAgICAgICAgICBtX3BhZ2VDbGll
bnQuZG9uZVdpdGhUb3VjaEV2ZW50KHF1ZXVlZEV2ZW50cy5kZWZlcnJlZFRvdWNoRXZlbnRzLmF0
KGkpLCBpc0V2ZW50SGFuZGxlZCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzY3OSw3ICszNjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgp
CiAgICAgLy8gaGF2aW5nIHRoZSBwYWdlIGxvYWQgc3RhdGUgYXZhaWxhYmxlIGNvdWxkIGJlIHVz
ZWZ1bC4KICAgICBtX3BhZ2VMb2FkU3RhdGUucmVzZXQoKTsKIAotICAgIG1fcGFnZUNsaWVudC0+
cHJvY2Vzc0RpZENyYXNoKCk7CisgICAgbV9wYWdlQ2xpZW50LnByb2Nlc3NEaWRDcmFzaCgpOwog
ICAgIG1fbG9hZGVyQ2xpZW50LnByb2Nlc3NEaWRDcmFzaCh0aGlzKTsKIH0KIApAQCAtMzc2OSw3
ICszNzY5LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV9wYWdlQ2xp
ZW50KTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKIAogICAgIG1faXNW
YWxpZCA9IGZhbHNlOwpAQCAtMzc4Myw3ICszNzgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGVBZnRlclByb2NlcwogCiAgICAgcmVzZXRTdGF0ZSgpOwogCi0gICAgbV9wYWdlQ2xp
ZW50LT5jbGVhckFsbEVkaXRDb21tYW5kcygpOworICAgIG1fcGFnZUNsaWVudC5jbGVhckFsbEVk
aXRDb21tYW5kcygpOwogICAgIG1fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50
ID0gMDsKIAogICAgIC8vIENhbid0IGV4cGVjdCBEaWRSZWNlaXZlRXZlbnQgbm90aWZpY2F0aW9u
cyBmcm9tIGEgY3Jhc2hlZCB3ZWIgcHJvY2Vzcy4KQEAgLTM4MDcsMTMgKzM4MDYsMTMgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogCiAjaWYgIVBMQVRGT1JNKElP
UykgJiYgUExBVEZPUk0oTUFDKQogICAgIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoUmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOwotICAgIG1fcGFnZUNsaWVudC0+ZGlz
bWlzc0RpY3Rpb25hcnlMb29rdXBQYW5lbCgpOworICAgIG1fcGFnZUNsaWVudC5kaXNtaXNzRGlj
dGlvbmFyeUxvb2t1cFBhbmVsKCk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omlu
aXRpYWxpemVDcmVhdGlvblBhcmFtZXRlcnMoKQogewotICAgIG1fY3JlYXRpb25QYXJhbWV0ZXJz
LnZpZXdTaXplID0gbV9wYWdlQ2xpZW50LT52aWV3U2l6ZSgpOworICAgIG1fY3JlYXRpb25QYXJh
bWV0ZXJzLnZpZXdTaXplID0gbV9wYWdlQ2xpZW50LnZpZXdTaXplKCk7CiAgICAgbV9jcmVhdGlv
blBhcmFtZXRlcnMudmlld1N0YXRlID0gbV92aWV3U3RhdGU7CiAgICAgbV9jcmVhdGlvblBhcmFt
ZXRlcnMuZHJhd2luZ0FyZWFUeXBlID0gbV9kcmF3aW5nQXJlYS0+dHlwZSgpOwogICAgIG1fY3Jl
YXRpb25QYXJhbWV0ZXJzLnN0b3JlID0gbV9wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCktPnN0b3Jl
KCk7CkBAIC0zODQ0LDcgKzM4NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNy
ZWF0aW9uUGFyCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIG1fY3JlYXRpb25QYXJhbWV0ZXJzLmxh
eWVySG9zdGluZ01vZGUgPSBtX2xheWVySG9zdGluZ01vZGU7CiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICBtX2NyZWF0aW9uUGFyYW1ldGVycy5jb2xvclNwYWNlID0gbV9wYWdlQ2xpZW50LT5jb2xv
clNwYWNlKCk7CisgICAgbV9jcmVhdGlvblBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IG1fcGFnZUNs
aWVudC5jb2xvclNwYWNlKCk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKICNlbmRpZgogfQpA
QCAtMzg1MiwxNyArMzg1MSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNyZWF0
aW9uUGFyCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogdm9pZCBXZWJQYWdlUHJv
eHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4
dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CisgICAgbV9wYWdlQ2xpZW50LmVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUobGF5ZXJUcmVlQ29udGV4dCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogewotICAg
IG1fcGFnZUNsaWVudC0+ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisgICAgbV9w
YWdlQ2xpZW50LmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPnVwZGF0
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVyVHJlZUNvbnRleHQpOworICAgIG1fcGFn
ZUNsaWVudC51cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllclRyZWVDb250ZXh0
KTsKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKQEAgLTM5MzYs
NyArMzkzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0R2VvbG9jYXRpb25QZXIKICAg
ICBpZiAobV91aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0KHRoaXMsIGZyYW1lLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAobV9wYWdlQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgKm9yaWdpbiwgKnJlcXVlc3QpKQorICAgIGlmICht
X3BhZ2VDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCgq
ZnJhbWUsICpvcmlnaW4sICpyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVxdWVz
dC0+ZGVueSgpOwpAQCAtNDAyNCw3ICs0MDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5vdGlm
eVNjcm9sbGVyVGh1bWJJcwogdm9pZCBXZWJQYWdlUHJveHk6OnJlY29tbWVuZGVkU2Nyb2xsYmFy
U3R5bGVEaWRDaGFuZ2UoaW50MzJfdCBuZXdTdHlsZSkKIHsKICNpZiBVU0UoQVBQS0lUKQotICAg
IG1fcGFnZUNsaWVudC0+cmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHls
ZSk7CisgICAgbV9wYWdlQ2xpZW50LnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2Uo
bmV3U3R5bGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obmV3U3R5bGUpOwogI2VuZGlmCkBA
IC00MTg1LDcgKzQxODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0b3Jl
RGlzCiAgICAgaWYgKCFtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+aXNSZXNwb25z
aXZlKCkpCiAgICAgICAgIGlzRGlzY2FyZGFibGUgPSBmYWxzZTsKICAgICBlbHNlCi0gICAgICAg
IGlzRGlzY2FyZGFibGUgPSAhbV9wYWdlQ2xpZW50LT5pc1ZpZXdXaW5kb3dBY3RpdmUoKSB8fCAh
aXNWaWV3VmlzaWJsZSgpOworICAgICAgICBpc0Rpc2NhcmRhYmxlID0gIW1fcGFnZUNsaWVudC5p
c1ZpZXdXaW5kb3dBY3RpdmUoKSB8fCAhaXNWaWV3VmlzaWJsZSgpOwogCiAgICAgbV9kcmF3aW5n
QXJlYS0+c2V0QmFja2luZ1N0b3JlSXNEaXNjYXJkYWJsZShpc0Rpc2NhcmRhYmxlKTsKIH0KQEAg
LTQyNTEsMjIgKzQyNTAsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1YnN0aXR1dGlvbnNQYW5l
bElzUwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvcnJlY3Rpb25QYW5lbChpbnQzMl90IHBh
bmVsVHlwZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykK
IHsKLSAgICBtX3BhZ2VDbGllbnQtPnNob3dDb3JyZWN0aW9uUGFuZWwoKEFsdGVybmF0aXZlVGV4
dFR5cGUpcGFuZWxUeXBlLCBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIHJlcGxhY2VkU3Ry
aW5nLCByZXBsYWNlbWVudFN0cmluZywgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MpOwor
ICAgIG1fcGFnZUNsaWVudC5zaG93Q29ycmVjdGlvblBhbmVsKChBbHRlcm5hdGl2ZVRleHRUeXBl
KXBhbmVsVHlwZSwgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCByZXBsYWNlZFN0cmluZywg
cmVwbGFjZW1lbnRTdHJpbmcsIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWwoaW50MzJfdCByZWFzb24p
CiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5kaXNtaXNzQ29ycmVjdGlvblBhbmVsKChSZWFzb25Gb3JE
aXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KXJlYXNvbik7CisgICAgbV9wYWdlQ2xpZW50LmRpc21p
c3NDb3JyZWN0aW9uUGFuZWwoKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpcmVh
c29uKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29u
KGludDMyX3QgcmVhc29uLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBtX3BhZ2VD
bGllbnQtPmRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0
ZXJuYXRpdmVUZXh0KXJlYXNvbik7CisgICAgcmVzdWx0ID0gbV9wYWdlQ2xpZW50LmRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKChSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KXJl
YXNvbik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKGludDMyX3QgcmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKQogewotICAgIG1fcGFnZUNsaWVudC0+cmVj
b3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZSgoQXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUpcmVz
cG9uc2VUeXBlLCByZXBsYWNlZFN0cmluZywgcmVwbGFjZW1lbnRTdHJpbmcpOworICAgIG1fcGFn
ZUNsaWVudC5yZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKChBdXRvY29ycmVjdGlvblJlc3Bv
bnNlVHlwZSlyZXNwb25zZVR5cGUsIHJlcGxhY2VkU3RyaW5nLCByZXBsYWNlbWVudFN0cmluZyk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChj
b25zdCBTdHJpbmcmIHJlc3VsdCkKQEAgLTQyNzgsMTcgKzQyNzcsMTcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0X3Qg
ZGljdGF0aW9uQ29udGV4dCkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPnNob3dEaWN0YXRpb25BbHRl
cm5hdGl2ZVVJKGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIGRpY3RhdGlvbkNvbnRleHQpOwor
ICAgIG1fcGFnZUNsaWVudC5zaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShib3VuZGluZ0JveE9m
RGljdGF0ZWRUZXh0LCBkaWN0YXRpb25Db250ZXh0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KQog
ewotICAgIG1fcGFnZUNsaWVudC0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlv
bkNvbnRleHQpOworICAgIG1fcGFnZUNsaWVudC5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMo
ZGljdGF0aW9uQ29udGV4dCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWN0YXRpb25BbHRl
cm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCwgVmVjdG9yPFN0cmluZz4mIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBtX3BhZ2VDbGllbnQtPmRpY3RhdGlvbkFsdGVybmF0aXZlcyhk
aWN0YXRpb25Db250ZXh0KTsKKyAgICByZXN1bHQgPSBtX3BhZ2VDbGllbnQuZGljdGF0aW9uQWx0
ZXJuYXRpdmVzKGRpY3RhdGlvbkNvbnRleHQpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE1OTg4NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzIy
LDcgKzMyMiw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eQogICAgICwgcHVibGljIENvcmVJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdl
UHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50KiwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+LCBX
ZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4sIFdlYlBhZ2VHcm91cCosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViUGFn
ZVByb3h5KCk7CiAKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
RDsgfQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5u
aW5nQmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5u
aW5nQmVoYXZpb3I7IH0KICAgICAgICAgCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdl
Q2xpZW50KiwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgUGFzc1JlZlB0cjxX
ZWJQcm9jZXNzUHJveHk+LCBXZWJQYWdlR3JvdXAqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9pZCBpbml0aWFsaXplQ3JlYXRpb25QYXJh
bWV0ZXJzKCk7CiAKQEAgLTExMzgsNyArMTEzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5k
UGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IHByb2Nlc3NUeXBlLCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIGFsbG93T25seUFwcGxpY2F0aW9uUGx1Z2lucywg
dWludDY0X3QmIHBsdWdpblByb2Nlc3NUb2tlbiwgU3RyaW5nJiBuZXdNSU1FVHlwZSwgdWludDMy
X3QmIHBsdWdpbkxvYWRQb2xpY3ksIFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbik7
CiAjZW5kaWYKIAotICAgIFBhZ2VDbGllbnQqIG1fcGFnZUNsaWVudDsKKyAgICBQYWdlQ2xpZW50
JiBtX3BhZ2VDbGllbnQ7CiAgICAgV2ViTG9hZGVyQ2xpZW50IG1fbG9hZGVyQ2xpZW50OwogICAg
IFdlYlBvbGljeUNsaWVudCBtX3BvbGljeUNsaWVudDsKICAgICBXZWJGb3JtQ2xpZW50IG1fZm9y
bUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAxNTk4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIFdlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUKICAgICByZXR1cm4gZ2xvYmFsUGFn
ZU1hcCgpLmdldChwYWdlSUQpOwogfQogCi1QYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFdlYkNvbnRl
eHQqLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKK1Bhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2Vi
Q29udGV4dCosIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwKQogewogICAgIHVpbnQ2NF90IHBhZ2VJ
RCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsIHRoaXMsIHBhZ2VHcm91cCwgcGFnZUlE
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJl
dmlzaW9uIDE1OTg4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29u
dGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiAgICAg
c3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIFBhc3NS
ZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQqLCBXZWJDb250ZXh0
KiwgV2ViUGFnZUdyb3VwKik7CisgICAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYsIFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqKTsKICAgICB2b2lk
IGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlSUQpOwogICAg
IHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFZlY3RvcjxXZWJQYWdl
UHJveHkqPiBwYWdlcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkocmV2aXNpb24gMTU5ODg3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzEsNyArOTMxLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3
QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViSwogewogICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSog
cHJpdiA9IHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2OwogCi0gICAgcHJpdi0+cGFnZVByb3h5ID0g
Y29udGV4dC0+Y3JlYXRlV2ViUGFnZShwcml2LT5wYWdlQ2xpZW50LmdldCgpLCBwYWdlR3JvdXAp
OworICAgIHByaXYtPnBhZ2VQcm94eSA9IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBh
Z2VDbGllbnQsIHBhZ2VHcm91cCk7CiAgICAgcHJpdi0+cGFnZVByb3h5LT5pbml0aWFsaXplV2Vi
UGFnZSgpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tDb250ZW50Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCShyZXZpc2lvbiAx
NTk4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgLSAodm9pZClfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoQ29udGV4dAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9v
cCgpOwogCiAgICAgX3BhZ2VDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDbGllbnRJbXBs
PihzZWxmKTsKLSAgICBfcGFnZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFnZShf
cGFnZUNsaWVudC5nZXQoKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChyZWxhdGVkUGFn
ZSkpOworICAgIF9wYWdlID0gdG9JbXBsKGNvbnRleHRSZWYpLT5jcmVhdGVXZWJQYWdlKCpfcGFn
ZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChyZWxhdGVkUGFnZSkpOwogICAg
IF9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwogICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZp
Y2VTY2FsZUZhY3RvcihbVUlTY3JlZW4gbWFpblNjcmVlbl0uc2NhbGUpOwogICAgIF9wYWdlLT5z
ZXRVc2VGaXhlZExheW91dCh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE1OTg4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkwOCw3ICsyOTA4
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleAogICAgIF9kYXRh
ID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKIAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudEltcGw+KHNlbGYpOwotICAgIF9kYXRhLT5fcGFn
ZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlV2ViUGFnZShfZGF0YS0+X3BhZ2VDbGllbnQu
Z2V0KCksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCB0b0ltcGwocmVsYXRlZFBhZ2UpKTsKKyAgICBf
ZGF0YS0+X3BhZ2UgPSB0b0ltcGwoY29udGV4dFJlZiktPmNyZWF0ZVdlYlBhZ2UoKl9kYXRhLT5f
cGFnZUNsaWVudCwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHRvSW1wbChyZWxhdGVkUGFnZSkpOwog
ICAgIF9kYXRhLT5fcGFnZS0+c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoW3NlbGYgX2lu
dHJpbnNpY0RldmljZVNjYWxlRmFjdG9yXSk7CiAgICAgX2RhdGEtPl9wYWdlLT5pbml0aWFsaXpl
V2ViUGFnZSgpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYlBhZ2VQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCShyZXZp
c2lvbiAxNTk4ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJQYWdlUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFpvb21hYmxlQXJlYUZvclBv
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IEludFBvaW50
JiB0YXJnZXQsIGNvbnN0IEludFJlY3QmIGFyZWEpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5kaWRG
aW5kWm9vbWFibGVBcmVhKHRhcmdldCwgYXJlYSk7CisgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmRa
b29tYWJsZUFyZWEodGFyZ2V0LCBhcmVhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTU5ODg3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDcgQEAgV2ViVmlldzo6V2ViVmlldyhXZWJDb250ZXh0KiBjb250ZXh0LCBX
ZQogICAgICwgbV9vcGFjaXR5KDEuMCkKIHsKICAgICAvLyBOZWVkIHRvIGNhbGwgY3JlYXRlV2Vi
UGFnZSBhZnRlciBvdGhlciBkYXRhIG1lbWJlcnMsIHNwZWNpZmljYWxseSBtX3Zpc2libGUsIGFy
ZSBpbml0aWFsaXplZC4KLSAgICBtX3BhZ2UgPSBjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMs
IHBhZ2VHcm91cCk7CisgICAgbV9wYWdlID0gY29udGV4dC0+Y3JlYXRlV2ViUGFnZSgqdGhpcywg
cGFnZUdyb3VwKTsKIAogICAgIG1fcGFnZS0+cGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHRydWUpOwogICAgIG1fcGFnZS0+cGFnZUdy
b3VwKCktPnByZWZlcmVuY2VzKCktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cAkocmV2aXNpb24gMTU5ODg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRFZGl0b3JDb21tYW5kc0ZvcksKICAgICAvLyBXaGVuIHRoZSBrZXlib2Fy
ZCBldmVudCBpcyBzdGFydGVkIGluIHRoZSBXZWJQcm9jZXNzIHNpZGUgKGUuZy4gZnJvbSB0aGUg
SW5zcGVjdG9yKQogICAgIC8vIGl0IHdpbGwgYXJyaXZlIHdpdGhvdXQgYSBHZGtFdmVudCBhc3Nv
Y2lhdGVkLCBzbyB0aGUga2V5RXZlbnRRdWV1ZSB3aWxsIGJlIGVtcHR5LgogICAgIGlmICghbV9r
ZXlFdmVudFF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wYWdlQ2xpZW50LT5nZXRFZGl0b3JD
b21tYW5kc0ZvcktleUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpLCBldmVudFR5cGUsIGNv
bW1hbmRzTGlzdCk7CisgICAgICAgIG1fcGFnZUNsaWVudC5nZXRFZGl0b3JDb21tYW5kc0Zvcktl
eUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpLCBldmVudFR5cGUsIGNvbW1hbmRzTGlzdCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpiaW5kQWNjZXNzaWJpbGl0eVRyZWUoY29uc3QgU3Ry
aW5nJiBwbHVnSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMTU5ODg3KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJwcmV0UXVldWVkS2V5RXZlCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgRWRpdG9yU3RhdGUmIHN0YXRlLCBi
b29sIGlzQ2hhckV2ZW50LCBib29sJiBoYW5kbGVkKQogewogICAgIG1fZWRpdG9yU3RhdGUgPSBz
dGF0ZTsKLSAgICBoYW5kbGVkID0gbV9wYWdlQ2xpZW50LT5pbnRlcnByZXRLZXlFdmVudChtX2tl
eUV2ZW50UXVldWUuZmlyc3QoKSwgaXNDaGFyRXZlbnQpOworICAgIGhhbmRsZWQgPSBtX3BhZ2VD
bGllbnQuaW50ZXJwcmV0S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCksIGlzQ2hhckV2
ZW50KTsKIH0KIAogLy8gQ29tcGxleCB0ZXh0IGlucHV0IHN1cHBvcnQgZm9yIHBsdWctaW5zLgpA
QCAtMzU2LDI3ICszNTYsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJBc3Npc3RlZE5vZGUo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURvY1R5
cGUoKQogewotICAgIG1fcGFnZUNsaWVudC0+bWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURv
Y1R5cGUoKTsKKyAgICBtX3BhZ2VDbGllbnQubWFpbkRvY3VtZW50RGlkUmVjZWl2ZU1vYmlsZURv
Y1R5cGUoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFRhcEhpZ2hsaWdodEdlb21l
dHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0
b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpCiB7Ci0gICAgbV9wYWdl
Q2xpZW50LT5kaWRHZXRUYXBIaWdobGlnaHRHZW9tZXRyaWVzKHJlcXVlc3RJRCwgY29sb3IsIGhp
Z2hsaWdodGVkUXVhZHMsIHRvcExlZnRSYWRpdXMsIHRvcFJpZ2h0UmFkaXVzLCBib3R0b21MZWZ0
UmFkaXVzLCBib3R0b21SaWdodFJhZGl1cyk7CisgICAgbV9wYWdlQ2xpZW50LmRpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXMocmVxdWVzdElELCBjb2xvciwgaGlnaGxpZ2h0ZWRRdWFkcywgdG9w
TGVmdFJhZGl1cywgdG9wUmlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMsIGJvdHRvbVJpZ2h0
UmFkaXVzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZpZXdwb3J0QXJndW1l
bnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykK
IHsKLSAgICBtX3BhZ2VDbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0
QXJndW1lbnRzKTsKKyAgICBtX3BhZ2VDbGllbnQuZGlkQ2hhbmdlVmlld3BvcnRBcmd1bWVudHMo
dmlld3BvcnRBcmd1bWVudHMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRBc3Npc3Rp
bmdOb2RlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGJvb2wgaGFzTmV4dEZv
Y3VzYWJsZSwgYm9vbCBoYXNQcmV2aW91c0ZvY3VzYWJsZSkKIHsKLSAgICBtX3BhZ2VDbGllbnQt
PnN0YXJ0QXNzaXN0aW5nTm9kZShzY3JvbGxSZWN0LCBoYXNOZXh0Rm9jdXNhYmxlLCBoYXNQcmV2
aW91c0ZvY3VzYWJsZSk7CisgICAgbV9wYWdlQ2xpZW50LnN0YXJ0QXNzaXN0aW5nTm9kZShzY3Jv
bGxSZWN0LCBoYXNOZXh0Rm9jdXNhYmxlLCBoYXNQcmV2aW91c0ZvY3VzYWJsZSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdG9wQXNzaXN0aW5nTm9kZSgpCiB7Ci0gICAgbV9wYWdlQ2xpZW50
LT5zdG9wQXNzaXN0aW5nTm9kZSgpOworICAgIG1fcGFnZUNsaWVudC5zdG9wQXNzaXN0aW5nTm9k
ZSgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKQpAQCAt
NDAxLDcgKzQwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFyeUYK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIo
UGxhdGZvcm1MYXllciogcm9vdExheWVyKQogewotICAgIG1fcGFnZUNsaWVudC0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihyb290TGF5ZXIpOworICAgIG1fcGFnZUNsaWVudC5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKHJvb3RMYXllcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDE1OTg4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd0FuZFZpZXdGcmFtZXNDaAogCiAg
ICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFtZSgpLCB3
ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRlIHdpbmRv
dyBmcmFtZS4KICAgICBGbG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzID0g
bV91aUNsaWVudC53aW5kb3dGcmFtZSh0aGlzKTsKLSAgICBGbG9hdFJlY3Qgd2luZG93RnJhbWVJ
blVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzID0gbV9wYWdlQ2xpZW50LT5jb252ZXJ0VG9Vc2Vy
U3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKKyAgICBGbG9hdFJlY3Qgd2lu
ZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzID0gbV9wYWdlQ2xpZW50LmNvbnZl
cnRUb1VzZXJTcGFjZSh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpOwogCiAgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdl
ZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRT
Y3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJp
bGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0KGNvCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZS5zaXplKCk7ICsraSkg
ewogICAgICAgICBjb25zdCBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UmIGFsdGVybmF0aXZlV2l0
aFJhbmdlID0gZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlW2ldOwotICAgICAgICB1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0ID0gbV9wYWdlQ2xpZW50LT5hZGREaWN0YXRpb25BbHRlcm5h
dGl2ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKKyAgICAgICAgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCA9IG1fcGFnZUNsaWVudC5hZGREaWN0YXRpb25BbHRlcm5hdGl2
ZXMoYWx0ZXJuYXRpdmVXaXRoUmFuZ2UuYWx0ZXJuYXRpdmVzKTsKICAgICAgICAgaWYgKGRpY3Rh
dGlvbkNvbnRleHQpCiAgICAgICAgICAgICBkaWN0YXRpb25BbHRlcm5hdGl2ZXMuYXBwZW5kKERp
Y3RhdGlvbkFsdGVybmF0aXZlKGFsdGVybmF0aXZlV2l0aFJhbmdlLnJhbmdlLmxvY2F0aW9uLCBh
bHRlcm5hdGl2ZVdpdGhSYW5nZS5yYW5nZS5sZW5ndGgsIGRpY3RhdGlvbkNvbnRleHQpKTsKICAg
ICB9CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYWdJbWFnZShj
b25zdCBXZQogICAgIGlmICghZHJhZ0ltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
bV9wYWdlQ2xpZW50LT5zZXREcmFnSW1hZ2UoY2xpZW50UG9zaXRpb24sIGRyYWdJbWFnZS5yZWxl
YXNlKCksIGlzTGlua0RyYWcpOworICAgIG1fcGFnZUNsaWVudC5zZXREcmFnSW1hZ2UoY2xpZW50
UG9zaXRpb24sIGRyYWdJbWFnZS5yZWxlYXNlKCksIGlzTGlua0RyYWcpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VT
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwKQEAg
LTM3Myw3ICszNzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhKGNvbnN0
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZShhcmNoaXZlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTs7
CiAgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QXJjaGl2ZS0+ZGF0YSgpKSwgYXJjaGl2ZVNp
emUpOwogICAgIH0KLSAgICBtX3BhZ2VDbGllbnQtPnNldFByb21pc2VkRGF0YShwYXN0ZWJvYXJk
TmFtZSwgaW1hZ2VCdWZmZXIsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIGFyY2hpdmVCdWZmZXIpOworICAgIG1fcGFnZUNsaWVudC5zZXRQcm9taXNlZERhdGEo
cGFzdGVib2FyZE5hbWUsIGltYWdlQnVmZmVyLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwg
dXJsLCB2aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyKTsKIH0KICNlbmRpZgogCkBAIC0zODgsNyAr
Mzg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9vawogdm9pZCBX
ZWJQYWdlUHJveHk6OmludGVycHJldFF1ZXVlZEtleUV2ZW50KGNvbnN0IEVkaXRvclN0YXRlJiBz
dGF0ZSwgYm9vbCYgaGFuZGxlZCwgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mIGNv
bW1hbmRzKQogewogICAgIG1fZWRpdG9yU3RhdGUgPSBzdGF0ZTsKLSAgICBoYW5kbGVkID0gbV9w
YWdlQ2xpZW50LT5pbnRlcnByZXRLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSwgY29t
bWFuZHMpOworICAgIGhhbmRsZWQgPSBtX3BhZ2VDbGllbnQuaW50ZXJwcmV0S2V5RXZlbnQobV9r
ZXlFdmVudFF1ZXVlLmZpcnN0KCksIGNvbW1hbmRzKTsKIH0KIAogLy8gQ29tcGxleCB0ZXh0IGlu
cHV0IHN1cHBvcnQgZm9yIHBsdWctaW5zLgpAQCAtNDI3LDIyICs0MjcsMjIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgQXR0cmlidXRlZFN0cmluZyYgdGV4dCwgY29u
c3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKIHsKLSAgICBtX3Bh
Z2VDbGllbnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIGRpY3Rpb25hcnlQb3B1
cEluZm8pOworICAgIG1fcGFnZUNsaWVudC5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCh0ZXh0
LCBkaWN0aW9uYXJ5UG9wdXBJbmZvKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdp
c3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChkYXRhKTsKKyAgICBtX3BhZ2VDbGllbnQuYWNjZXNzaWJpbGl0eVdlYlBy
b2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOwogfSAgICAKICAgICAKIHZvaWQgV2ViUGFnZVByb3h5
OjptYWtlRmlyc3RSZXNwb25kZXIoKQogewotICAgIG1fcGFnZUNsaWVudC0+bWFrZUZpcnN0UmVz
cG9uZGVyKCk7CisgICAgbV9wYWdlQ2xpZW50Lm1ha2VGaXJzdFJlc3BvbmRlcigpOwogfQogCiBD
b2xvclNwYWNlRGF0YSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQogewotICAgIHJldHVybiBt
X3BhZ2VDbGllbnQtPmNvbG9yU3BhY2UoKTsKKyAgICByZXR1cm4gbV9wYWdlQ2xpZW50LmNvbG9y
U3BhY2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2Vucyhjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW50VG9rZW4s
IGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKQpAQCAtNDU1LDIxICs0
NTUsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdp
bmRvd0hhc0ZvY3VzKQogewotICAgIG1fcGFnZUNsaWVudC0+cGx1Z2luRm9jdXNPcldpbmRvd0Zv
Y3VzQ2hhbmdlZChwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgcGx1Z2luSGFzRm9j
dXNBbmRXaW5kb3dIYXNGb2N1cyk7CisgICAgbV9wYWdlQ2xpZW50LnBsdWdpbkZvY3VzT3JXaW5k
b3dGb2N1c0NoYW5nZWQocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHBsdWdpbkhh
c0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGx1
Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJ
ZGVudGlmaWVyLCB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpCiB7CiAgICAg
TUVTU0FHRV9DSEVDSyhpc1ZhbGlkUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRTdGF0ZSkpOwogCi0gICAgbV9wYWdlQ2xpZW50LT5zZXRQbHVnaW5Db21w
bGV4VGV4dElucHV0U3RhdGUocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHN0YXRp
Y19jYXN0PFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZT4ocGx1Z2luQ29tcGxleFRleHRJbnB1
dFN0YXRlKSk7CisgICAgbV9wYWdlQ2xpZW50LnNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0
ZShwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8UGx1Z2luQ29t
cGxleFRleHRJbnB1dFN0YXRlPihwbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIGJvb2wmIGhhbmRsZWQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhpc1Zh
bGlkS2V5cHJlc3NDb21tYW5kTmFtZShzZWxlY3RvcikpOwogCi0gICAgaGFuZGxlZCA9IG1fcGFn
ZUNsaWVudC0+ZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3Ioc2VsZWN0b3IpOworICAgIGhh
bmRsZWQgPSBtX3BhZ2VDbGllbnQuZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3Ioc2VsZWN0
b3IpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0Zv
ckV2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYgZXZlbnQpCkBAIC00OTYsMTcgKzQ5
NiwxNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50CiAKIFdLVmll
dyogV2ViUGFnZVByb3h5Ojp3a1ZpZXcoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VDbGll
bnQtPndrVmlldygpOworICAgIHJldHVybiBtX3BhZ2VDbGllbnQud2tWaWV3KCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjppbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBJbnRT
aXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkKIHsKLSAgICBtX3BhZ2VDbGllbnQtPmludHJpbnNp
Y0NvbnRlbnRTaXplRGlkQ2hhbmdlKGludHJpbnNpY0NvbnRlbnRTaXplKTsKKyAgICBtX3BhZ2VD
bGllbnQuaW50cmluc2ljQ29udGVudFNpemVEaWRDaGFuZ2UoaW50cmluc2ljQ29udGVudFNpemUp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RM
YXllcihQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIpCiB7Ci0gICAgbV9wYWdlQ2xpZW50LT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKHJvb3RMYXllcik7CisgICAgbV9wYWdlQ2xp
ZW50LnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIocm9vdExheWVyKTsKIH0KIAog
c3RhdGljIE5TU3RyaW5nICp0ZW1wb3JhcnlQREZEaXJlY3RvcnlQYXRoKCkK
</data>
<flag name="review"
          id="241410"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>