<?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>141135</bug_id>
          
          <creation_ts>2015-02-01 00:10:48 -0800</creation_ts>
          <short_desc>Clean up WebInspectorProxy and use simpler inspector levels design</short_desc>
          <delta_ts>2015-02-05 13:52:15 -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>WebKit2</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>
          <dependson>141037</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>mrobinson</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065946</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-01 00:10:48 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065951</commentid>
    <comment_count>1</comment_count>
      <attachid>245824</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-01 00:25:50 -0800</bug_when>
    <thetext>Created attachment 245824
Proposed Fix

Patch is rebased on top of conversion to WKWebView, so will reupload when ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066366</commentid>
    <comment_count>2</comment_count>
      <attachid>245925</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-02 22:06:45 -0800</bug_when>
    <thetext>Created attachment 245925
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066613</commentid>
    <comment_count>3</comment_count>
      <attachid>245980</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-03 15:44:45 -0800</bug_when>
    <thetext>Created attachment 245980
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066719</commentid>
    <comment_count>4</comment_count>
      <attachid>246013</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-03 21:05:26 -0800</bug_when>
    <thetext>Created attachment 246013
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066833</commentid>
    <comment_count>5</comment_count>
      <attachid>246036</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-04 09:37:32 -0800</bug_when>
    <thetext>Created attachment 246036
Patch (fix iOS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066908</commentid>
    <comment_count>6</comment_count>
      <attachid>246036</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-02-04 14:11:21 -0800</bug_when>
    <thetext>Comment on attachment 246036
Patch (fix iOS)

Looks good. Just a couple of page() -&gt; inspectorPage() changes in EFL and Gtk you missed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067098</commentid>
    <comment_count>7</comment_count>
      <attachid>246103</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 08:51:56 -0800</bug_when>
    <thetext>Created attachment 246103
Fix GTK,EFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067101</commentid>
    <comment_count>8</comment_count>
      <attachid>246105</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 09:07:08 -0800</bug_when>
    <thetext>Created attachment 246105
Fix GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067188</commentid>
    <comment_count>9</comment_count>
      <attachid>246126</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 13:10:50 -0800</bug_when>
    <thetext>Created attachment 246126
Fix GTK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067203</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-02-05 13:52:15 -0800</bug_when>
    <thetext>Committed r179705: &lt;http://trac.webkit.org/changeset/179705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245824</attachid>
            <date>2015-02-01 00:25:50 -0800</date>
            <delta_ts>2015-02-03 15:44:39 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-141135-20150201002558.patch</filename>
            <type>text/plain</type>
            <size>43484</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzhkZjJmZjZjOGYyZDU4
NjRkMjM0MTEyNDBmNDE5YzM0ZTA1YmUzYi4uNWNjZDk5MDdmMzk1N2U5MzExOWRmNzJkZTgxZDk0
ZWQ0NzJlMjg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0wMi0wMSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0
b3IgbGV2ZWxzIHVzZWQgdG8gYmUgbWFuYWdlZCBieSBrZWVwaW5nIGEgc2V0IG9mIFdlYlBhZ2VH
cm91cAorICAgICAgICBpbnN0YW5jZXMgYW5kIGRvaW5nIHBvaW50ZXIgY29tcGFyaXNvbnMgdG8g
Y2hlY2sgd2hldGhlciB0aGUgaW5zcGVjdGVkCisgICAgICAgIHZpZXcgaXMgaXRzZWxmIGEgd2Vi
IGluc3BlY3RvciBpbnN0YW5jZS4gVGhpcyBpcyB1bm5lY2Vzc2FyeSwgYXMgd2UKKyAgICAgICAg
Y2FuIG1haW50YWluIGEgbWFwcGluZyBmcm9tIFdlYlBhZ2VQcm94eSogdG8gaXRzIGNvcnJlc3Bv
bmRpbmcgbGV2ZWwuCisKKyAgICAgICAgV2hlbiBhbiBpbnNwZWN0b3IgaW5zdGFuY2UgaXMgY3Jl
YXRlZCwgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUgbWFwcGluZworICAgICAgICBhbG9uZyB3aXRo
IGl0cyBsZXZlbC4gQW4gaW5zcGVjdG9yJ3MgbGV2ZWwgaXMgMSB1bmxlc3MgaXRzIGluc3BlY3Rl
ZCBwYWdlCisgICAgICAgIGlzIGluIHRoZSBtYXBwaW5nLCB0aGVuIGl0IGlzIG9uZSBncmVhdGVy
IHRoYXQgdGhlIGluc3BlY3RlZCBwYWdlJ3MgbGV2ZWwuCisKKyAgICAgICAgVGhlIGxldmVsIGlz
IHByb3ZpZGVkIG15IGluc3BlY3RvckxldmVsKCksIHJhdGhlciB0aGFuIGEgbWVtYmVyIHZhcmlh
YmxlLgorICAgICAgICBXZWJJbnNwZWN0b3JQcm94eSBpcyBjcmVhdGVkIGluIHRoZSBjb25zdHJ1
Y3RvciBvZiBXZWJQYWdlUHJveHkuIFRodXMsIHRoZXJlCisgICAgICAgIHdvdWxkIGJlIG5vIGNo
YW5jZSB0byBhZGQgdGhlIGluc3BlY3RvciBwYWdlJ3MgbGV2ZWwgdG8gdGhlIG1hcHBpbmcgYmVm
b3JlIHRoZQorICAgICAgICBuZXh0IGxldmVsIGluc3BlY3RvciB0cmllcyB0byBsb29rIGl0IHVw
IHdoZW4gaW5pdGlhbGl6aW5nIGl0cyBtZW1iZXJzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50
cm9kdWNlcyAgb3RoZXIgbWlzY2VsbGFuZW91cyBjbGVhbnVwcywgc3VjaCBhcyBuYW1pbmcgbV9w
YWdlCisgICAgICAgIHRvIG1faW5zcGVjdGVkUGFnZSwgdXNpbmcgUmVmIGFuZCB1c2luZyBhbiBl
bnVtIGNsYXNzIGZvciB0aGUgYXR0YWNobWVudCBzaWRlLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdLSW5zcGVjdG9yR2V0UGFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAocmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFnZUxldmVs
TWFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckxldmVs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91
cElkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZVByZWZlcmVuY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNGcm9u
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6aGlkZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaWRSZWxh
dW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnNob3dDb25zb2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OnNob3dSZXNvdXJjZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OmF0dGFjaEJvdHRvbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojph
dHRhY2hSaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjphdHRhY2gp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZWFn
ZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91
cHM6OnNpbmdsZXRvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBh
Z2VHcm91cHM6Omluc3BlY3RvckxldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUGFnZUdyb3Vwczo6aXNJbnNwZWN0b3JQYWdlR3JvdXApOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JQYWdlR3JvdXBM
ZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6
Omluc3BlY3RvclBhZ2VHcm91cEZvckxldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6Y3JlYXRlSW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JQYWdlR3JvdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpvcGVuKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0ZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBh
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlF
ZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVh
dGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclBy
b3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
Q3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
Ojpkb2NrQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpjcmVhdGVJbnNwZWN0b3JXaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGF0dGFjaFJp
Z2h0Ol0pOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgYXR0YWNo
Qm90dG9tOl0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5z
cGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dX
aWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFj
aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCk6
CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV0pOiBEZWxl
dGVkLgorCiAyMDE1LTAxLTMxICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVk
dT4KIAogICAgICAgICBDb252ZXJ0IFdlYkluc3BlY3RvclByb3h5IHRvIHVzZSBXS1dlYlZpZXcg
QVBJIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tJbnNwZWN0b3IuY3BwCmluZGV4IDc1YTFjZDQ4MDdlNjM1OWJiNmFiMjk5Yzk5ZmU5
MDIxM2QzMWY3Y2UuLjZiMDIyZTI5NDk1ZjIwZDAwZTAwY2U2NmYxZDY0YWUwNTdkMzA0ZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS0luc3BlY3RvckdldFR5cGVJRCgpCiAKIFdLUGFnZVJl
ZiBXS0luc3BlY3RvckdldFBhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewotICAg
IHJldHVybiB0b0FQSSh0b0ltcGwoaW5zcGVjdG9yUmVmKS0+cGFnZSgpKTsKKyAgICByZXR1cm4g
dG9BUEkodG9JbXBsKGluc3BlY3RvclJlZiktPmluc3BlY3RlZFBhZ2UoKSk7CiB9CiAKIGJvb2wg
V0tJbnNwZWN0b3JJc0Nvbm5lY3RlZChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAKaW5kZXggYTc5MzNlNzFlYjhiNDkyZTllMjAyMTYzM2JmMjJhMzI4NjYwMDAzZC4uZTAx
YjczNjBmMTQ5ODVhOWRlN2U3YzRiMzQ1Mjk4MTI1ODJmODhlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
NTkxLDcgKzU5MSw3IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFs
bG9jYXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPmlu
c3BlY3RvclZpZXcpIHsKICAgICAgICAgR3RrQWxsb2NhdGlvbiBjaGlsZEFsbG9jYXRpb24gPSB2
aWV3UmVjdDsKIAotICAgICAgICBpZiAocHJpdi0+aW5zcGVjdG9yQXR0YWNobWVudFNpZGUgPT0g
QXR0YWNobWVudFNpZGVCb3R0b20pIHsKKyAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pIHsKICAgICAgICAgICAgIGludCBp
bnNwZWN0b3JWaWV3SGVpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihwcml2LT5pbnNw
ZWN0b3JWaWV3U2l6ZSksIGFsbG9jYXRpb24tPmhlaWdodCk7CiAgICAgICAgICAgICBjaGlsZEFs
bG9jYXRpb24ueCA9IDA7CiAgICAgICAgICAgICBjaGlsZEFsbG9jYXRpb24ueSA9IGFsbG9jYXRp
b24tPmhlaWdodCAtIGluc3BlY3RvclZpZXdIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA5YzAyYTVhYzg2NmIwNjkwZDU3NWU2
NWI3ODk2YWY2YmIwZTVkM2U2Li5hNGUxOWE5NzNjNmRiNjMzYWUxNTlhMDU4YmY5ZDBlNWVhOTZi
ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKQEAgLTU3LDkwICs1Nyw0NiBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6
bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclBy
b3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAxMDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVj
dG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAKLWNsYXNzIFdlYkluc3BlY3Rv
clBhZ2VHcm91cHMgewotcHVibGljOgotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBz
JiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYklu
c3BlY3RvclBhZ2VHcm91cHM+IGluc3RhbmNlOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0g
ICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0
ZWRQYWdlR3JvdXApCi0gICAgewotICAgICAgICByZXR1cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAo
aW5zcGVjdGVkUGFnZUdyb3VwKSA/IGluc3BlY3RvclBhZ2VHcm91cExldmVsKGluc3BlY3RlZFBh
Z2VHcm91cCkgKyAxIDogMTsKLSAgICB9Ci0KLSAgICBib29sIGlzSW5zcGVjdG9yUGFnZUdyb3Vw
KFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAgICAgICByZXR1cm4gbV9wYWdlR3JvdXBM
ZXZlbC5jb250YWlucygmZ3JvdXApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGluc3BlY3RvclBh
Z2VHcm91cExldmVsKFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAgICAgICBBU1NFUlQo
aXNJbnNwZWN0b3JQYWdlR3JvdXAoZ3JvdXApKTsKLSAgICAgICAgcmV0dXJuIG1fcGFnZUdyb3Vw
TGV2ZWwuZ2V0KCZncm91cCk7Ci0gICAgfQotCi0gICAgV2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQ
YWdlR3JvdXBGb3JMZXZlbCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBs
ZXZlbCBpcyB0aGUga2V5IG9mIHRoZSBIYXNoTWFwLCBzbyBpdCBjYW5ub3QgYmUgMC4KLSAgICAg
ICAgQVNTRVJUKGxldmVsKTsKLQotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBC
eUxldmVsLmZpbmQobGV2ZWwpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBC
eUxldmVsLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
LQotICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBncm91cCA9IGNyZWF0ZUluc3BlY3RvclBh
Z2VHcm91cChsZXZlbCk7Ci0gICAgICAgIG1fcGFnZUdyb3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdy
b3VwLmdldCgpKTsKLSAgICAgICAgbV9wYWdlR3JvdXBMZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxl
dmVsKTsKLSAgICAgICAgcmV0dXJuIGdyb3VwLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91
cCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBh
Z2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3Bl
Y3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIg
SW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgotICAg
ICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2Fn
ZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwotI2VuZGlmCi0KLSAgICAgICAgcGFnZUdy
b3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsK
LQotICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB0eXBl
ZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxXZWJQYWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlM
ZXZlbE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBh
Z2VHcm91cExldmVsTWFwOwordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIHVuc2lnbmVk
PiBQYWdlTGV2ZWxNYXA7CiAKLSAgICBQYWdlR3JvdXBCeUxldmVsTWFwIG1fcGFnZUdyb3VwQnlM
ZXZlbDsKLSAgICBQYWdlR3JvdXBMZXZlbE1hcCBtX3BhZ2VHcm91cExldmVsOwotfTsKK3N0YXRp
YyBQYWdlTGV2ZWxNYXAmIHBhZ2VMZXZlbE1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFBhZ2VMZXZlbE1hcD4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKLVdlYkluc3BlY3Rv
clByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCi0gICAgOiBtX3Bh
Z2UocGFnZSkKK1dlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJv
eHkqIGluc3BlY3RlZFBhZ2UpCisgICAgOiBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNlbmRpZgogewotICAg
IG1fbGV2ZWwgPSBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JM
ZXZlbChtX3BhZ2UtPnBhZ2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKworICAgIG1faW5zcGVjdGVkUGFnZS0+
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMp
OwogfQogCiBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3RvclByb3h5KCkKIHsKIH0KIAot
V2ViUGFnZUdyb3VwKiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3VwKCkgY29u
c3QKK3Vuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JMZXZlbCgpIGNvbnN0Cit7
CisgICAgYXV0byBmaW5kUmVzdWx0ID0gcGFnZUxldmVsTWFwKCkuZmluZChpbnNwZWN0ZWRQYWdl
KCkpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IHBhZ2VMZXZlbE1hcCgpLmVuZCgpKQorICAgICAg
ICByZXR1cm4gZmluZFJlc3VsdC0+dmFsdWUgKyAxOworICAgIAorICAgIHJldHVybiAxOworfQor
CitTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIo
KSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24o
KS5pbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVjdG9yTGV2
ZWwoKSk7CiB9CiAKIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3Vw
KCktPnByZWZlcmVuY2VzKCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgcmV0
dXJuIG1faW5zcGVjdG9yUGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCkBAIC0xNTAsMTggKzEwNiwxOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5zcGVjdG9y
U2VydmVyOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rpb25QYWdl
SWQpOwogI2VuZGlmCiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwog
ICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBw
YWdlTGV2ZWxNYXAoKS5yZW1vdmUobV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UgPSBudWxscHRyOwogfQogCiAvLyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0b3JQcm94
eTo6aXNGcm9udCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBh
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlzRnJvbnQo
KTsKQEAgLTE2OSw3ICsxMjYsNyBAQCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zyb250KCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3Nob3dNZXNzYWdlU2VudCkKQEAgLTE4MCwxMiArMTM3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNvbm5lY3QoKQogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlmICghbV9w
YWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoaXNDb25uZWN0ZWQoKSkgewpAQCAtMjAxLDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3coKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsKLSAgICBp
ZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKQEAgLTIxMSw4NiArMTY4LDg2IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmhpZGUoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgp
CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6Q2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIAogICAg
IC8vIFdoZW4gZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2Fu
IGFzc3VtZSBpdCBpcyBkdXJpbmcgYSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2Vz
IHdlIHdvdWxkIGhhdmUgc2VudCB0byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJl
LXNlbnQuCiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1f
aW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIHsK
LSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYg
KCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJ
bnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjphdHRhY2hCb3R0b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZUJv
dHRvbSk7CisgICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphdHRhY2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFjaG1lbnRT
aWRlUmlnaHQpOworICAgIGF0dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsKLSAgICBp
ZiAoIW1fcGFnZSB8fCAhY2FuQXR0YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UgfHwg
IWNhbkF0dGFjaCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSB0cnVl
OwogICAgIG1fYXR0YWNobWVudFNpZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFnZVByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHNpZGUpKTsKIAogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVj
dG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKHRydWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lk
ZSkgewotICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50
U2lkZTo6Qm90dG9tOgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJp
Z2h0OgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRS
aWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMzAwLDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRh
Y2htZW50U2lkZSBzaWRlKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKQEAgLTMwOCw3ICsyNjUsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAg
ICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
ZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwpAQCAt
MzI4LDIzICsyODUsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xl
UGFnZVByb2ZpbGluZygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAg
ICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9w
UGFnZVByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJv
ZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBX
ZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQ
YWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5Ojpp
c0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBXZWJJbnNw
ZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChwYWdlLnBh
Z2VHcm91cCgpKTsKLX0KLQogV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQcm9jZXNzUG9vbCgpCiB7CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2VzcyBwb29s
IHJlbW92ZXMgdXMgZnJvbSB0aGUgbWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTgsNiArMzEw
LDExIEBAIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKQogICAgIHJldHVybiAqcHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9y
UHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0
dXJuIHBhZ2VMZXZlbE1hcCgpLmNvbnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGljIGJvb2wg
aXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5z
cGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCByZXF1
ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgp
KTsKQEAgLTQwOCw3ICszNjUsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1w
bChsaXN0ZW5lclJlZiktPmlnbm9yZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBp
biB0aGUgaW5zcGVjdGVkIHBhZ2UuCi0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9h
ZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2Vi
SW5zcGVjdG9yUHJveHktPmluc3BlY3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKQEAgLTQyMCwxNyArMzc3LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJs
ZVJlbW90ZUluc3BlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9u
dGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5l
Y3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2Fn
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NCw2ICs0MDEs
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgp
CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHBhZ2VM
ZXZlbE1hcCgpLnNldChtX2luc3BlY3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOworCiAgICAg
V0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMg
fSwKICAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwCkBAIC01MDAsMTQgKzQ1OSwxNCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdlU2V0UGFn
ZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2Up
OwogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwg
JmxvYWRlckNsaWVudC5iYXNlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jh
c2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3Rv
clByb3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gs
IGJvb2wgdW5kZXJUZXN0KQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0
ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOwpAQCAtNTE5LDIyICs0NzgsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBt
X3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbklkZW50aWZpZXI7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rp
b25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklk
ZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAgICAg
IG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRP
cGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0
dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2ht
ZW50U2lkZSgpKTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogCiAgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRj
aCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJv
dHRvbToKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAg
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVS
aWdodDoKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTYwLDcgKzUxOSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAg
IG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCBkNjY2
NzY5OTA4NjEwNWVmYmJmYWUwMWUxMzA2NDNjMDlmZGJkY2VhLi43MGY0OTFiNDZiNjVjODg2Zjlm
NGE3NzY0M2NiMzI2ODc1ZjVhNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtNjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVudW0gQXR0
YWNobWVudFNpZGUgewotICAgIEF0dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFjaG1lbnRT
aWRlUmlnaHQKK2VudW0gY2xhc3MgQXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwKKyAgICBS
aWdodAogfTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9y
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFnZSkpOwog
ICAgIH0KIAogICAgIH5XZWJJbnNwZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwotICAgIFdl
YlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYlBhZ2VQ
cm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQog
CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdl
OyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9p
ZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFj
aG1lbnRTaWRlQm90dG9tKTsKKyAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFj
aG1lbnRTaWRlOjpCb3R0b20pOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lkIHNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5n
UGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3RhdGljIGJv
b2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQcm9jZXNz
UG9vbCYgaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3Rv
clBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJ
bnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VV
UkwoKSBjb25zdDsKQEAgLTE5Miw5ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3Bl
bigpOwogCi0gICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBncm91cCBp
ZGVudGlmaWVyLCBub3QgYW4gaW5zdGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAgICAvLyBk
aXJlY3RseSBwcm92aWRlIGEgcGFnZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNlcyBhcmUg
bm90IG5lY2Vzc2FyeSB0byBjb21wdXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAqIGluc3Bl
Y3RvclBhZ2VHcm91cCgpIGNvbnN0OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwgaXMgdXNl
ZCB0byBnaXZlIGRpZmZlcmVudCBwcmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3RvcgorICAgIC8v
IGxldmVsIGJ5IHNldHRpbmcgYSBwZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVyLgorICAg
IHVuc2lnbmVkIGluc3BlY3RvckxldmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3BlY3RvclBh
Z2VHcm91cElkZW50aWZpZXIoKSBjb25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKQEAgLTIxMiw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbml0aWFsV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRp
YWxXaW5kb3dIZWlnaHQ7CiAKLSAgICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0cn07Cisg
ICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdlYlBhZ2VQ
cm94eSogbV9pbnNwZWN0b3JQYWdlIHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Qg
e2ZhbHNlfTsKQEAgLTIyMywxNCArMjI0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3dN
ZXNzYWdlU2VudCB7ZmFsc2V9OwogICAgIGJvb2wgbV9pZ25vcmVGaXJzdEJyaW5nVG9Gcm9udCB7
ZmFsc2V9OwogCi0gICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhl
IHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKLSAgICAvLyBhbGwgdGhlIGluc3BlY3RvcnMgaW4gdGhl
IHNhbWUgZ3JvdXAgd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVidWcKLSAgICAvLyB0aGUg
aW5zcGVjdG9yIGNvZGUsIHNvIHdlIHVzZSB0aGUgbGV2ZWwgdG8gbWFrZSBkaWZmZXJlbnQgcGFn
ZSBncm91cHMuCi0gICAgdW5zaWduZWQgbV9sZXZlbDsKLSAgICAKKyAgICAvLyBLZWVwIHRyYWNr
IG9mIHdoaWNoIFdlYlBhZ2VzIGFyZSBpbnNwZWN0b3IgcGFnZXMsIGFuZCB0aGVpciBsZXZlbC4K
KyAgICBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCB1bnNpZ25lZD4gc19wYWdlTGV2ZWxN
YXA7CisKICAgICBJUEM6OkF0dGFjaG1lbnQgbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKIAotICAg
IEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1lbnRTaWRlQm90dG9tfTsK
KyAgICBBdHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRTaWRlIHtBdHRhY2htZW50U2lkZTo6Qm90
dG9tfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JX
S1dlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKaW5kZXggYmRkMTBhMzkzODkzNzU4
MTRhY2FiYTUzMDljOGI2MzJhOTNlYzhlYy4uZjVjNGY2ZTFkMWNiMmFjZGQ1NWJiNzdhYjgwMzVj
YWE2YzAyYTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJ
bnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQo
bV9wYWdlKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKIAogI2lmZGVmIEhBVkVfRUNP
UkVfWAogICAgIGNvbnN0IGNoYXIqIGVuZ2luZSA9ICJvcGVuZ2xfeDExIjsKQEAgLTEwMyw3ICsx
MDMsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFdLQ29udGV4dFJlZiB3a0Nv
bnRleHQgPSB0b0FQSSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSk7Ci0gICAgV0tQYWdlR3JvdXBS
ZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSk7CisgICAgV0tQYWdl
R3JvdXBSZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyKCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgbV9pbnNwZWN0
b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3VwLCBlY29yZV9ldmFz
X2dldChtX2luc3BlY3RvcldpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogICAgIFdLVmlld1JlZiB3
a1ZpZXcgPSBFV0tWaWV3R2V0V0tWaWV3KG1faW5zcGVjdG9yVmlldyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4
IGVlNjcyNzEyZDhiNTZiYWE5YzU3MDQ0M2EzMDY0MmUxZmI4NzMyMDkuLjcwYjFjYTE2ZGQ3ZTc3
M2RlMTZmMGFjYWM3MDY0NmJmMzRkYjEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC01OCw5ICs1OCwxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsaXplSW5zcGVjdG9yQ2xpZW50R3RrKGNv
bnN0IFdLSW5zcGVjdG9yQ2xpZW50R3RrQgogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2Up
OworICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JW
aWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCZpbnNwZWN0b3JQcm9jZXNzUG9vbCgpLCBudWxscHRyLCBpbnNwZWN0b3JQYWdlR3Jv
dXAoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdy
b3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpLCBmYWxzZSwgZmFsc2Up
OworICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVh
dGUoJmluc3BlY3RvclByb2Nlc3NQb29sKCksIG51bGxwdHIsIHBhZ2VHcm91cCwgbnVsbHB0ciwg
bnVsbHB0cikpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNw
ZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsK
ICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNF
KG1faW5zcGVjdG9yVmlldykpOwogfQpAQCAtNjgsOSArNjksOSBAQCBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQoR3RrV2lkZ2V0KiBidXR0b24sIFdlYklu
c3BlY3RvclByb3h5KiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKGJ1dHRvbiA9PSBpbnNwZWN0b3It
Pm1fZG9ja0JvdHRvbUJ1dHRvbikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVu
dFNpZGVCb3R0b20pOworICAgICAgICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50U2lkZTo6
Qm90dG9tKTsKICAgICBlbHNlIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tSaWdodEJ1
dHRvbikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGVSaWdodCk7Cisg
ICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTgzLDcgKzg0LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBBU1NFUlQo
IW1faW5zcGVjdG9yV2luZG93KTsKICAgICBtX2luc3BlY3RvcldpbmRvdyA9IGd0a193aW5kb3df
bmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogCi0gICAgR3RrV2lkZ2V0KiBpbnNwZWN0ZWRWaWV3
UGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwobV9wYWdlLT52aWV3V2lkZ2V0KCkpOwor
ICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKTsKICAgICBpZiAoV2ViQ29yZTo6d2lk
Z2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KGluc3BlY3RlZFZpZXdQYXJlbnQpKQogICAgICAg
ICBndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1cobV9pbnNwZWN0b3JXaW5k
b3cpLCBHVEtfV0lORE9XKGluc3BlY3RlZFZpZXdQYXJlbnQpKTsKIApAQCAtMjE5LDEyICsyMjAs
MTIgQEAgU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkgY29uc3QK
IAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkKIHsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodChtX3Bh
Z2UtPnZpZXdXaWRnZXQoKSk7CisgICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9o
ZWlnaHQoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwogfQogCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Ci0gICAgcmV0
dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChtX3BhZ2UtPnZpZXdXaWRnZXQoKSk7
CisgICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChpbnNwZWN0ZWRQYWdl
KCktPnZpZXdXaWRnZXQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXR0YWNoKCkKQEAgLTI0MSw3ICsyNDIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUF0dGFjaCgpCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZFdp
ZHRoID0gNzUwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWln
aHQgPSAyNTA7CiAKLSAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZUJv
dHRvbSkgeworICAgIGlmIChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlOjpCb3R0
b20pIHsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gcGxhdGZvcm1J
bnNwZWN0ZWRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0OwogICAgICAgICBwbGF0Zm9ybVNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRhY2hlZEhlaWdodCwgc3RkOjptaW4o
ZGVmYXVsdEF0dGFjaGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVkSGVpZ2h0KSkpOwogICAgIH0gZWxz
ZSB7CkBAIC0yNTIsMTMgKzI1MywxMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUF0dGFjaCgpCiAgICAgaWYgKG1fY2xpZW50LmF0dGFjaCh0aGlzKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBtX2luc3BlY3RvclZpZXcsIG1fYXR0YWNobWVu
dFNpZGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJf
VklFV19CQVNFKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3
LCBtX2F0dGFjaG1lbnRTaWRlKTsKICAgICBndGtfd2lkZ2V0X3Nob3cobV9pbnNwZWN0b3JWaWV3
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAg
IGlmICghbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgaWYgKCFpbnNwZWN0ZWRQYWdlKCktPmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IGluc3BlY3Rv
clZpZXcgPSBtX2luc3BlY3RvclZpZXc7CkBAIC0yODAsNyArMjgxLDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkSGVp
Z2h0KHRoaXMsIGhlaWdodCk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3
U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7
CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCB3aWR0aCkKQEAgLTI4OSw3ICsyOTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkV2lkdGgodGhpcywgd2lkdGgp
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9W
SUVXX0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCB3aWR0aCk7CisgICAgd2Via2l0V2ViVmll
d0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQ
YWdlKCktPnZpZXdXaWRnZXQoKSksIHdpZHRoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggNzcxNDhh
OWM0NWE2N2FiZTlkMWY2ZjY4MGRiNTg3MjBmYjA2MjY0ZC4uNDgxNjdiZTIxYTZlMDE3NzU5NjRi
MmU2Mzc2ZTAyNGUzMzlkODBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xMTQsMTIgKzExNCwxMiBAQCBzdGF0
aWMgY29uc3QgdW5zaWduZWQgd2ViVmlld0Nsb3NlVGltZW91dCA9IDYwOwogCiAtIChJQkFjdGlv
bilhdHRhY2hSaWdodDooaWQpc2VuZGVyCiB7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9y
UHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGVSaWdodCk7Cisg
ICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRh
Y2goQXR0YWNobWVudFNpZGU6OlJpZ2h0KTsKIH0KIAogLSAoSUJBY3Rpb24pYXR0YWNoQm90dG9t
OihpZClzZW5kZXIKIHsKLSAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNw
ZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgc3RhdGljX2Nh
c3Q8V2ViSW5zcGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVu
dFNpZGU6OkJvdHRvbSk7CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTI4NSw3ICsyODUsNyBAQCBz
dGF0aWMgdm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLT3BlblBhbmVsUGFyYW1ldGVycwogICAgICAgICAgICAgV0tSZWxlYXNlKGZpbGVVUkxzKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2Fu
Y2VsKGxpc3RlbmVyKTsKLSAgICAgICAgCisKICAgICAgICAgV0tSZWxlYXNlKGxpc3RlbmVyKTsK
ICAgICB9XTsKIH0KQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
cmVhdGVJbnNwZWN0b3JXaW5kb3coKQogICAgIE5TUmVjdCB3aW5kb3dGcmFtZSA9IE5TTWFrZVJl
Y3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0KTsKIAogICAg
IC8vIFJlc3RvcmUgdGhlIHNhdmVkIHdpbmRvdyBmcmFtZSwgaWYgdGhlcmUgd2FzIG9uZS4KLSAg
ICBOU1N0cmluZyAqc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyA9IHBhZ2UoKS0+cGFnZUdyb3VwKCku
cHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOworICAgIE5TU3RyaW5nICpzYXZl
ZFdpbmRvd0ZyYW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJl
bmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAgTlNSZWN0IHNhdmVkV2luZG93RnJh
bWUgPSBOU1JlY3RGcm9tU3RyaW5nKHNhdmVkV2luZG93RnJhbWVTdHJpbmcpOwogICAgIGlmICgh
TlNJc0VtcHR5UmVjdChzYXZlZFdpbmRvd0ZyYW1lKSkKICAgICAgICAgd2luZG93RnJhbWUgPSBz
YXZlZFdpbmRvd0ZyYW1lOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnVwZGF0ZUluc3BlY3RvcldpbmRvd1RpdGxlKCkgY29uc3QKIAogV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBB
U1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAogICAgIG1fY2xv
c2VUaW1lci5zdG9wKCk7CiAKQEAgLTQ2MSwyMCArNDYxLDIwIEBAIFdlYlBhZ2VQcm94eSogV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICBOU1Jl
Y3QgaW5pdGlhbFJlY3Q7CiAgICAgaWYgKG1faXNBdHRhY2hlZCkgewotICAgICAgICBOU1JlY3Qg
aW5zcGVjdGVkVmlld0ZyYW1lID0gbV9wYWdlLT53a1ZpZXcoKS5mcmFtZTsKKyAgICAgICAgTlNS
ZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCkuZnJhbWU7
CiAKICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0
YWNobWVudFNpZGVCb3R0b206CisgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToK
ICAgICAgICAgICAgIGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3Bl
Y3RlZFZpZXdGcmFtZSksIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFj
aGVkSGVpZ2h0KCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVSaWdodDoKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6CiAgICAgICAg
ICAgICBpbml0aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgaW5zcGVjdG9yUGFnZVByZWZlcmVu
Y2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRXaWR0aCgpLCBOU0hlaWdodChpbnNwZWN0ZWRWaWV3RnJh
bWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5p
dGlhbFdpbmRvd0hlaWdodCk7CiAKLSAgICAgICAgTlNTdHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5n
ID0gcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1l
KCk7CisgICAgICAgIE5TU3RyaW5nICp3aW5kb3dGcmFtZVN0cmluZyA9IGluc3BlY3RlZFBhZ2Uo
KS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOwogICAg
ICAgICBOU1JlY3Qgd2luZG93RnJhbWUgPSBOU1JlY3RGcm9tU3RyaW5nKHdpbmRvd0ZyYW1lU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHdpbmRvd0ZyYW1lKSkKICAgICAgICAg
ICAgIGluaXRpYWxSZWN0ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9yRnJhbWVSZWN0OndpbmRv
d0ZyYW1lIHN0eWxlTWFzazp3aW5kb3dTdHlsZU1hc2tdOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdl
YlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFn
ZSgpCiAjZW5kaWYKICAgICBwcmVmZXJlbmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
ID0gWUVTOwogICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiA6OldlYktpdDo6d3Jh
cHBlcihpbnNwZWN0b3JQcm9jZXNzUG9vbCgpKV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldEdy
b3VwSWRlbnRpZmllcjppbnNwZWN0b3JQYWdlR3JvdXAoKS0+aWRlbnRpZmllcigpXTsKKyAgICBb
Y29uZmlndXJhdGlvbiBfc2V0R3JvdXBJZGVudGlmaWVyOmluc3BlY3RvclBhZ2VHcm91cElkZW50
aWZpZXIoKV07CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0
b3JXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CkBA
IC02MTIsNyArNjEyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1Rv
RnJvbnQoKQogICAgIC8vIElmIHRoZSBXZWIgSW5zcGVjdG9yIGlzIG5vIGxvbmdlciBpbiB0aGUg
c2FtZSB3aW5kb3cgYXMgdGhlIGluc3BlY3RlZCB2aWV3LAogICAgIC8vIHRoZW4gd2UgbmVlZCB0
byByZW9wZW4gdGhlIEluc3BlY3RvciB0byBnZXQgaXQgYXR0YWNoZWQgdG8gdGhlIHJpZ2h0IHdp
bmRvdy4KICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBkcmFnZ2luZyB0YWJzIHRvIGFub3Ro
ZXIgd2luZG93IGluIFNhZmFyaS4KLSAgICBpZiAobV9pc0F0dGFjaGVkICYmIG1faW5zcGVjdG9y
Vmlldy5nZXQoKS53aW5kb3cgIT0gbV9wYWdlLT53a1ZpZXcoKS53aW5kb3cpIHsKKyAgICBpZiAo
bV9pc0F0dGFjaGVkICYmIG1faW5zcGVjdG9yVmlldy5nZXQoKS53aW5kb3cgIT0gaW5zcGVjdGVk
UGFnZSgpLT53a1ZpZXcoKS53aW5kb3cpIHsKICAgICAgICAgcGxhdGZvcm1PcGVuKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0
cmluZyAqZnJhbWVTdHJpbmcgPSBOU1N0cmluZ0Zyb21SZWN0KFttX2luc3BlY3RvcldpbmRvdyBm
cmFtZV0pOwotICAgIHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0
b3JXaW5kb3dGcmFtZShmcmFtZVN0cmluZyk7CisgICAgaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3Jv
dXAoKS5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvcldpbmRvd0ZyYW1lKGZyYW1lU3RyaW5nKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdl
KENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKQEAgLTcyOSw0MCArNzI5LDQwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJl
bnREaW1lbnNpb24pCiAgICAgaWYgKCFtX2lzQXR0YWNoZWQgfHwgIW1faXNWaXNpYmxlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmll
dygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3
KCk7CiAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1l
XTsKICAgICBOU1JlY3QgaW5zcGVjdG9yRnJhbWUgPSBOU1plcm9SZWN0OwogICAgIE5TUmVjdCBw
YXJlbnRCb3VuZHMgPSBbW2luc3BlY3RlZFZpZXcgc3VwZXJ2aWV3XSBib3VuZHNdOwogICAgIENH
RmxvYXQgaW5zcGVjdGVkVmlld1RvcCA9IE5TTWF4WShpbnNwZWN0ZWRWaWV3RnJhbWUpOwogCiAg
ICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVCb3R0b206IHsKLSAgICAgICAgICAgIGlmICghY3VycmVudERpbWVuc2lvbikKLSAgICAgICAg
ICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNIZWlnaHQoW21faW5zcGVjdG9yVmlldyBmcmFt
ZV0pOworICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbTogeworICAgICAgICBpZiAoIWN1
cnJlbnREaW1lbnNpb24pCisgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNIZWlnaHQo
W21faW5zcGVjdG9yVmlldyBmcmFtZV0pOwogCi0gICAgICAgICAgICBDR0Zsb2F0IHBhcmVudEhl
aWdodCA9IE5TSGVpZ2h0KHBhcmVudEJvdW5kcyk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGluc3Bl
Y3RvckhlaWdodCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0
YWNoZWRXaW5kb3dIZWlnaHQoY3VycmVudERpbWVuc2lvbiwgcGFyZW50SGVpZ2h0KTsKKyAgICAg
ICAgQ0dGbG9hdCBwYXJlbnRIZWlnaHQgPSBOU0hlaWdodChwYXJlbnRCb3VuZHMpOworICAgICAg
ICBDR0Zsb2F0IGluc3BlY3RvckhlaWdodCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHQoY3VycmVudERpbWVuc2lvbiwgcGFyZW50
SGVpZ2h0KTsKIAotICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0
aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4KLSAgICAg
ICAgICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgaW5zcGVjdG9ySGVpZ2h0
LCBOU1dpZHRoKHBhcmVudEJvdW5kcyksIGluc3BlY3RlZFZpZXdUb3AgLSBpbnNwZWN0b3JIZWln
aHQpOwotICAgICAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lk
dGgoaW5zcGVjdGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CisgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2Yg
dGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuCisgICAg
ICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgaW5zcGVjdG9ySGVpZ2h0LCBO
U1dpZHRoKHBhcmVudEJvdW5kcyksIGluc3BlY3RlZFZpZXdUb3AgLSBpbnNwZWN0b3JIZWlnaHQp
OworICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChpbnNw
ZWN0ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JIZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICB9
CiAKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OiB7Ci0gICAgICAgICAgICBpZiAo
IWN1cnJlbnREaW1lbnNpb24pCi0gICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5T
V2lkdGgoW21faW5zcGVjdG9yVmlldyBmcmFtZV0pOworICAgIGNhc2UgQXR0YWNobWVudFNpZGU6
OlJpZ2h0OiB7CisgICAgICAgIGlmICghY3VycmVudERpbWVuc2lvbikKKyAgICAgICAgICAgIGN1
cnJlbnREaW1lbnNpb24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAotICAg
ICAgICAgICAgQ0dGbG9hdCBwYXJlbnRXaWR0aCA9IE5TV2lkdGgocGFyZW50Qm91bmRzKTsKLSAg
ICAgICAgICAgIENHRmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERpbWVuc2lvbiwg
cGFyZW50V2lkdGgpOworICAgICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJl
bnRCb3VuZHMpOworICAgICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoKGN1cnJlbnRE
aW1lbnNpb24sIHBhcmVudFdpZHRoKTsKIAotICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRv
cCBwb3NpdGlvbiBvZiB0aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3Rp
bGwgd29yay4gQnV0IGRvbid0IHVzZSB0aGF0Ci0gICAgICAgICAgICAvLyB0b3AgcG9zaXRpb24g
Zm9yIHRoZSBpbnNwZWN0b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMg
d2lkZSBhcyB0aGUgdGhlIGluc3BlY3RlZCB2aWV3LgotICAgICAgICAgICAgaW5zcGVjdGVkVmll
d0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBp
bnNwZWN0ZWRWaWV3VG9wKTsKLSAgICAgICAgICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5u
ZXJzID0gaW5zcGVjdGVkVmlldy5fdG9wQ29udGVudEluc2V0IC0gaW5zcGVjdGVkVmlldy5fdG90
YWxIZWlnaHRPZkJhbm5lcnM7Ci0gICAgICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJl
Y3QocGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVp
Z2h0KHBhcmVudEJvdW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBv
ZiB0aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4gQnV0
IGRvbid0IHVzZSB0aGF0CisgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3Rv
ciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3aWRlIGFzIHRoZSB0aGUg
aW5zcGVjdGVkIHZpZXcuCisgICAgICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3Qo
MCwgMCwgcGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7Cisg
ICAgICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gaW5zcGVjdGVkVmlldy5fdG9w
Q29udGVudEluc2V0IC0gaW5zcGVjdGVkVmlldy5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CisgICAg
ICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdChwYXJlbnRXaWR0aCAtIGluc3BlY3Rvcldp
ZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQocGFyZW50Qm91bmRzKSAtIGluc2V0RXhj
bHVkaW5nQmFubmVycyk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICBpZiAo
TlNFcXVhbFJlY3RzKFttX2luc3BlY3RvclZpZXcgZnJhbWVdLCBpbnNwZWN0b3JGcmFtZSkgJiYg
TlNFcXVhbFJlY3RzKFtpbnNwZWN0ZWRWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkK
QEAgLTc3OSwyMSArNzc5LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZp
ZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCiAKIHVuc2lnbmVkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAg
V0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmlu
c3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBpbnNw
ZWN0ZWRWaWV3UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUuaGVpZ2h0KTsKIH0KIAogdW5z
aWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKQog
ewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tW
aWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBOU1Jl
Y3QgaW5zcGVjdGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVjdC5zaXplLndpZHRoKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogewotICAgIFdLVmll
dyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0
ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRh
cHRlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdl
OikgbmFtZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6aW5zcGVjdGVk
Vmlld107CiAKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKQEAgLTgwNywxMSArODA3LDEx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBDR0Zsb2F0
IGN1cnJlbnREaW1lbnNpb247CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJv
dHRvbToKICAgICAgICAgW21faW5zcGVjdG9yVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmll
d1dpZHRoU2l6YWJsZSB8IE5TVmlld01heFlNYXJnaW5dOwogICAgICAgICBjdXJyZW50RGltZW5z
aW9uID0gaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQo
KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEF1
dG9yZXNpemluZ01hc2s6TlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01pblhNYXJnaW5dOwog
ICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5z
cGVjdG9yQXR0YWNoZWRXaWR0aCgpOwogICAgICAgICBicmVhazsKQEAgLTgyNiw3ICs4MjYsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZp
ZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3Bl
Y3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIuZ2V0KCkg
bmFtZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6aW5zcGVjdGVkVmll
d107CiAKICAgICBbbV9pbnNwZWN0b3JWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245925</attachid>
            <date>2015-02-02 22:06:45 -0800</date>
            <delta_ts>2015-02-03 15:44:42 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-141135-20150202220644.patch</filename>
            <type>text/plain</type>
            <size>42648</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjc3NTgwYWJiZTViZmEz
ZDlkYTE4N2E2ZjMzZmFiMGI5ODUzZjViOC4uMmM0ODMxZmQ4ZDBjZTcwYjdhZjFhMmM1YzNiYjI5
Yjg3OThjYjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxNS0wMi0wMiAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgIG90aGVyIG1pc2NlbGxhbmVvdXMgY2xlYW51cHMsIHN1Y2ggYXMgbmFtaW5nIG1f
cGFnZQorICAgICAgICB0byBtX2luc3BlY3RlZFBhZ2UsIHVzaW5nIFJlZiBhbmQgdXNpbmcgYW4g
ZW51bSBjbGFzcyBmb3IgdGhlIGF0dGFjaG1lbnQgc2lkZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHA6CisgICAgICAgIChXS0luc3BlY3RvckdldFBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VMZXZl
bE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JMZXZl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzRnJv
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVs
YXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
YWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6aW5zcGVjdG9yUGFnZUdyb3Vw
TGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBz
OjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJv
eHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Blbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhdHRhY2hS
aWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGF0dGFj
aEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUlu
c3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93
V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gp
OgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdKTogRGVs
ZXRlZC4KKworMjAxNS0wMi0wMiAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5l
ZHU+CisKICAgICAgICAgQ29udmVydCBXZWJJbnNwZWN0b3JQcm94eSB0byB1c2UgV0tXZWJWaWV3
IEFQSSBmb3IgdGhlIGluc3BlY3RvciB2aWV3CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwMzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggNzVhMWNkNDgwN2U2MzU5YmI2YWIyOTljOTlm
ZTkwMjEzZDMxZjdjZS4uNmIwMjJlMjk0OTVmMjBkMDBlMDBjZTY2ZjFkNjRhZTA1N2QzMDRmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLSW5zcGVjdG9yR2V0VHlwZUlEKCkKIAogV0tQYWdl
UmVmIFdLSW5zcGVjdG9yR2V0UGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5wYWdlKCkpOworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aW5zcGVjdGVkUGFnZSgpKTsKIH0KIAogYm9v
bCBXS0luc3BlY3RvcklzQ29ubmVjdGVkKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCBhNzkzM2U3MWViOGI0OTJlOWUyMDIxNjMzYmYyMmEzMjg2NjAwMDNkLi5l
MDFiNzM2MGYxNDk4NWE5ZGU3ZTdjNGIzNDUyOTgxMjU4MmY4OGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9t
QWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+
aW5zcGVjdG9yVmlldykgewogICAgICAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbiA9
IHZpZXdSZWN0OwogCi0gICAgICAgIGlmIChwcml2LT5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSA9
PSBBdHRhY2htZW50U2lkZUJvdHRvbSkgeworICAgICAgICBpZiAocHJpdi0+aW5zcGVjdG9yQXR0
YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGU6OkJvdHRvbSkgewogICAgICAgICAgICAgaW50
IGluc3BlY3RvclZpZXdIZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHByaXYtPmlu
c3BlY3RvclZpZXdTaXplKSwgYWxsb2NhdGlvbi0+aGVpZ2h0KTsKICAgICAgICAgICAgIGNoaWxk
QWxsb2NhdGlvbi54ID0gMDsKICAgICAgICAgICAgIGNoaWxkQWxsb2NhdGlvbi55ID0gYWxsb2Nh
dGlvbi0+aGVpZ2h0IC0gaW5zcGVjdG9yVmlld0hlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDljMDJhNWFjODY2YjA2OTBkNTc1
ZTY1Yjc4OTZhZjZiYjBlNWQzZTYuLmEzMDFhMGZmNGFiMjk5NmMyYTE0ZmZhY2M1NzBmNDc5MWNh
YjA2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNTcsOTAgKzU3LDQ2IEBAIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5
OjptaW5pbXVtV2luZG93SGVpZ2h0ID0gNDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9y
UHJveHk6OmluaXRpYWxXaW5kb3dXaWR0aCA9IDEwMDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hlaWdodCA9IDY1MDsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yUGFnZUdyb3VwcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91
cHMmIHNpbmdsZXRvbigpCi0gICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vi
SW5zcGVjdG9yUGFnZUdyb3Vwcz4gaW5zdGFuY2U7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsK
LSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnNwZWN0b3JMZXZlbChXZWJQYWdlR3JvdXAmIGluc3Bl
Y3RlZFBhZ2VHcm91cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0luc3BlY3RvclBhZ2VHcm91
cChpbnNwZWN0ZWRQYWdlR3JvdXApID8gaW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwoaW5zcGVjdGVk
UGFnZUdyb3VwKSArIDEgOiAxOwotICAgIH0KLQotICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlR3Jv
dXAoV2ViUGFnZUdyb3VwJiBncm91cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3BhZ2VHcm91
cExldmVsLmNvbnRhaW5zKCZncm91cCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9y
UGFnZUdyb3VwTGV2ZWwoV2ViUGFnZUdyb3VwJiBncm91cCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0luc3BlY3RvclBhZ2VHcm91cChncm91cCkpOwotICAgICAgICByZXR1cm4gbV9wYWdlR3Jv
dXBMZXZlbC5nZXQoJmdyb3VwKTsKLSAgICB9Ci0KLSAgICBXZWJQYWdlR3JvdXAqIGluc3BlY3Rv
clBhZ2VHcm91cEZvckxldmVsKHVuc2lnbmVkIGxldmVsKQotICAgIHsKLSAgICAgICAgLy8gVGhl
IGxldmVsIGlzIHRoZSBrZXkgb2YgdGhlIEhhc2hNYXAsIHNvIGl0IGNhbm5vdCBiZSAwLgotICAg
ICAgICBBU1NFUlQobGV2ZWwpOwotCi0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3BhZ2VHcm91
cEJ5TGV2ZWwuZmluZChsZXZlbCk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3BhZ2VHcm91
cEJ5TGV2ZWwuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwotCi0gICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IGdyb3VwID0gY3JlYXRlSW5zcGVjdG9y
UGFnZUdyb3VwKGxldmVsKTsKLSAgICAgICAgbV9wYWdlR3JvdXBCeUxldmVsLnNldChsZXZlbCwg
Z3JvdXAuZ2V0KCkpOwotICAgICAgICBtX3BhZ2VHcm91cExldmVsLnNldChncm91cC5nZXQoKSwg
bGV2ZWwpOwotICAgICAgICByZXR1cm4gZ3JvdXAuZ2V0KCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gY3JlYXRlSW5zcGVjdG9yUGFnZUdy
b3VwKHVuc2lnbmVkIGxldmVsKQotICAgIHsKLSAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5z
cGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgbGV2ZWwpLCBmYWxzZSwgZmFsc2UpOwotCi0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdl
YiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCi0g
ICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KHRydWUpOwotICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VNZXNz
YWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7Ci0jZW5kaWYKK3R5cGVkZWYgSGFzaE1h
cDxXZWJQYWdlUHJveHkqLCB1bnNpZ25lZD4gUGFnZUxldmVsTWFwOwogCi0gICAgICAgIHBhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7
Ci0KLSAgICAgICAgcmV0dXJuIHBhZ2VHcm91cC5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8V2ViUGFnZUdyb3VwPiA+IFBhZ2VHcm91cEJ5
TGV2ZWxNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VHcm91cCosIHVuc2lnbmVkPiBQ
YWdlR3JvdXBMZXZlbE1hcDsKLQotICAgIFBhZ2VHcm91cEJ5TGV2ZWxNYXAgbV9wYWdlR3JvdXBC
eUxldmVsOwotICAgIFBhZ2VHcm91cExldmVsTWFwIG1fcGFnZUdyb3VwTGV2ZWw7Ci19Oworc3Rh
dGljIFBhZ2VMZXZlbE1hcCYgcGFnZUxldmVsTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UGFnZUxldmVsTWFwPiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KIAotV2ViSW5zcGVj
dG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKLSAgICA6IG1f
cGFnZShwYWdlKQorV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQ
cm94eSogaW5zcGVjdGVkUGFnZSkKKyAgICA6IG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdl
KQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fY2xvc2VUaW1lcihSdW5Mb29wOjptYWluKCks
IHRoaXMsICZXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VUaW1lckZpcmVkKQogI2VuZGlmCiB7Ci0g
ICAgbV9sZXZlbCA9IFdlYkluc3BlY3RvclBhZ2VHcm91cHM6OnNpbmdsZXRvbigpLmluc3BlY3Rv
ckxldmVsKG1fcGFnZS0+cGFnZUdyb3VwKCkpOwotICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworCisgICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhp
cyk7CiB9CiAKIFdlYkluc3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJveHkoKQogewogfQog
Ci1XZWJQYWdlR3JvdXAqIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3JvdXAoKSBj
b25zdAordW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckxldmVsKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6c2luZ2xldG9uKCkuaW5zcGVj
dG9yUGFnZUdyb3VwRm9yTGV2ZWwobV9sZXZlbCk7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gcGFn
ZUxldmVsTWFwKCkuZmluZChpbnNwZWN0ZWRQYWdlKCkpOworICAgIGlmIChmaW5kUmVzdWx0ICE9
IHBhZ2VMZXZlbE1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gZmluZFJlc3VsdC0+dmFsdWUg
KyAxOworCisgICAgcmV0dXJuIDE7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGluc3BlY3RvckxldmVs
KCkpOwogfQogCiBXZWJQcmVmZXJlbmNlcyYgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBh
Z2VQcmVmZXJlbmNlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluc3BlY3RvclBhZ2VHcm91cCgp
LT5wcmVmZXJlbmNlcygpOworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworICAgIHJldHVy
biBtX2luc3BlY3RvclBhZ2UtPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUoKQpAQCAtMTUwLDE4ICsxMDYsMTggQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIFdlYkluc3BlY3RvclNl
cnZlcjo6c2luZ2xldG9uKCkudW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlk
KTsKICNlbmRpZgogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgZGlkQ2xvc2UoKTsKICAg
ICBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAotICAgIG1fcGFnZSA9IG51bGxwdHI7CisgICAgbV9p
bnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsKIH0KIAogLy8gUHVibGljIEFQSXMKIGJvb2wgV2ViSW5z
cGVjdG9yUHJveHk6OmlzRnJvbnQoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9p
bnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcGxhdGZv
cm1Jc0Zyb250KCk7CkBAIC0xNjksNyArMTI1LDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6
aXNGcm9udCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogewotICAgIGlm
ICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9zaG93TWVzc2FnZVNlbnQpCkBAIC0xODAsMTIgKzEzNiwxMiBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQ
YWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3coKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93KCkKIHsKLSAg
ICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzQ29ubmVjdGVkKCkpIHsKQEAgLTIwMSw3ICsxNTcsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aGlkZSgp
CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faXNWaXNpYmxlID0gZmFsc2U7CkBAIC0yMTEsODYgKzE2Nyw4NiBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y2xvc2UoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OkNsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpkaWRSZWxhdW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzKCkKIHsK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwo
KSk7CiAKICAgICAvLyBXaGVuIGRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MgaXMgY2Fs
bGVkIHdlIGNhbiBhc3N1bWUgaXQgaXMgZHVyaW5nIGEgbG9hZCByZXF1ZXN0LgogICAgIC8vIEFu
eSBtZXNzYWdlcyB3ZSB3b3VsZCBoYXZlIHNlbnQgdG8gYSB0ZXJtaW5hdGVkIHByb2Nlc3MgbmVl
ZCB0byBiZSByZS1zZW50LgogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9u
SWRlbnRpZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29u
c29sZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25z
b2xlKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJj
ZXMoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3Vy
Y2VzKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5S
ZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQogewotICAgIGlmICghbV9wYWdl
KQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdl
cmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KGZyYW1lLT5mcmFtZUlEKCkpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQm90dG9tKCkKIHsKLSAgICBhdHRhY2goQXR0YWNo
bWVudFNpZGVCb3R0b20pOworICAgIGF0dGFjaChBdHRhY2htZW50U2lkZTo6Qm90dG9tKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoUmlnaHQoKQogewotICAgIGF0dGFjaChB
dHRhY2htZW50U2lkZVJpZ2h0KTsKKyAgICBhdHRhY2goQXR0YWNobWVudFNpZGU6OlJpZ2h0KTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUp
CiB7Ci0gICAgaWYgKCFtX3BhZ2UgfHwgIWNhbkF0dGFjaCgpKQorICAgIGlmICghbV9pbnNwZWN0
ZWRQYWdlIHx8ICFjYW5BdHRhY2goKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0F0dGFj
aGVkID0gdHJ1ZTsKICAgICBtX2F0dGFjaG1lbnRTaWRlID0gc2lkZTsKIAotICAgIGluc3BlY3Rv
clBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvckF0dGFjaG1lbnRTaWRlKHNpZGUpOworICAg
IGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvckF0dGFjaG1lbnRTaWRlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihzaWRlKSk7CiAKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAg
ICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
KHRydWUpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hl
ZCh0cnVlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0
YWNobWVudFNpZGUpIHsKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgIGNhc2Ug
QXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVSaWdodDoKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTMwMCw3ICsyNTYsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojph
dHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0
YWNoKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CkBAIC0zMDgsNyArMjY0
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2li
bGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRl
dGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgcGxhdGZvcm1EZXRh
Y2goKTsKQEAgLTMyOCwxMyArMjg0LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEF0
dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICgh
bV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc1Byb2ZpbGlu
Z1BhZ2UpCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3Rv
cFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0
YXJ0UGFnZVByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBhZ2VQ
cm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICAvLyBGSVhNRTog
aGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KICAgICBtX2lz
UHJvZmlsaW5nUGFnZSA9ICFtX2lzUHJvZmlsaW5nUGFnZTsKQEAgLTM0Miw3ICsyOTgsNyBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIAogYm9vbCBXZWJJ
bnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6c2luZ2xldG9uKCkuaXNJbnNwZWN0b3JQ
YWdlR3JvdXAocGFnZS5wYWdlR3JvdXAoKSk7CisgICAgcmV0dXJuIHBhZ2VMZXZlbE1hcCgpLmNv
bnRhaW5zKCZwYWdlKTsKIH0KIAogV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQcm9jZXNzUG9vbCgpCkBAIC00MDgsNyArMzY0LDcgQEAgc3RhdGljIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVS
ZWYsIFdLRnIKICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT5pZ25vcmUoKTsKIAogICAgIC8vIEFu
ZCBpbnN0ZWFkIGxvYWQgaXQgaW4gdGhlIGluc3BlY3RlZCBwYWdlLgotICAgIHdlYkluc3BlY3Rv
clByb3h5LT5wYWdlKCktPmxvYWRSZXF1ZXN0KHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VS
ZXF1ZXN0KCkpOworICAgIHdlYkluc3BlY3RvclByb3h5LT5pbnNwZWN0ZWRQYWdlKCktPmxvYWRS
ZXF1ZXN0KHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpOwogfQogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCkBAIC00MjAsMTcgKzM3NiwxNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjplbmFibGVSZW1vdGVJbnNwZWN0aW9uKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKQogewotICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVt
b3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0
Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNz
YWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNlbmRNZXNzYWdl
VG9CYWNrZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KICNlbmRp
ZgogCkBAIC00NDQsNiArNDAwLDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBwYWdlTGV2ZWxNYXAoKS5zZXQobV9pbnNwZWN0b3JQYWdlLCBpbnNwZWN0
b3JMZXZlbCgpKTsKKwogICAgIFdLUGFnZVBvbGljeUNsaWVudFYxIHBvbGljeUNsaWVudCA9IHsK
ICAgICAgICAgeyAxLCB0aGlzIH0sCiAgICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMApAQCAtNTAwLDE0ICs0NTgs
MTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2Uo
KQogICAgIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwg
JnBvbGljeUNsaWVudC5iYXNlKTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHRvQVBJ
KG1faW5zcGVjdG9yUGFnZSksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKLSAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsK
KyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5h
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKIC8vIENh
bGxlZCBieSBXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcwogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzdCkKIHsKLSAgICBpZiAoIW1fcGFnZSkK
KyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZWFnZXJs
eUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKQEAgLTUxOSwyMiArNDc3LDIyIEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25JZGVudGlmaWVyCiAgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CiAgICAgbV9jb25uZWN0
aW9uSWRlbnRpZmllciA9IGNvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENv
bm5lY3Rpb24obV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9wYWdlLT5wYWdlSUQoKSwgbV91bmRl
clRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVj
dGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgaWYgKCFtX3Vu
ZGVyVGVzdCkgewogICAgICAgICBtX2NhbkF0dGFjaCA9IGNhbkF0dGFjaDsKICAgICAgICAgbV9p
c0F0dGFjaGVkID0gc2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNp
ZGUgPSBzdGF0aWNfY2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2Vz
KCkuaW5zcGVjdG9yQXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7
CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
OjpCb3R0b206CiAgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
OjpSaWdodDoKICAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTU2MCw3ICs1MTgsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaWRDbG9zZSgpCiAgICAg
aWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlTGV2ZWxNYXAoKS5yZW1vdmUobV9pbnNwZWN0b3JQYWdl
KTsKICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwogCiAgICAgbV9pc1Zpc2libGUgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKaW5k
ZXggYzY3MmFjZDczNWU3YmNiNDk4MTNkOTI1OTYxMzhmMWU5ZDM2MTE5Yy4uYzI3NjlmODk2OTBi
Yzk4ODFiYjkwMjEwYzRhMzcxMjdjN2M3Yzk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTY0LDE2ICs2NCwxNiBAQCBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogCi1l
bnVtIEF0dGFjaG1lbnRTaWRlIHsKLSAgICBBdHRhY2htZW50U2lkZUJvdHRvbSwKLSAgICBBdHRh
Y2htZW50U2lkZVJpZ2h0CitlbnVtIGNsYXNzIEF0dGFjaG1lbnRTaWRlIHsKKyAgICBCb3R0b20s
CisgICAgUmlnaHQKIH07CiAKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnNwZWN0
b3JQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKKyAgICBzdGF0aWMgUmVmPFdlYklu
c3BlY3RvclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnNwZWN0b3JQcm94eShwYWdlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkluc3BlY3RvclByb3h5KGluc3BlY3RlZFBh
Z2UpKTsKICAgICB9CiAKICAgICB+V2ViSW5zcGVjdG9yUHJveHkoKTsKQEAgLTgxLDcgKzgxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCiAgICAgLy8gUHVibGljIEFQSXMK
LSAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0KKyAgICBX
ZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RlZFBh
Z2U7IH0KIAogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVj
dG9yUGFnZTsgfQogICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc2li
bGU7IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0F0dGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CiAgICAgdm9pZCBhdHRhY2hSaWdodCgpOwog
ICAgIHZvaWQgYXR0YWNoQm90dG9tKCk7Ci0gICAgdm9pZCBhdHRhY2goQXR0YWNobWVudFNpZGUg
PSBBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgdm9pZCBhdHRhY2goQXR0YWNobWVudFNpZGUg
PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKTsKICAgICB2b2lkIGRldGFjaCgpOwogCiAgICAgdm9p
ZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCk7CkBAIC0xOTIsOSArMTkyLDEwIEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIG9wZW4oKTsKIAotICAgIC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCByZXR1cm4gdGhlIHBhZ2UgZ3JvdXAgaWRlbnRpZmllciwgbm90IGFuIGluc3RhbmNlLiBUaGUg
TWFjIHBvcnQgY2Fubm90Ci0gICAgLy8gZGlyZWN0bHkgcHJvdmlkZSBhIHBhZ2UgZ3JvdXAgaW5z
dGFuY2UsIGFuZCBpbnN0YW5jZXMgYXJlIG5vdCBuZWNlc3NhcnkgdG8gY29tcHV0ZSBsZXZlbHMu
Ci0gICAgV2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3JvdXAoKSBjb25zdDsKKyAgICAvLyBU
aGUgaW5zcGVjdG9yIGxldmVsIGlzIHVzZWQgdG8gZ2l2ZSBkaWZmZXJlbnQgcHJlZmVyZW5jZXMg
dG8gZWFjaCBpbnNwZWN0b3IKKyAgICAvLyBsZXZlbCBieSBzZXR0aW5nIGEgcGVyLWxldmVsIHBh
Z2UgZ3JvdXAgaWRlbnRpZmllci4KKyAgICB1bnNpZ25lZCBpbnNwZWN0b3JMZXZlbCgpIGNvbnN0
OworICAgIFN0cmluZyBpbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKCkgY29uc3Q7CiAgICAg
V2ViUHJlZmVyZW5jZXMmIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpIGNvbnN0OwogCiAjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCkBAIC0yMTIsNyArMjEzLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5pdGlhbFdpbmRvd1dpZHRoOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93SGVpZ2h0OwogCi0gICAgV2ViUGFnZVBy
b3h5KiBtX3BhZ2Uge251bGxwdHJ9OworICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0ZWRQYWdl
IHtudWxscHRyfTsKICAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdG9yUGFnZSB7bnVsbHB0cn07
CiAKICAgICBib29sIG1fdW5kZXJUZXN0IHtmYWxzZX07CkBAIC0yMjMsMTQgKzIyNCw5IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Nob3dNZXNzYWdlU2VudCB7ZmFsc2V9OwogICAgIGJvb2wgbV9p
Z25vcmVGaXJzdEJyaW5nVG9Gcm9udCB7ZmFsc2V9OwogCi0gICAgLy8gVGhlIGRlYnVnZ2VyIHN0
b3BzIGFsbCB0aGUgcGFnZXMgaW4gdGhlIHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKLSAgICAvLyBh
bGwgdGhlIGluc3BlY3RvcnMgaW4gdGhlIHNhbWUgZ3JvdXAgd2lsbCBtYWtlIGl0IGltcG9zc2li
bGUgdG8gZGVidWcKLSAgICAvLyB0aGUgaW5zcGVjdG9yIGNvZGUsIHNvIHdlIHVzZSB0aGUgbGV2
ZWwgdG8gbWFrZSBkaWZmZXJlbnQgcGFnZSBncm91cHMuCi0gICAgdW5zaWduZWQgbV9sZXZlbDsK
LSAgICAKICAgICBJUEM6OkF0dGFjaG1lbnQgbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKIAotICAg
IEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1lbnRTaWRlQm90dG9tfTsK
KyAgICBBdHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRTaWRlIHtBdHRhY2htZW50U2lkZTo6Qm90
dG9tfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JX
S1dlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKaW5kZXggYmRkMTBhMzkzODkzNzU4
MTRhY2FiYTUzMDljOGI2MzJhOTNlYzhlYy4uZjVjNGY2ZTFkMWNiMmFjZGQ1NWJiNzdhYjgwMzVj
YWE2YzAyYTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJ
bnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQo
bV9wYWdlKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0ZWRQYWdlKTsKIAogI2lmZGVmIEhBVkVfRUNP
UkVfWAogICAgIGNvbnN0IGNoYXIqIGVuZ2luZSA9ICJvcGVuZ2xfeDExIjsKQEAgLTEwMyw3ICsx
MDMsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFdLQ29udGV4dFJlZiB3a0Nv
bnRleHQgPSB0b0FQSSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSk7Ci0gICAgV0tQYWdlR3JvdXBS
ZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSk7CisgICAgV0tQYWdl
R3JvdXBSZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyKCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgbV9pbnNwZWN0
b3JWaWV3ID0gRVdLVmlld0NyZWF0ZSh3a0NvbnRleHQsIHdrUGFnZUdyb3VwLCBlY29yZV9ldmFz
X2dldChtX2luc3BlY3RvcldpbmRvdyksIC8qIHNtYXJ0ICovIDApOwogICAgIFdLVmlld1JlZiB3
a1ZpZXcgPSBFV0tWaWV3R2V0V0tWaWV3KG1faW5zcGVjdG9yVmlldyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCmluZGV4
IGVlNjcyNzEyZDhiNTZiYWE5YzU3MDQ0M2EzMDY0MmUxZmI4NzMyMDkuLjcwYjFjYTE2ZGQ3ZTc3
M2RlMTZmMGFjYWM3MDY0NmJmMzRkYjEyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwCkBAIC01OCw5ICs1OCwxMCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsaXplSW5zcGVjdG9yQ2xpZW50R3RrKGNv
bnN0IFdLSW5zcGVjdG9yQ2xpZW50R3RrQgogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2Up
OworICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JW
aWV3KTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNl
Q3JlYXRlKCZpbnNwZWN0b3JQcm9jZXNzUG9vbCgpLCBudWxscHRyLCBpbnNwZWN0b3JQYWdlR3Jv
dXAoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGF1dG8gcGFnZUdyb3VwID0gV2ViUGFnZUdy
b3VwOjpjcmVhdGUoaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpLCBmYWxzZSwgZmFsc2Up
OworICAgIG1faW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVh
dGUoJmluc3BlY3RvclByb2Nlc3NQb29sKCksIG51bGxwdHIsIHBhZ2VHcm91cCwgbnVsbHB0ciwg
bnVsbHB0cikpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNw
ZWN0b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsK
ICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNF
KG1faW5zcGVjdG9yVmlldykpOwogfQpAQCAtNjgsOSArNjksOSBAQCBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQoR3RrV2lkZ2V0KiBidXR0b24sIFdlYklu
c3BlY3RvclByb3h5KiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKGJ1dHRvbiA9PSBpbnNwZWN0b3It
Pm1fZG9ja0JvdHRvbUJ1dHRvbikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVu
dFNpZGVCb3R0b20pOworICAgICAgICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50U2lkZTo6
Qm90dG9tKTsKICAgICBlbHNlIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tSaWdodEJ1
dHRvbikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGVSaWdodCk7Cisg
ICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTgzLDcgKzg0LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBBU1NFUlQo
IW1faW5zcGVjdG9yV2luZG93KTsKICAgICBtX2luc3BlY3RvcldpbmRvdyA9IGd0a193aW5kb3df
bmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogCi0gICAgR3RrV2lkZ2V0KiBpbnNwZWN0ZWRWaWV3
UGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwobV9wYWdlLT52aWV3V2lkZ2V0KCkpOwor
ICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKTsKICAgICBpZiAoV2ViQ29yZTo6d2lk
Z2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KGluc3BlY3RlZFZpZXdQYXJlbnQpKQogICAgICAg
ICBndGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1cobV9pbnNwZWN0b3JXaW5k
b3cpLCBHVEtfV0lORE9XKGluc3BlY3RlZFZpZXdQYXJlbnQpKTsKIApAQCAtMjE5LDEyICsyMjAs
MTIgQEAgU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkgY29uc3QK
IAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVp
Z2h0KCkKIHsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodChtX3Bh
Z2UtPnZpZXdXaWRnZXQoKSk7CisgICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9o
ZWlnaHQoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwogfQogCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Ci0gICAgcmV0
dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChtX3BhZ2UtPnZpZXdXaWRnZXQoKSk7
CisgICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChpbnNwZWN0ZWRQYWdl
KCktPnZpZXdXaWRnZXQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXR0YWNoKCkKQEAgLTI0MSw3ICsyNDIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUF0dGFjaCgpCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZFdp
ZHRoID0gNzUwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWln
aHQgPSAyNTA7CiAKLSAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZUJv
dHRvbSkgeworICAgIGlmIChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlOjpCb3R0
b20pIHsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gcGxhdGZvcm1J
bnNwZWN0ZWRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0OwogICAgICAgICBwbGF0Zm9ybVNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRhY2hlZEhlaWdodCwgc3RkOjptaW4o
ZGVmYXVsdEF0dGFjaGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVkSGVpZ2h0KSkpOwogICAgIH0gZWxz
ZSB7CkBAIC0yNTIsMTMgKzI1MywxMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUF0dGFjaCgpCiAgICAgaWYgKG1fY2xpZW50LmF0dGFjaCh0aGlzKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2Via2l0V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBtX2luc3BlY3RvclZpZXcsIG1fYXR0YWNobWVu
dFNpZGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJf
VklFV19CQVNFKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3
LCBtX2F0dGFjaG1lbnRTaWRlKTsKICAgICBndGtfd2lkZ2V0X3Nob3cobV9pbnNwZWN0b3JWaWV3
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAg
IGlmICghbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgaWYgKCFpbnNwZWN0ZWRQYWdlKCktPmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IGluc3BlY3Rv
clZpZXcgPSBtX2luc3BlY3RvclZpZXc7CkBAIC0yODAsNyArMjgxLDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkSGVp
Z2h0KHRoaXMsIGhlaWdodCk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3
U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7
CisgICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNp
Z25lZCB3aWR0aCkKQEAgLTI4OSw3ICsyOTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkV2lkdGgodGhpcywgd2lkdGgp
OwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9W
SUVXX0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCB3aWR0aCk7CisgICAgd2Via2l0V2ViVmll
d0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQ
YWdlKCktPnZpZXdXaWRnZXQoKSksIHdpZHRoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggODc5ZGEz
NzcyYjExYjgwNTRhYzQxYmRmNDA0NGQ4ZjRhNmRiZGM2My4uY2ViYTc2M2NmNzA4MmM3ZGI0YmI3
NTI1ODBjMThlMmE3MzJjYTM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xMTQsMTIgKzExNCwxMiBAQCAtIChp
ZClpbml0V2l0aFdlYkluc3BlY3RvclByb3h5OihXZWJJbnNwZWN0b3JQcm94eSopaW5zcGVjdG9y
UHJveHkKIAogLSAoSUJBY3Rpb24pYXR0YWNoUmlnaHQ6KGlkKXNlbmRlcgogewotICAgIHN0YXRp
Y19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFj
aG1lbnRTaWRlUmlnaHQpOworICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2lu
c3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiB9CiAKIC0gKElC
QWN0aW9uKWF0dGFjaEJvdHRvbTooaWQpc2VuZGVyCiB7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViSW5z
cGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGVCb3R0
b20pOworICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5
KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiAtICh2b2lkKWNsb3NlCkBA
IC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICAgICAgICAgIFdL
UmVsZWFzZShmaWxlVVJMcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0tPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lckNhbmNlbChsaXN0ZW5lcik7Ci0gICAgICAgIAorCiAgICAgICAgIFdL
UmVsZWFzZShsaXN0ZW5lcik7CiAgICAgfV07CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBOU1JlY3Qgd2lu
ZG93RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlhbFdp
bmRvd0hlaWdodCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBzYXZlZCB3aW5kb3cgZnJhbWUsIGlm
IHRoZXJlIHdhcyBvbmUuCi0gICAgTlNTdHJpbmcgKnNhdmVkV2luZG93RnJhbWVTdHJpbmcgPSBw
YWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsK
KyAgICBOU1N0cmluZyAqc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyA9IGluc3BlY3RlZFBhZ2UoKS0+
cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOwogICAgIE5T
UmVjdCBzYXZlZFdpbmRvd0ZyYW1lID0gTlNSZWN0RnJvbVN0cmluZyhzYXZlZFdpbmRvd0ZyYW1l
U3RyaW5nKTsKICAgICBpZiAoIU5TSXNFbXB0eVJlY3Qoc2F2ZWRXaW5kb3dGcmFtZSkpCiAgICAg
ICAgIHdpbmRvd0ZyYW1lID0gc2F2ZWRXaW5kb3dGcmFtZTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1cGRhdGVJbnNwZWN0b3JXaW5kb3dUaXRsZSgpIGNvbnN0
CiAKIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVj
dG9yUGFnZSgpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZSk7CisgICAgQVNTRVJUKGluc3BlY3RlZFBh
Z2UoKSk7CiAKICAgICBtX2Nsb3NlVGltZXIuc3RvcCgpOwogCkBAIC00NjEsMjAgKzQ2MSwyMCBA
QCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3Rv
clBhZ2UoKQogCiAgICAgTlNSZWN0IGluaXRpYWxSZWN0OwogICAgIGlmIChtX2lzQXR0YWNoZWQp
IHsKLSAgICAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IG1fcGFnZS0+d2tWaWV3KCku
ZnJhbWU7CisgICAgICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBpbnNwZWN0ZWRQYWdl
KCktPndrVmlldygpLmZyYW1lOwogCiAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlOjpCb3R0b206CiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IE5TTWFrZVJlY3Qo
MCwgMCwgTlNXaWR0aChpbnNwZWN0ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5j
ZXMoKS5pbnNwZWN0b3JBdHRhY2hlZEhlaWdodCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGU6OlJpZ2h0OgogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIGlu
c3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkV2lkdGgoKSwgTlNIZWln
aHQoaW5zcGVjdGVkVmlld0ZyYW1lKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBpbml0
aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCi0gICAgICAgIE5TU3RyaW5n
ICp3aW5kb3dGcmFtZVN0cmluZyA9IHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5p
bnNwZWN0b3JXaW5kb3dGcmFtZSgpOworICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJp
bmcgPSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9y
V2luZG93RnJhbWUoKTsKICAgICAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNSZWN0RnJvbVN0
cmluZyh3aW5kb3dGcmFtZVN0cmluZyk7CiAgICAgICAgIGlmICghTlNJc0VtcHR5UmVjdCh3aW5k
b3dGcmFtZSkpCiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVj
dEZvckZyYW1lUmVjdDp3aW5kb3dGcmFtZSBzdHlsZU1hc2s6d2luZG93U3R5bGVNYXNrXTsKQEAg
LTQ4OSw3ICs0ODksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMuX2FsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsKICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNz
UG9vbDogOjpXZWJLaXQ6OndyYXBwZXIoaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSldOwotICAgIFtj
b25maWd1cmF0aW9uIF9zZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwKCktPmlk
ZW50aWZpZXIoKV07CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEdyb3VwSWRlbnRpZmllcjppbnNw
ZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKCldOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRv
cHROUyhbW1dLV2ViSW5zcGVjdG9yV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRp
YWxSZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEFTU0VSVCht
X2luc3BlY3RvclZpZXcpOwpAQCAtNjExLDcgKzYxMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQnJpbmdUb0Zyb250KCkKICAgICAvLyBJZiB0aGUgV2ViIEluc3BlY3RvciBp
cyBubyBsb25nZXIgaW4gdGhlIHNhbWUgd2luZG93IGFzIHRoZSBpbnNwZWN0ZWQgdmlldywKICAg
ICAvLyB0aGVuIHdlIG5lZWQgdG8gcmVvcGVuIHRoZSBJbnNwZWN0b3IgdG8gZ2V0IGl0IGF0dGFj
aGVkIHRvIHRoZSByaWdodCB3aW5kb3cuCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZHJh
Z2dpbmcgdGFicyB0byBhbm90aGVyIHdpbmRvdyBpbiBTYWZhcmkuCi0gICAgaWYgKG1faXNBdHRh
Y2hlZCAmJiBtX2luc3BlY3RvclZpZXcuZ2V0KCkud2luZG93ICE9IG1fcGFnZS0+d2tWaWV3KCku
d2luZG93KSB7CisgICAgaWYgKG1faXNBdHRhY2hlZCAmJiBtX2luc3BlY3RvclZpZXcuZ2V0KCku
d2luZG93ICE9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCkud2luZG93KSB7CiAgICAgICAgIHBs
YXRmb3JtT3BlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzIwLDcgKzcyMCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTlNTdHJpbmcgKmZyYW1lU3RyaW5nID0gTlNTdHJpbmdGcm9tUmVjdChb
bV9pbnNwZWN0b3JXaW5kb3cgZnJhbWVdKTsKLSAgICBwYWdlKCktPnBhZ2VHcm91cCgpLnByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOworICAgIGluc3Bl
Y3RlZFBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JXaW5kb3dG
cmFtZShmcmFtZVN0cmluZyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rl
ZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCkBAIC03MjgsNDAg
KzcyOCw0MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRD
aGFuZ2UoQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9uKQogICAgIGlmICghbV9pc0F0dGFjaGVkIHx8
ICFtX2lzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tWaWV3ICppbnNwZWN0ZWRW
aWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNw
ZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBb
aW5zcGVjdGVkVmlldyBmcmFtZV07CiAgICAgTlNSZWN0IGluc3BlY3RvckZyYW1lID0gTlNaZXJv
UmVjdDsKICAgICBOU1JlY3QgcGFyZW50Qm91bmRzID0gW1tpbnNwZWN0ZWRWaWV3IHN1cGVydmll
d10gYm91bmRzXTsKICAgICBDR0Zsb2F0IGluc3BlY3RlZFZpZXdUb3AgPSBOU01heFkoaW5zcGVj
dGVkVmlld0ZyYW1lKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOiB7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRE
aW1lbnNpb24pCi0gICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFtt
X2luc3BlY3RvclZpZXcgZnJhbWVdKTsKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206
IHsKKyAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3VycmVudERp
bWVuc2lvbiA9IE5TSGVpZ2h0KFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAotICAgICAgICAg
ICAgQ0dGbG9hdCBwYXJlbnRIZWlnaHQgPSBOU0hlaWdodChwYXJlbnRCb3VuZHMpOwotICAgICAg
ICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJlbnREaW1lbnNpb24sIHBh
cmVudEhlaWdodCk7CisgICAgICAgIENHRmxvYXQgcGFyZW50SGVpZ2h0ID0gTlNIZWlnaHQocGFy
ZW50Qm91bmRzKTsKKyAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJl
bnREaW1lbnNpb24sIHBhcmVudEhlaWdodCk7CiAKLSAgICAgICAgICAgIC8vIFByZXNlcnZlIHRo
ZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJp
IHN0aWxsIHdvcmsuCi0gICAgICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0
KDAsIGluc3BlY3RvckhlaWdodCwgTlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3
VG9wIC0gaW5zcGVjdG9ySGVpZ2h0KTsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNN
YWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3BlY3RlZFZpZXdGcmFtZSksIGluc3BlY3RvckhlaWdo
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAvLyBQcmVzZXJ2ZSB0
aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFy
aSBzdGlsbCB3b3JrLgorICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAs
IGluc3BlY3RvckhlaWdodCwgTlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9w
IC0gaW5zcGVjdG9ySGVpZ2h0KTsKKyAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0
KDAsIDAsIE5TV2lkdGgoaW5zcGVjdGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDog
ewotICAgICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQotICAgICAgICAgICAgICAgIGN1
cnJlbnREaW1lbnNpb24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKKyAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDogeworICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNp
b24pCisgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNXaWR0aChbbV9pbnNwZWN0b3JW
aWV3IGZyYW1lXSk7CiAKLSAgICAgICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRo
KHBhcmVudEJvdW5kcyk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRo
KGN1cnJlbnREaW1lbnNpb24sIHBhcmVudFdpZHRoKTsKKyAgICAgICAgQ0dGbG9hdCBwYXJlbnRX
aWR0aCA9IE5TV2lkdGgocGFyZW50Qm91bmRzKTsKKyAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JX
aWR0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRX
aW5kb3dXaWR0aChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRXaWR0aCk7CiAKLSAgICAgICAgICAg
IC8vIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJh
bm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuIEJ1dCBkb24ndCB1c2UgdGhhdAotICAgICAgICAg
ICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhlIGJhbm5l
cnMgb25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIHRoZSBpbnNwZWN0ZWQgdmlldy4KLSAgICAg
ICAgICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgcGFyZW50V2lkdGgg
LSBpbnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7Ci0gICAgICAgICAgICBDR0Zsb2F0
IGluc2V0RXhjbHVkaW5nQmFubmVycyA9IGluc3BlY3RlZFZpZXcuX3RvcENvbnRlbnRJbnNldCAt
IGluc3BlY3RlZFZpZXcuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOwotICAgICAgICAgICAgaW5zcGVj
dG9yRnJhbWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIDAsIGlu
c3BlY3RvcldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5u
ZXJzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIC8vIFByZXNlcnZl
IHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2Fm
YXJpIHN0aWxsIHdvcmsuIEJ1dCBkb24ndCB1c2UgdGhhdAorICAgICAgICAvLyB0b3AgcG9zaXRp
b24gZm9yIHRoZSBpbnNwZWN0b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2gg
YXMgd2lkZSBhcyB0aGUgdGhlIGluc3BlY3RlZCB2aWV3LgorICAgICAgICBpbnNwZWN0ZWRWaWV3
RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGlu
c3BlY3RlZFZpZXdUb3ApOworICAgICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5nQmFubmVycyA9
IGluc3BlY3RlZFZpZXcuX3RvcENvbnRlbnRJbnNldCAtIGluc3BlY3RlZFZpZXcuX3RvdGFsSGVp
Z2h0T2ZCYW5uZXJzOworICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50
V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVu
dEJvdW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgfQogCiAgICAgaWYgKE5TRXF1YWxSZWN0cyhbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSwg
aW5zcGVjdG9yRnJhbWUpICYmIE5TRXF1YWxSZWN0cyhbaW5zcGVjdGVkVmlldyBmcmFtZV0sIGlu
c3BlY3RlZFZpZXdGcmFtZSkpCkBAIC03NzgsMjEgKzc3OCwyMSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50RGltZW5z
aW9uKQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5k
b3dIZWlnaHQoKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3
KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXco
KTsKICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVjdC5zaXpl
LmhlaWdodCk7CiB9CiAKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3Bl
Y3RlZFdpbmRvd1dpZHRoKCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2Ut
PndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+
d2tWaWV3KCk7CiAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcg
ZnJhbWVdOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5zcGVjdGVkVmlld1Jl
Y3Quc2l6ZS53aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoKCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOwor
ICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX2lu
c3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3Rl
ZFZpZXdGcmFtZURpZENoYW5nZTopIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRp
b24gb2JqZWN0Omluc3BlY3RlZFZpZXddOwogCiAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7
CkBAIC04MDYsMTEgKzgwNiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaCgpCiAgICAgQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9uOwogCiAgICAgc3dpdGNoIChtX2F0
dGFjaG1lbnRTaWRlKSB7Ci0gICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlOjpCb3R0b206CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0
b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luXTsKICAg
ICAgICAgY3VycmVudERpbWVuc2lvbiA9IGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3Bl
Y3RvckF0dGFjaGVkSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVSaWdodDoKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgW21f
aW5zcGVjdG9yVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld0hlaWdodFNpemFibGUgfCBO
U1ZpZXdNaW5YTWFyZ2luXTsKICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IGluc3BlY3RvclBh
Z2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkV2lkdGgoKTsKICAgICAgICAgYnJlYWs7
CkBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2goKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiB7Ci0gICAg
V0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmlu
c3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94
eU9iakNBZGFwdGVyLmdldCgpIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24g
b2JqZWN0Omluc3BlY3RlZFZpZXddOwogCiAgICAgW21faW5zcGVjdG9yVmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245980</attachid>
            <date>2015-02-03 15:44:45 -0800</date>
            <delta_ts>2015-02-03 21:05:23 -0800</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-141135-20150203154444.patch</filename>
            <type>text/plain</type>
            <size>43711</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTY3YjYxOTJlNGI1Y2Mx
OGQwOWExYTE1ZTFhMWU5ODE3OTMyM2JhZi4uZThhYTJlZmVjN2VkYmFkYjdmNmRmYzVkMWNiYWY4
MDNkNWFhNzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxNS0wMi0wMyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgIG90aGVyIG1pc2NlbGxhbmVvdXMgY2xlYW51cHMsIHN1Y2ggYXMgbmFtaW5nIG1f
cGFnZQorICAgICAgICB0byBtX2luc3BlY3RlZFBhZ2UsIHVzaW5nIFJlZiBhbmQgdXNpbmcgYW4g
ZW51bSBjbGFzcyBmb3IgdGhlIGF0dGFjaG1lbnQgc2lkZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHA6CisgICAgICAgIChXS0luc3BlY3RvckdldFBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VMZXZl
bE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JMZXZl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzRnJv
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVs
YXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
YWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6aW5zcGVjdG9yUGFnZUdyb3Vw
TGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBz
OjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJv
eHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Blbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhdHRhY2hS
aWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGF0dGFj
aEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUlu
c3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93
V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gp
OgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdKTogRGVs
ZXRlZC4KKworMjAxNS0wMi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5l
ZHU+CisKICAgICAgICAgQ29udmVydCBXZWJJbnNwZWN0b3JQcm94eSB0byB1c2UgV0tXZWJWaWV3
IEFQSSBmb3IgdGhlIGluc3BlY3RvciB2aWV3CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwMzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggNzVhMWNkNDgwN2U2MzU5YmI2YWIyOTljOTlm
ZTkwMjEzZDMxZjdjZS4uNmIwMjJlMjk0OTVmMjBkMDBlMDBjZTY2ZjFkNjRhZTA1N2QzMDRmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLSW5zcGVjdG9yR2V0VHlwZUlEKCkKIAogV0tQYWdl
UmVmIFdLSW5zcGVjdG9yR2V0UGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5wYWdlKCkpOworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aW5zcGVjdGVkUGFnZSgpKTsKIH0KIAogYm9v
bCBXS0luc3BlY3RvcklzQ29ubmVjdGVkKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCBhNzkzM2U3MWViOGI0OTJlOWUyMDIxNjMzYmYyMmEzMjg2NjAwMDNkLi5l
MDFiNzM2MGYxNDk4NWE5ZGU3ZTdjNGIzNDUyOTgxMjU4MmY4OGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9t
QWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+
aW5zcGVjdG9yVmlldykgewogICAgICAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbiA9
IHZpZXdSZWN0OwogCi0gICAgICAgIGlmIChwcml2LT5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSA9
PSBBdHRhY2htZW50U2lkZUJvdHRvbSkgeworICAgICAgICBpZiAocHJpdi0+aW5zcGVjdG9yQXR0
YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGU6OkJvdHRvbSkgewogICAgICAgICAgICAgaW50
IGluc3BlY3RvclZpZXdIZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHByaXYtPmlu
c3BlY3RvclZpZXdTaXplKSwgYWxsb2NhdGlvbi0+aGVpZ2h0KTsKICAgICAgICAgICAgIGNoaWxk
QWxsb2NhdGlvbi54ID0gMDsKICAgICAgICAgICAgIGNoaWxkQWxsb2NhdGlvbi55ID0gYWxsb2Nh
dGlvbi0+aGVpZ2h0IC0gaW5zcGVjdG9yVmlld0hlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDNiMDhlNzAzZmJjNGMyZDI4OGVm
YTk3NDc3YjE1ZDVmZTM2ZTljMGUuLmQyMGQ1ZGU2NzcwYjRmZTE3NzIyMmI0YzZiZDA0YWRhYTZl
NDIwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNTgsOTAgKzU4LDQ1IEBAIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5
OjptaW5pbXVtV2luZG93SGVpZ2h0ID0gNDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9y
UHJveHk6OmluaXRpYWxXaW5kb3dXaWR0aCA9IDEwMDA7CiBjb25zdCB1bnNpZ25lZCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hlaWdodCA9IDY1MDsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yUGFnZUdyb3VwcyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkluc3BlY3RvclBhZ2VHcm91
cHMmIHNpbmdsZXRvbigpCi0gICAgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vi
SW5zcGVjdG9yUGFnZUdyb3Vwcz4gaW5zdGFuY2U7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsK
LSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnNwZWN0b3JMZXZlbChXZWJQYWdlR3JvdXAmIGluc3Bl
Y3RlZFBhZ2VHcm91cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0luc3BlY3RvclBhZ2VHcm91
cChpbnNwZWN0ZWRQYWdlR3JvdXApID8gaW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwoaW5zcGVjdGVk
UGFnZUdyb3VwKSArIDEgOiAxOwotICAgIH0KLQotICAgIGJvb2wgaXNJbnNwZWN0b3JQYWdlR3Jv
dXAoV2ViUGFnZUdyb3VwJiBncm91cCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3BhZ2VHcm91
cExldmVsLmNvbnRhaW5zKCZncm91cCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9y
UGFnZUdyb3VwTGV2ZWwoV2ViUGFnZUdyb3VwJiBncm91cCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChpc0luc3BlY3RvclBhZ2VHcm91cChncm91cCkpOwotICAgICAgICByZXR1cm4gbV9wYWdlR3Jv
dXBMZXZlbC5nZXQoJmdyb3VwKTsKLSAgICB9Ci0KLSAgICBXZWJQYWdlR3JvdXAqIGluc3BlY3Rv
clBhZ2VHcm91cEZvckxldmVsKHVuc2lnbmVkIGxldmVsKQotICAgIHsKLSAgICAgICAgLy8gVGhl
IGxldmVsIGlzIHRoZSBrZXkgb2YgdGhlIEhhc2hNYXAsIHNvIGl0IGNhbm5vdCBiZSAwLgotICAg
ICAgICBBU1NFUlQobGV2ZWwpOwotCi0gICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3BhZ2VHcm91
cEJ5TGV2ZWwuZmluZChsZXZlbCk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3BhZ2VHcm91
cEJ5TGV2ZWwuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwotCi0gICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IGdyb3VwID0gY3JlYXRlSW5zcGVjdG9y
UGFnZUdyb3VwKGxldmVsKTsKLSAgICAgICAgbV9wYWdlR3JvdXBCeUxldmVsLnNldChsZXZlbCwg
Z3JvdXAuZ2V0KCkpOwotICAgICAgICBtX3BhZ2VHcm91cExldmVsLnNldChncm91cC5nZXQoKSwg
bGV2ZWwpOwotICAgICAgICByZXR1cm4gZ3JvdXAuZ2V0KCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VHcm91cD4gY3JlYXRlSW5zcGVjdG9yUGFnZUdy
b3VwKHVuc2lnbmVkIGxldmVsKQotICAgIHsKLSAgICAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4g
cGFnZUdyb3VwID0gV2ViUGFnZUdyb3VwOjpjcmVhdGUoU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5z
cGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgbGV2ZWwpLCBmYWxzZSwgZmFsc2UpOwotCi0jaWZu
ZGVmIE5ERUJVRwotICAgICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdl
YiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCi0g
ICAgICAgIHBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KHRydWUpOwotICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0TG9nc1BhZ2VNZXNz
YWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQodHJ1ZSk7Ci0jZW5kaWYKLQotICAgICAgICBwYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUp
OwotCi0gICAgICAgIHJldHVybiBwYWdlR3JvdXAucmVsZWFzZSgpOwotICAgIH0KLQotICAgIHR5
cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFdlYlBhZ2VHcm91cD4gPiBQYWdlR3JvdXBC
eUxldmVsTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJQYWdlR3JvdXAqLCB1bnNpZ25lZD4g
UGFnZUdyb3VwTGV2ZWxNYXA7Cit0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgdW5zaWdu
ZWQ+IFBhZ2VMZXZlbE1hcDsKIAotICAgIFBhZ2VHcm91cEJ5TGV2ZWxNYXAgbV9wYWdlR3JvdXBC
eUxldmVsOwotICAgIFBhZ2VHcm91cExldmVsTWFwIG1fcGFnZUdyb3VwTGV2ZWw7Ci19Oworc3Rh
dGljIFBhZ2VMZXZlbE1hcCYgcGFnZUxldmVsTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UGFnZUxldmVsTWFwPiBtYXA7CisgICAgcmV0dXJuIG1hcDsKK30KIAotV2ViSW5zcGVj
dG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogcGFnZSkKLSAgICA6IG1f
cGFnZShwYWdlKQorV2ViSW5zcGVjdG9yUHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQ
cm94eSogaW5zcGVjdGVkUGFnZSkKKyAgICA6IG1faW5zcGVjdGVkUGFnZShpbnNwZWN0ZWRQYWdl
KQogI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKICAgICAsIG1fY2xvc2VUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VUaW1lckZp
cmVkKQogI2VuZGlmCiB7Ci0gICAgbV9sZXZlbCA9IFdlYkluc3BlY3RvclBhZ2VHcm91cHM6OnNp
bmdsZXRvbigpLmluc3BlY3RvckxldmVsKG1fcGFnZS0+cGFnZUdyb3VwKCkpOwotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSwgKnRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3JQcm94eTo6fldlYkluc3BlY3Rv
clByb3h5KCkKIHsKIH0KIAotV2ViUGFnZUdyb3VwKiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZUdyb3VwKCkgY29uc3QKK3Vuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JMZXZlbCgpIGNvbnN0Cit7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gcGFnZUxldmVsTWFwKCku
ZmluZChpbnNwZWN0ZWRQYWdlKCkpOworICAgIGlmIChmaW5kUmVzdWx0ICE9IHBhZ2VMZXZlbE1h
cCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gZmluZFJlc3VsdC0+dmFsdWUgKyAxOworCisgICAg
cmV0dXJuIDE7Cit9CisKK1N0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdy
b3VwSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkluc3BlY3RvclBhZ2VHcm91
cHM6OnNpbmdsZXRvbigpLmluc3BlY3RvclBhZ2VHcm91cEZvckxldmVsKG1fbGV2ZWwpOworICAg
IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiX19XZWJJbnNwZWN0b3JQYWdlR3JvdXBMZXZlbCV1X18i
LCBpbnNwZWN0b3JMZXZlbCgpKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMmIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKSBjb25zdAogewotICAgIHJldHVybiBpbnNw
ZWN0b3JQYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQ
YWdlKTsKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JQYWdlLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNl
cygpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKQEAgLTE1MSwx
OCArMTA2LDE5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmludmFsaWRhdGUoKQogICAgICAg
ICBXZWJJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLnVucmVnaXN0ZXJQYWdlKG1fcmVtb3Rl
SW5zcGVjdGlvblBhZ2VJZCk7CiAjZW5kaWYKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAg
IGRpZENsb3NlKCk7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKLSAgICBtX3BhZ2UgPSBu
dWxscHRyOworICAgIHBhZ2VMZXZlbE1hcCgpLnJlbW92ZShtX2luc3BlY3RlZFBhZ2UpOworICAg
IG1faW5zcGVjdGVkUGFnZSA9IG51bGxwdHI7CiB9CiAKIC8vIFB1YmxpYyBBUElzCiBib29sIFdl
Ykluc3BlY3RvclByb3h5Ojppc0Zyb250KCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAo
IW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHBs
YXRmb3JtSXNGcm9udCgpOwpAQCAtMTcwLDcgKzEyNiw3IEBAIGJvb2wgV2ViSW5zcGVjdG9yUHJv
eHk6OmlzRnJvbnQoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKIHsKLSAg
ICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fc2hvd01lc3NhZ2VTZW50KQpAQCAtMTgxLDEyICsxMzcsMTIgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVj
dG9yUGFnZSgpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTaG93KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCiB7
Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChpc0Nvbm5lY3RlZCgpKSB7CkBAIC0yMDIsNyArMTU4LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omhp
ZGUoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpAQCAtMjEyLDg2ICsxNjgs
ODYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aGlkZSgpCiAKIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNsb3NlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVk
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3Nl
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgZGlkQ2xvc2UoKTsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcygp
CiB7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNl
VVJMKCkpOwogCiAgICAgLy8gV2hlbiBkaWRSZWxhdW5jaEluc3BlY3RvclBhZ2VQcm9jZXNzIGlz
IGNhbGxlZCB3ZSBjYW4gYXNzdW1lIGl0IGlzIGR1cmluZyBhIGxvYWQgcmVxdWVzdC4KICAgICAv
LyBBbnkgbWVzc2FnZXMgd2Ugd291bGQgaGF2ZSBzZW50IHRvIGEgdGVybWluYXRlZCBwcm9jZXNz
IG5lZWQgdG8gYmUgcmUtc2VudC4KIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVj
dGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9u
SWRlbnRpZmllciwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d0NvbnNvbGUoKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdl
KQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwog
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93
Q29uc29sZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVz
b3VyY2VzKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jl
c291cmNlcygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKIHsKLSAgICBpZiAoIW1f
cGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
ZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCiB7Ci0gICAgYXR0YWNoKEF0
dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICBhdHRhY2goQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaFJpZ2h0KCkKIHsKLSAgICBhdHRh
Y2goQXR0YWNobWVudFNpZGVSaWdodCk7CisgICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdo
dCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBz
aWRlKQogewotICAgIGlmICghbV9wYWdlIHx8ICFjYW5BdHRhY2goKSkKKyAgICBpZiAoIW1faW5z
cGVjdGVkUGFnZSB8fCAhY2FuQXR0YWNoKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNB
dHRhY2hlZCA9IHRydWU7CiAgICAgbV9hdHRhY2htZW50U2lkZSA9IHNpZGU7CiAKLSAgICBpbnNw
ZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JBdHRhY2htZW50U2lkZShzaWRlKTsK
KyAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JBdHRhY2htZW50U2lk
ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2lkZSkpOwogCiAgICAgaWYgKG1faXNWaXNpYmxlKQog
ICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRh
Y2hlZCh0cnVlKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0
YWNoZWQodHJ1ZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgc3dpdGNoICht
X2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206CiAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEF0
dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6CiAgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0zMDEsNyArMjU3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmRldGFjaCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOwpAQCAtMzA5LDcg
KzI2NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCgpCiAgICAgaWYgKG1faXNW
aXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JT
dGFydHNBdHRhY2hlZChmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHBsYXRmb3Jt
RGV0YWNoKCk7CkBAIC0zMjksMjMgKzI4NSwxOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpz
ZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogCiB2b2lkIFdlYkluc3BlY3Rv
clByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBp
ZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNQcm9m
aWxpbmdQYWdlKQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlN0b3BQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0b3BQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQ
YWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgLy8gRklY
TUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCiAgICAg
bV9pc1Byb2ZpbGluZ1BhZ2UgPSAhbV9pc1Byb2ZpbGluZ1BhZ2U7CiB9CiAKLWJvb2wgV2ViSW5z
cGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UpCi17Ci0gICAg
cmV0dXJuIFdlYkluc3BlY3RvclBhZ2VHcm91cHM6OnNpbmdsZXRvbigpLmlzSW5zcGVjdG9yUGFn
ZUdyb3VwKHBhZ2UucGFnZUdyb3VwKCkpOwotfQotCiBXZWJQcm9jZXNzUG9vbCYgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvclByb2Nlc3NQb29sKCkKIHsKICAgICAvLyBIYXZpbmcgb3VyIG93
biBwcm9jZXNzIHBvb2wgcmVtb3ZlcyB1cyBmcm9tIHRoZSBtYWluIHByb2Nlc3MgcG9vbCBhbmQK
QEAgLTM1OSw2ICszMTAsMTEgQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQcm9jZXNzUG9vbCgpCiAgICAgcmV0dXJuICpwcm9jZXNzUG9vbDsKIH0KIAorYm9v
bCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZSkKK3sKKyAgICByZXR1cm4gcGFnZUxldmVsTWFwKCkuY29udGFpbnMoJndlYlBhZ2UpOworfQor
CiBzdGF0aWMgYm9vbCBpc01haW5PclRlc3RJbnNwZWN0b3JQYWdlKGNvbnN0IFdlYkluc3BlY3Rv
clByb3h5KiB3ZWJJbnNwZWN0b3JQcm94eSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7
CiAgICAgVVJMIHJlcXVlc3RVUkwoVVJMKCksIHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpOwpAQCAtNDA5LDcgKzM2NSw3IEBAIHN0YXRpYyB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBX
S0ZyCiAgICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+aWdub3JlKCk7CiAKICAgICAvLyBBbmQgaW5z
dGVhZCBsb2FkIGl0IGluIHRoZSBpbnNwZWN0ZWQgcGFnZS4KLSAgICB3ZWJJbnNwZWN0b3JQcm94
eS0+cGFnZSgpLT5sb2FkUmVxdWVzdCh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVz
dCgpKTsKKyAgICB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdGVkUGFnZSgpLT5sb2FkUmVxdWVz
dCh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpKTsKIH0KIAogI2lmIEVOQUJM
RShJTlNQRUNUT1JfU0VSVkVSKQpAQCAtNDIxLDE3ICszNzcsMTcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlbW90ZUZy
b250ZW5kRGlzY29ubmVjdGVkKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVz
c2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVzc2FnZVRv
QmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZW5kTWVzc2FnZVRvQmFj
a2VuZChtZXNzYWdlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAjZW5kaWYKIApA
QCAtNDQ1LDYgKzQwMSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJ
bnNwZWN0b3JQYWdlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgcGFnZUxldmVsTWFwKCkuc2V0KG1faW5zcGVjdG9yUGFnZSwgaW5zcGVjdG9yTGV2
ZWwoKSk7CisKICAgICBXS1BhZ2VQb2xpY3lDbGllbnRWMSBwb2xpY3lDbGllbnQgPSB7CiAgICAg
ICAgIHsgMSwgdGhpcyB9LAogICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKQEAgLTUwMSwxNCArNDU5LDE0IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCkKICAg
ICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHRvQVBJKG1faW5zcGVjdG9yUGFnZSksICZwb2xp
Y3lDbGllbnQuYmFzZSk7CiAgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCh0b0FQSShtX2lu
c3BlY3RvclBhZ2UpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1l
UmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOwogfQogCiAvLyBDYWxsZWQg
YnkgV2ViSW5zcGVjdG9yUHJveHkgbWVzc2FnZXMKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUluc3BlY3RvclBhZ2UoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBi
b29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAg
aWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CkBAIC01MjAsMjIgKzQ3OCwyMiBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRl
bnRpZmllcgogICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogICAgIG1fY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBjb25uZWN0aW9uSWRlbnRpZmllcjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0
aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1fcGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0
KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24o
bV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgbV91bmRl
clRlc3QpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGlmICghbV91bmRlclRl
c3QpIHsKICAgICAgICAgbV9jYW5BdHRhY2ggPSBjYW5BdHRhY2g7CiAgICAgICAgIG1faXNBdHRh
Y2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgICAgICBtX2F0dGFjaG1lbnRTaWRlID0g
c3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmlu
c3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwogCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICAgICAgaWYgKG1faXNBdHRhY2hlZCkgewogICAg
ICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgICAgICBjYXNlIEF0
dGFjaG1lbnRTaWRlQm90dG9tOgorICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90
dG9tOgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBB
dHRhY2htZW50U2lkZVJpZ2h0OgorICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Umln
aHQ6CiAgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC01NjEs
NyArNTE5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UoKQogICAgIGlmICgh
bV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKIAogICAgIG1faXNWaXNp
YmxlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5oCmluZGV4IDJkODIyZjUyYTI5MTZkNGI4ZGZiNTFhM2E1OWE2MjAyMTBjMGM1ZjIuLjNkNThi
MzViY2RiM2NkZTJiM2QzMzYxMjJkNjIyMDY5OWMxOGEzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oCkBAIC02NCwxNiArNjQsMTYgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJQcm9jZXNzUG9v
bDsKIAotZW51bSBBdHRhY2htZW50U2lkZSB7Ci0gICAgQXR0YWNobWVudFNpZGVCb3R0b20sCi0g
ICAgQXR0YWNobWVudFNpZGVSaWdodAorZW51bSBjbGFzcyBBdHRhY2htZW50U2lkZSB7CisgICAg
Qm90dG9tLAorICAgIFJpZ2h0CiB9OwogCiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3Rvcj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
SW5zcGVjdG9yUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgc3RhdGljIFJl
ZjxXZWJJbnNwZWN0b3JQcm94eT4gY3JlYXRlKFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yUHJveHkocGFn
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJJbnNwZWN0b3JQcm94eShpbnNw
ZWN0ZWRQYWdlKSk7CiAgICAgfQogCiAgICAgfldlYkluc3BlY3RvclByb3h5KCk7CkBAIC04MSw3
ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIAogICAgIC8vIFB1Ymxp
YyBBUElzCi0gICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlOyB9
CisgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbnNw
ZWN0ZWRQYWdlOyB9CiAKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWaXNpYmxlOyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRhY2hlZDsgfQogICAgIHZvaWQgYXR0YWNoUmln
aHQoKTsKICAgICB2b2lkIGF0dGFjaEJvdHRvbSgpOwotICAgIHZvaWQgYXR0YWNoKEF0dGFjaG1l
bnRTaWRlID0gQXR0YWNobWVudFNpZGVCb3R0b20pOworICAgIHZvaWQgYXR0YWNoKEF0dGFjaG1l
bnRTaWRlID0gQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7CiAgICAgdm9pZCBkZXRhY2goKTsKIAog
ICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpOwpAQCAtMTMwLDggKzEz
MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJvZmlsaW5nUGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcm9maWxpbmdQYWdlOyB9CiAgICAgdm9pZCB0b2dnbGVQYWdlUHJvZmlsaW5nKCk7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7CiAgICAgc3Rh
dGljIFdlYlByb2Nlc3NQb29sJiBpbnNwZWN0b3JQcm9jZXNzUG9vbCgpOworICAgIHN0YXRpYyBi
b29sIGlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmKTsKIAogICAgIC8vIFByb3ZpZGVkIGJ5
IHBsYXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGltcGxlbWVudGF0aW9ucy4KICAgICBTdHJpbmcg
aW5zcGVjdG9yUGFnZVVSTCgpIGNvbnN0OwpAQCAtMTkyLDkgKzE5MiwxMCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBvcGVuKCk7CiAKLSAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgcmV0dXJuIHRo
ZSBwYWdlIGdyb3VwIGlkZW50aWZpZXIsIG5vdCBhbiBpbnN0YW5jZS4gVGhlIE1hYyBwb3J0IGNh
bm5vdAotICAgIC8vIGRpcmVjdGx5IHByb3ZpZGUgYSBwYWdlIGdyb3VwIGluc3RhbmNlLCBhbmQg
aW5zdGFuY2VzIGFyZSBub3QgbmVjZXNzYXJ5IHRvIGNvbXB1dGUgbGV2ZWxzLgotICAgIFdlYlBh
Z2VHcm91cCogaW5zcGVjdG9yUGFnZUdyb3VwKCkgY29uc3Q7CisgICAgLy8gVGhlIGluc3BlY3Rv
ciBsZXZlbCBpcyB1c2VkIHRvIGdpdmUgZGlmZmVyZW50IHByZWZlcmVuY2VzIHRvIGVhY2ggaW5z
cGVjdG9yCisgICAgLy8gbGV2ZWwgYnkgc2V0dGluZyBhIHBlci1sZXZlbCBwYWdlIGdyb3VwIGlk
ZW50aWZpZXIuCisgICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2ZWwoKSBjb25zdDsKKyAgICBTdHJp
bmcgaW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpIGNvbnN0OwogICAgIFdlYlByZWZlcmVu
Y2VzJiBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oRUZMKQpAQCAtMjEyLDcgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dXaWR0aDsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgaW5pdGlhbFdpbmRvd0hlaWdodDsKIAotICAgIFdlYlBhZ2VQcm94eSogbV9wYWdl
IHtudWxscHRyfTsKKyAgICBXZWJQYWdlUHJveHkqIG1faW5zcGVjdGVkUGFnZSB7bnVsbHB0cn07
CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2Uge251bGxwdHJ9OwogCiAgICAgYm9v
bCBtX3VuZGVyVGVzdCB7ZmFsc2V9OwpAQCAtMjIzLDE0ICsyMjQsMTIgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0
QnJpbmdUb0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBUaGUgZGVidWdnZXIgc3RvcHMgYWxsIHRo
ZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAuIEhhdmluZwotICAgIC8vIGFsbCB0aGUgaW5z
cGVjdG9ycyBpbiB0aGUgc2FtZSBncm91cCB3aWxsIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWJ1
ZwotICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2UgdXNlIHRoZSBsZXZlbCB0byBtYWtl
IGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KLSAgICB1bnNpZ25lZCBtX2xldmVsOwotICAgIAorICAg
IC8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggV2ViUGFnZXMgYXJlIGluc3BlY3RvciBwYWdlcywgYW5k
IHRoZWlyIGxldmVsLgorICAgIHN0YXRpYyBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIHVuc2lnbmVk
PiBzX3BhZ2VMZXZlbE1hcDsKKwogICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyOwogCi0gICAgQXR0YWNobWVudFNpZGUgbV9hdHRhY2htZW50U2lkZSB7QXR0YWNobWVu
dFNpZGVCb3R0b219OworICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFj
aG1lbnRTaWRlOjpCb3R0b219OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxF
RAogICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLV2ViVmlldz4gbV9pbnNwZWN0b3JWaWV3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQ
cm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclBy
b3h5RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJhNTMwOWM4YjYzMmE5M2VjOGVj
Li44MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDllZDZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JX
aW5kb3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0
ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOworICAgIEFTU0VSVChtX2lu
c3BlY3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgY29uc3QgY2hhciogZW5n
aW5lID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBAIFdlYlBhZ2VQcm94eSogV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JQ
cm9jZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IHRvQVBJKGlu
c3BlY3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tHcm91
cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tQYWdlR3Jv
dXBSZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdrR3Jv
dXBJZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdDcmVh
dGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5k
b3cpLCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tWaWV3ID0gRVdLVmlld0dldFdL
VmlldyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBlZTY3MjcxMmQ4YjU2YmFhOWM1
NzA0NDNhMzA2NDJlMWZiODczMjA5Li43MGIxY2ExNmRkN2U3NzNkZTE2ZjBhY2FjNzA2NDZiZjM0
ZGIxMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYklu
c3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTgsOSArNTgsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6aW5pdGlhbGl6ZUluc3BlY3RvckNsaWVudEd0ayhjb25zdCBXS0luc3BlY3RvckNsaWVu
dEd0a0IKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJ
bnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5zcGVj
dGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9pbnNwZWN0
b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yUHJv
Y2Vzc1Bvb2woKSwgbnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxw
dHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXIoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX2luc3BlY3RvclZp
ZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JQcm9jZXNz
UG9vbCgpLCBudWxscHRyLCBwYWdlR3JvdXAsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBnX29i
amVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdl
YlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcpKTsK
IH0KQEAgLTY4LDkgKzY5LDkgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRvY2tC
dXR0b25DbGlja2VkKEd0a1dpZGdldCogYnV0dG9uLCBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKQogewogICAgIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tCb3R0b21CdXR0b24p
Ci0gICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICAg
ICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7CiAgICAgZWxzZSBp
ZiAoYnV0dG9uID09IGluc3BlY3Rvci0+bV9kb2NrUmlnaHRCdXR0b24pCi0gICAgICAgIGluc3Bl
Y3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgICAgICBpbnNwZWN0b3ItPmF0
dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUluc3BlY3RvcldpbmRvdygpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRvdyk7
CiAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExF
VkVMKTsKIAotICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRf
Z2V0X3RvcGxldmVsKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICBHdGtXaWRnZXQqIGluc3Bl
Y3RlZFZpZXdQYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChpbnNwZWN0ZWRQYWdlKCkt
PnZpZXdXaWRnZXQoKSk7CiAgICAgaWYgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3BsZXZl
bFdpbmRvdyhpbnNwZWN0ZWRWaWV3UGFyZW50KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfdHJh
bnNpZW50X2ZvcihHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJTkRPVyhpbnNw
ZWN0ZWRWaWV3UGFyZW50KSk7CiAKQEAgLTIxOSwxMiArMjIwLDEyIEBAIFN0cmluZyBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAgcmV0dXJu
IGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWlnaHQobV9wYWdlLT52aWV3V2lkZ2V0KCkpOwor
ICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KGluc3BlY3RlZFBhZ2Uo
KS0+dmlld1dpZGdldCgpKTsKIH0KIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKQogewotICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9h
bGxvY2F0ZWRfd2lkdGgobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtfd2lk
Z2V0X2dldF9hbGxvY2F0ZWRfd2lkdGgoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCkBAIC0yNDEsNyAr
MjQyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwogCi0gICAgaWYg
KG1fYXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKKyAgICBpZiAobV9h
dHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAgICAgIHVuc2ln
bmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0
KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChzdGQ6
Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNpemUs
IG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKICAgICB9IGVsc2UgewpAQCAtMjUyLDEzICsyNTMs
MTMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIGlmICht
X2NsaWVudC5hdHRhY2godGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYmtpdFdlYlZp
ZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmlld1dp
ZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3LCBtX2F0dGFjaG1lbnRTaWRlKTsKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZUFkZFdlYkluc3BlY3RvcihXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQ
YWdlKCktPnZpZXdXaWRnZXQoKSksIG1faW5zcGVjdG9yVmlldywgbV9hdHRhY2htZW50U2lkZSk7
CiAgICAgZ3RrX3dpZGdldF9zaG93KG1faW5zcGVjdG9yVmlldyk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBpZiAoIW1fcGFnZS0+aXNWYWxp
ZCgpKQorICAgIGlmICghaW5zcGVjdGVkUGFnZSgpLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0b3JW
aWV3OwpAQCAtMjgwLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRhY2hlZEhlaWdodCh0aGlzLCBoZWlnaHQpOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOworICAgIHdlYmtpdFdlYlZpZXdC
YXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFn
ZSgpLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCkBAIC0yODks
NyArMjkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdp
bmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VBdHRhY2hlZFdpZHRoKHRoaXMsIHdpZHRoKTsKLSAgICB3ZWJraXRXZWJWaWV3
QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmll
d1dpZGdldCgpKSwgd2lkdGgpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmll
d1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkp
LCB3aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0VG9vbGJh
ckhlaWdodCh1bnNpZ25lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDA1MTIzNzdiNWZkNmNiNTExYTViOTRkZDdh
NDMyNTc5MmM1N2U1YTIuLmNiZWFmZTNjOTE0YjNkYTY0MWVkMmMzYTYyZTc4NmM1NjY0MDE2NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgLSAoaWQpaW5pdFdpdGhXZWJJbnNwZWN0
b3JQcm94eTooV2ViSW5zcGVjdG9yUHJveHkqKWluc3BlY3RvclByb3h5CiAKIC0gKElCQWN0aW9u
KWF0dGFjaFJpZ2h0OihpZClzZW5kZXIKIHsKLSAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQ
cm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lkZVJpZ2h0KTsKKyAg
ICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFj
aChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiAtIChJQkFjdGlvbilhdHRhY2hCb3R0b206
KGlkKXNlbmRlcgogewotICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3Bl
Y3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICBzdGF0aWNfY2Fz
dDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50
U2lkZTo6Qm90dG9tKTsKIH0KIAogLSAodm9pZCljbG9zZQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0
YXRpYyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgICAgICAgICBXS1JlbGVhc2UoZmlsZVVSTHMpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5j
ZWwobGlzdGVuZXIpOwotICAgICAgICAKKwogICAgICAgICBXS1JlbGVhc2UobGlzdGVuZXIpOwog
ICAgIH1dOwogfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUluc3BlY3RvcldpbmRvdygpCiAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNNYWtlUmVj
dCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCiAgICAg
Ly8gUmVzdG9yZSB0aGUgc2F2ZWQgd2luZG93IGZyYW1lLCBpZiB0aGVyZSB3YXMgb25lLgotICAg
IE5TU3RyaW5nICpzYXZlZFdpbmRvd0ZyYW1lU3RyaW5nID0gcGFnZSgpLT5wYWdlR3JvdXAoKS5w
cmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CisgICAgTlNTdHJpbmcgKnNhdmVk
V2luZG93RnJhbWVTdHJpbmcgPSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVu
Y2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKICAgICBOU1JlY3Qgc2F2ZWRXaW5kb3dGcmFt
ZSA9IE5TUmVjdEZyb21TdHJpbmcoc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyk7CiAgICAgaWYgKCFO
U0lzRW1wdHlSZWN0KHNhdmVkV2luZG93RnJhbWUpKQogICAgICAgICB3aW5kb3dGcmFtZSA9IHNh
dmVkV2luZG93RnJhbWU7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6dXBkYXRlSW5zcGVjdG9yV2luZG93VGl0bGUoKSBjb25zdAogCiBXZWJQYWdlUHJveHkqIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFT
U0VSVChtX3BhZ2UpOworICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCiAgICAgbV9jbG9z
ZVRpbWVyLnN0b3AoKTsKIApAQCAtNDYxLDIwICs0NjEsMjAgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIAogICAgIE5TUmVj
dCBpbml0aWFsUmVjdDsKICAgICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIE5TUmVjdCBp
bnNwZWN0ZWRWaWV3RnJhbWUgPSBtX3BhZ2UtPndrVmlldygpLmZyYW1lOworICAgICAgICBOU1Jl
Y3QgaW5zcGVjdGVkVmlld0ZyYW1lID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKS5mcmFtZTsK
IAogICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgog
ICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVj
dGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNo
ZWRIZWlnaHQoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50
U2lkZVJpZ2h0OgorICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAg
ICAgIGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5j
ZXMoKS5pbnNwZWN0b3JBdHRhY2hlZFdpZHRoKCksIE5TSGVpZ2h0KGluc3BlY3RlZFZpZXdGcmFt
ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICBpbml0aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0
aWFsV2luZG93SGVpZ2h0KTsKIAotICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcg
PSBwYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUo
KTsKKyAgICAgICAgTlNTdHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgp
LT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAg
ICAgIE5TUmVjdCB3aW5kb3dGcmFtZSA9IE5TUmVjdEZyb21TdHJpbmcod2luZG93RnJhbWVTdHJp
bmcpOwogICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3Qod2luZG93RnJhbWUpKQogICAgICAgICAg
ICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93
RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CkBAIC00ODksNyArNDg5LDcgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCkKICNlbmRpZgogICAgIHByZWZlcmVuY2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMg
PSBZRVM7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFw
cGVyKGluc3BlY3RvclByb2Nlc3NQb29sKCkpXTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0R3Jv
dXBJZGVudGlmaWVyOmluc3BlY3RvclBhZ2VHcm91cCgpLT5pZGVudGlmaWVyKCldOworICAgIFtj
b25maWd1cmF0aW9uIF9zZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRp
ZmllcigpXTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3Rv
cldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKQEAg
LTYxMCw3ICs2MTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9G
cm9udCgpCiAgICAgLy8gSWYgdGhlIFdlYiBJbnNwZWN0b3IgaXMgbm8gbG9uZ2VyIGluIHRoZSBz
YW1lIHdpbmRvdyBhcyB0aGUgaW5zcGVjdGVkIHZpZXcsCiAgICAgLy8gdGhlbiB3ZSBuZWVkIHRv
IHJlb3BlbiB0aGUgSW5zcGVjdG9yIHRvIGdldCBpdCBhdHRhY2hlZCB0byB0aGUgcmlnaHQgd2lu
ZG93LgogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGRyYWdnaW5nIHRhYnMgdG8gYW5vdGhl
ciB3aW5kb3cgaW4gU2FmYXJpLgotICAgIGlmIChtX2lzQXR0YWNoZWQgJiYgbV9pbnNwZWN0b3JW
aWV3LmdldCgpLndpbmRvdyAhPSBtX3BhZ2UtPndrVmlldygpLndpbmRvdykgeworICAgIGlmICht
X2lzQXR0YWNoZWQgJiYgbV9pbnNwZWN0b3JWaWV3LmdldCgpLndpbmRvdyAhPSBpbnNwZWN0ZWRQ
YWdlKCktPndrVmlldygpLndpbmRvdykgewogICAgICAgICBwbGF0Zm9ybU9wZW4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3Ry
aW5nICpmcmFtZVN0cmluZyA9IE5TU3RyaW5nRnJvbVJlY3QoW21faW5zcGVjdG9yV2luZG93IGZy
YW1lXSk7Ci0gICAgcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEluc3BlY3Rv
cldpbmRvd0ZyYW1lKGZyYW1lU3RyaW5nKTsKKyAgICBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91
cCgpLnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2Uo
Q0dGbG9hdCBjdXJyZW50RGltZW5zaW9uKQpAQCAtNzI3LDQwICs3MjcsNDAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVu
dERpbWVuc2lvbikKICAgICBpZiAoIW1faXNBdHRhY2hlZCB8fCAhbV9pc1Zpc2libGUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3
KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXco
KTsKICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld0ZyYW1lID0gW2luc3BlY3RlZFZpZXcgZnJhbWVd
OwogICAgIE5TUmVjdCBpbnNwZWN0b3JGcmFtZSA9IE5TWmVyb1JlY3Q7CiAgICAgTlNSZWN0IHBh
cmVudEJvdW5kcyA9IFtbaW5zcGVjdGVkVmlldyBzdXBlcnZpZXddIGJvdW5kc107CiAgICAgQ0dG
bG9hdCBpbnNwZWN0ZWRWaWV3VG9wID0gTlNNYXhZKGluc3BlY3RlZFZpZXdGcmFtZSk7CiAKICAg
ICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lk
ZUJvdHRvbTogewotICAgICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQotICAgICAgICAg
ICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU0hlaWdodChbbV9pbnNwZWN0b3JWaWV3IGZyYW1l
XSk7CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOiB7CisgICAgICAgIGlmICghY3Vy
cmVudERpbWVuc2lvbikKKyAgICAgICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU0hlaWdodChb
bV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CiAKLSAgICAgICAgICAgIENHRmxvYXQgcGFyZW50SGVp
Z2h0ID0gTlNIZWlnaHQocGFyZW50Qm91bmRzKTsKLSAgICAgICAgICAgIENHRmxvYXQgaW5zcGVj
dG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRh
Y2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWlnaHQpOworICAgICAg
ICBDR0Zsb2F0IHBhcmVudEhlaWdodCA9IE5TSGVpZ2h0KHBhcmVudEJvdW5kcyk7CisgICAgICAg
IENHRmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRI
ZWlnaHQpOwogCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRo
ZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgotICAgICAg
ICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQs
IE5TV2lkdGgocGFyZW50Qm91bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdo
dCk7Ci0gICAgICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0
aChpbnNwZWN0ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JIZWlnaHQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0
aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4KKyAgICAg
ICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5T
V2lkdGgocGFyZW50Qm91bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7
CisgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3Bl
Y3RlZFZpZXdGcmFtZSksIGluc3BlY3RvckhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
IAotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6IHsKLSAgICAgICAgICAgIGlmICgh
Y3VycmVudERpbWVuc2lvbikKLSAgICAgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNX
aWR0aChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6
UmlnaHQ6IHsKKyAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3Vy
cmVudERpbWVuc2lvbiA9IE5TV2lkdGgoW21faW5zcGVjdG9yVmlldyBmcmFtZV0pOwogCi0gICAg
ICAgICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJlbnRCb3VuZHMpOwotICAg
ICAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JXaWR0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dXaWR0aChjdXJyZW50RGltZW5zaW9uLCBw
YXJlbnRXaWR0aCk7CisgICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRoKHBhcmVu
dEJvdW5kcyk7CisgICAgICAgIENHRmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERp
bWVuc2lvbiwgcGFyZW50V2lkdGgpOwogCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9w
IHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGls
bCB3b3JrLiBCdXQgZG9uJ3QgdXNlIHRoYXQKLSAgICAgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBm
b3IgdGhlIGluc3BlY3RvciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3
aWRlIGFzIHRoZSB0aGUgaW5zcGVjdGVkIHZpZXcuCi0gICAgICAgICAgICBpbnNwZWN0ZWRWaWV3
RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGlu
c3BlY3RlZFZpZXdUb3ApOwotICAgICAgICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5l
cnMgPSBpbnNwZWN0ZWRWaWV3Ll90b3BDb250ZW50SW5zZXQgLSBpbnNwZWN0ZWRWaWV3Ll90b3Rh
bEhlaWdodE9mQmFubmVyczsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVj
dChwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWln
aHQocGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQorICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9m
IHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLiBCdXQg
ZG9uJ3QgdXNlIHRoYXQKKyAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9y
IHZpZXcgc2luY2UgdGhlIGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIHRoZSBp
bnNwZWN0ZWQgdmlldy4KKyAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgw
LCAwLCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKKyAg
ICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSBpbnNwZWN0ZWRWaWV3Ll90b3BD
b250ZW50SW5zZXQgLSBpbnNwZWN0ZWRWaWV3Ll90b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAg
ICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lk
dGgsIDAsIGluc3BlY3RvcldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNs
dWRpbmdCYW5uZXJzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIGlmIChO
U0VxdWFsUmVjdHMoW21faW5zcGVjdG9yVmlldyBmcmFtZV0sIGluc3BlY3RvckZyYW1lKSAmJiBO
U0VxdWFsUmVjdHMoW2luc3BlY3RlZFZpZXcgZnJhbWVdLCBpbnNwZWN0ZWRWaWV3RnJhbWUpKQpA
QCAtNzc3LDIxICs3NzcsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmll
d0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKIAogdW5zaWduZWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkKIHsKLSAgICBX
S1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5z
cGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgTlNSZWN0IGluc3Bl
Y3RlZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOwogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5zcGVjdGVkVmlld1JlY3Quc2l6ZS5oZWlnaHQpOwogfQogCiB1bnNp
Z25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7
Ci0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1Zp
ZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVj
dCBpbnNwZWN0ZWRWaWV3UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUud2lkdGgpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiB7Ci0gICAgV0tWaWV3
ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3Rl
ZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFw
dGVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6
KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRW
aWV3XTsKIAogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewpAQCAtODA1LDExICs4MDUsMTEg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIENHRmxvYXQg
Y3VycmVudERpbWVuc2lvbjsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAg
IGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90
dG9tOgogICAgICAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3
V2lkdGhTaXphYmxlIHwgTlNWaWV3TWF4WU1hcmdpbl07CiAgICAgICAgIGN1cnJlbnREaW1lbnNp
b24gPSBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2hlZEhlaWdodCgp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0
b3Jlc2l6aW5nTWFzazpOU1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWluWE1hcmdpbl07CiAg
ICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNw
ZWN0b3JBdHRhY2hlZFdpZHRoKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI0LDcgKzgyNCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmll
dyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVj
dGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQoKSBu
YW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3
XTsKIAogICAgIFttX2luc3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246013</attachid>
            <date>2015-02-03 21:05:26 -0800</date>
            <delta_ts>2015-02-04 09:37:29 -0800</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-141135-20150203210525.patch</filename>
            <type>text/plain</type>
            <size>43931</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTY3YjYxOTJlNGI1Y2Mx
OGQwOWExYTE1ZTFhMWU5ODE3OTMyM2JhZi4uZThhYTJlZmVjN2VkYmFkYjdmNmRmYzVkMWNiYWY4
MDNkNWFhNzEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMyBAQAogMjAxNS0wMi0wMyAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgIG90aGVyIG1pc2NlbGxhbmVvdXMgY2xlYW51cHMsIHN1Y2ggYXMgbmFtaW5nIG1f
cGFnZQorICAgICAgICB0byBtX2luc3BlY3RlZFBhZ2UsIHVzaW5nIFJlZiBhbmQgdXNpbmcgYW4g
ZW51bSBjbGFzcyBmb3IgdGhlIGF0dGFjaG1lbnQgc2lkZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHA6CisgICAgICAgIChXS0luc3BlY3RvckdldFBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VMZXZl
bE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JMZXZl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzRnJv
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVs
YXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
YWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6aW5zcGVjdG9yUGFnZUdyb3Vw
TGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBz
OjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJv
eHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Blbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhdHRhY2hS
aWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGF0dGFj
aEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUlu
c3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93
V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gp
OgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdKTogRGVs
ZXRlZC4KKworMjAxNS0wMi0wMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5l
ZHU+CisKICAgICAgICAgQ29udmVydCBXZWJJbnNwZWN0b3JQcm94eSB0byB1c2UgV0tXZWJWaWV3
IEFQSSBmb3IgdGhlIGluc3BlY3RvciB2aWV3CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDEwMzcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKaW5kZXggNzVhMWNkNDgwN2U2MzU5YmI2YWIyOTljOTlm
ZTkwMjEzZDMxZjdjZS4uNmIwMjJlMjk0OTVmMjBkMDBlMDBjZTY2ZjFkNjRhZTA1N2QzMDRmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFdLVHlwZUlEIFdLSW5zcGVjdG9yR2V0VHlwZUlEKCkKIAogV0tQYWdl
UmVmIFdLSW5zcGVjdG9yR2V0UGFnZShXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5wYWdlKCkpOworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoaW5zcGVjdG9yUmVmKS0+aW5zcGVjdGVkUGFnZSgpKTsKIH0KIAogYm9v
bCBXS0luc3BlY3RvcklzQ29ubmVjdGVkKFdLSW5zcGVjdG9yUmVmIGluc3BlY3RvclJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCBhNzkzM2U3MWViOGI0OTJlOWUyMDIxNjMzYmYyMmEzMjg2NjAwMDNkLi5l
MDFiNzM2MGYxNDk4NWE5ZGU3ZTdjNGIzNDUyOTgxMjU4MmY4OGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBA
IC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9t
QWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKICAgICBpZiAocHJpdi0+
aW5zcGVjdG9yVmlldykgewogICAgICAgICBHdGtBbGxvY2F0aW9uIGNoaWxkQWxsb2NhdGlvbiA9
IHZpZXdSZWN0OwogCi0gICAgICAgIGlmIChwcml2LT5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSA9
PSBBdHRhY2htZW50U2lkZUJvdHRvbSkgeworICAgICAgICBpZiAocHJpdi0+aW5zcGVjdG9yQXR0
YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGU6OkJvdHRvbSkgewogICAgICAgICAgICAgaW50
IGluc3BlY3RvclZpZXdIZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxpbnQ+KHByaXYtPmlu
c3BlY3RvclZpZXdTaXplKSwgYWxsb2NhdGlvbi0+aGVpZ2h0KTsKICAgICAgICAgICAgIGNoaWxk
QWxsb2NhdGlvbi54ID0gMDsKICAgICAgICAgICAgIGNoaWxkQWxsb2NhdGlvbi55ID0gYWxsb2Nh
dGlvbi0+aGVpZ2h0IC0gaW5zcGVjdG9yVmlld0hlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDNiMDhlNzAzZmJjNGMyZDI4OGVm
YTk3NDc3YjE1ZDVmZTM2ZTljMGUuLjc3NWY1MWIxYzVhYzM3OGQwY2JhN2M2OTY0ODExZjM0OGYz
ZjE2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTU4LDkwICs1OSw0NSBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11
bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojpp
bml0aWFsV2luZG93V2lkdGggPSAxMDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAKLWNsYXNzIFdlYkluc3BlY3RvclBhZ2VH
cm91cHMgewotcHVibGljOgotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaW5n
bGV0b24oKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYkluc3BlY3Rv
clBhZ2VHcm91cHM+IGluc3RhbmNlOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQot
Ci0gICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0ZWRQYWdl
R3JvdXApCi0gICAgewotICAgICAgICByZXR1cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAoaW5zcGVj
dGVkUGFnZUdyb3VwKSA/IGluc3BlY3RvclBhZ2VHcm91cExldmVsKGluc3BlY3RlZFBhZ2VHcm91
cCkgKyAxIDogMTsKLSAgICB9Ci0KLSAgICBib29sIGlzSW5zcGVjdG9yUGFnZUdyb3VwKFdlYlBh
Z2VHcm91cCYgZ3JvdXApCi0gICAgewotICAgICAgICByZXR1cm4gbV9wYWdlR3JvdXBMZXZlbC5j
b250YWlucygmZ3JvdXApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGluc3BlY3RvclBhZ2VHcm91
cExldmVsKFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAgICAgICBBU1NFUlQoaXNJbnNw
ZWN0b3JQYWdlR3JvdXAoZ3JvdXApKTsKLSAgICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwu
Z2V0KCZncm91cCk7Ci0gICAgfQotCi0gICAgV2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3Jv
dXBGb3JMZXZlbCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBsZXZlbCBp
cyB0aGUga2V5IG9mIHRoZSBIYXNoTWFwLCBzbyBpdCBjYW5ub3QgYmUgMC4KLSAgICAgICAgQVNT
RVJUKGxldmVsKTsKLQotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBCeUxldmVs
LmZpbmQobGV2ZWwpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBCeUxldmVs
LmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLQotICAg
ICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBncm91cCA9IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91
cChsZXZlbCk7Ci0gICAgICAgIG1fcGFnZUdyb3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdyb3VwLmdl
dCgpKTsKLSAgICAgICAgbV9wYWdlR3JvdXBMZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxldmVsKTsK
LSAgICAgICAgcmV0dXJuIGdyb3VwLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCh1bnNp
Z25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91
cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBh
Z2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVj
dG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgotICAgICAgICBw
YWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsK
LSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5
c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwotI2VuZGlmCi0KLSAgICAgICAgcGFnZUdyb3VwLT5w
cmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKLQotICAg
ICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQsIFJlZlB0cjxXZWJQYWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1h
cDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91
cExldmVsTWFwOwordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIHVuc2lnbmVkPiBQYWdl
TGV2ZWxNYXA7CiAKLSAgICBQYWdlR3JvdXBCeUxldmVsTWFwIG1fcGFnZUdyb3VwQnlMZXZlbDsK
LSAgICBQYWdlR3JvdXBMZXZlbE1hcCBtX3BhZ2VHcm91cExldmVsOwotfTsKK3N0YXRpYyBQYWdl
TGV2ZWxNYXAmIHBhZ2VMZXZlbE1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBh
Z2VMZXZlbE1hcD4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKLVdlYkluc3BlY3RvclByb3h5
OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFn
ZSkKK1dlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGlu
c3BlY3RlZFBhZ2UpCisgICAgOiBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICNpZiBQ
TEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNl
bmRpZgogewotICAgIG1fbGV2ZWwgPSBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24o
KS5pbnNwZWN0b3JMZXZlbChtX3BhZ2UtPnBhZ2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgp
CiB7CiB9CiAKLVdlYlBhZ2VHcm91cCogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VH
cm91cCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yTGV2ZWwo
KSBjb25zdAoreworICAgIGF1dG8gZmluZFJlc3VsdCA9IHBhZ2VMZXZlbE1hcCgpLmZpbmQoaW5z
cGVjdGVkUGFnZSgpKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBwYWdlTGV2ZWxNYXAoKS5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZpbmRSZXN1bHQtPnZhbHVlICsgMTsKKworICAgIHJldHVybiAx
OworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50
aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5n
bGV0b24oKS5pbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVj
dG9yTGV2ZWwoKSk7CiB9CiAKIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7Cisg
ICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCkBAIC0xNTEsMTggKzEwNywx
OSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5z
cGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rp
b25QYWdlSWQpOwogI2VuZGlmCiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9z
ZSgpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsK
KyAgICBwYWdlTGV2ZWxNYXAoKS5yZW1vdmUobV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2UgPSBudWxscHRyOwogfQogCiAvLyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0
b3JQcm94eTo6aXNGcm9udCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3Bl
Y3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlz
RnJvbnQoKTsKQEAgLTE3MCw3ICsxMjcsNyBAQCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zy
b250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFt
X3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX3Nob3dNZXNzYWdlU2VudCkKQEAgLTE4MSwxMiArMTM4LDEyIEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmNvbm5lY3QoKQogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2Uo
KTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlm
ICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoaXNDb25uZWN0ZWQoKSkgewpAQCAtMjAyLDcgKzE1OSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsK
LSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKQEAgLTIxMiw4NiArMTY5LDg2IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmhpZGUoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpj
bG9zZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQo
KSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsK
IAogICAgIC8vIFdoZW4gZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQg
d2UgY2FuIGFzc3VtZSBpdCBpcyBkdXJpbmcgYSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1l
c3NhZ2VzIHdlIHdvdWxkIGhhdmUgc2VudCB0byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRv
IGJlIHJlLXNlbnQuCiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVu
dGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZp
ZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xl
KCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygp
CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisg
ICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlD
cmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJ
RCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50
U2lkZUJvdHRvbSk7CisgICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFj
aG1lbnRTaWRlUmlnaHQpOworICAgIGF0dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsK
LSAgICBpZiAoIW1fcGFnZSB8fCAhY2FuQXR0YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBh
Z2UgfHwgIWNhbkF0dGFjaCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQg
PSB0cnVlOwogICAgIG1fYXR0YWNobWVudFNpZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFn
ZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHNpZGUpKTsKIAogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAg
aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1
ZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNldEF0dGFjaGVkKHRydWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRy
dWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2ht
ZW50U2lkZSkgewotICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRh
Y2htZW50U2lkZTo6Qm90dG9tOgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50
U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMzAxLDcgKzI1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFj
aChBdHRhY2htZW50U2lkZSBzaWRlKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2go
KQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKQEAgLTMwOSw3ICsyNjYsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkK
ICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0
QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNo
ZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgp
OwpAQCAtMzI5LDIzICsyODYsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNo
ZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2lu
c3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFn
ZSkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFn
ZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQ
YWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZl
IHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9m
aWxpbmdQYWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclBy
b3h5Ojppc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBX
ZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChw
YWdlLnBhZ2VHcm91cCgpKTsKLX0KLQogV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JQcm9jZXNzUG9vbCgpCiB7CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2Vz
cyBwb29sIHJlbW92ZXMgdXMgZnJvbSB0aGUgbWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTks
NiArMzExLDExIEBAIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
UHJvY2Vzc1Bvb2woKQogICAgIHJldHVybiAqcHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5z
cGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7Cisg
ICAgcmV0dXJuIHBhZ2VMZXZlbE1hcCgpLmNvbnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGlj
IGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSog
d2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVS
TCByZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
LnVybCgpKTsKQEAgLTQwOSw3ICszNjYsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAg
IHRvSW1wbChsaXN0ZW5lclJlZiktPmlnbm9yZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9h
ZCBpdCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2UuCi0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2Uo
KS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7Cisg
ICAgd2ViSW5zcGVjdG9yUHJveHktPmluc3BlY3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBs
KHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SX1NFUlZFUikKQEAgLTQyMSwxNyArMzc4LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1v
dGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9t
UmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQo
bWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVz
c2FnZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NSw2
ICs0MDIsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9y
UGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAg
IHBhZ2VMZXZlbE1hcCgpLnNldChtX2luc3BlY3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOwor
CiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEs
IHRoaXMgfSwKICAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCkBAIC01MDEsMTQgKzQ2MCwxNCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdl
U2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50
LmJhc2UpOwogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQ
YWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQo
KSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYklu
c3BlY3RvclByb3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNw
ZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5B
dHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9p
bnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVj
dG9yUGFnZSgpOwpAQCAtNTIwLDIyICs0NzksMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIK
ICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVy
ID0gY29ubmVjdGlvbklkZW50aWZpZXI7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nv
bm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVj
dGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAg
ICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBz
aG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19j
YXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JB
dHRhY2htZW50U2lkZSgpKTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOwogCiAgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAg
IHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50
U2lkZUJvdHRvbToKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAg
ICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVSaWdodDoKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAg
ICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTYxLDcgKzUyMCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVj
dG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OwogICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRl
eCAyZDgyMmY1MmEyOTE2ZDRiOGRmYjUxYTNhNTlhNjIwMjEwYzBjNWYyLi4zZDU4YjM1YmNkYjNj
ZGUyYjNkMzM2MTIyZDYyMjA2OTljMThhM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVu
dW0gQXR0YWNobWVudFNpZGUgewotICAgIEF0dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFj
aG1lbnRTaWRlUmlnaHQKK2VudW0gY2xhc3MgQXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwK
KyAgICBSaWdodAogfTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3Rv
clByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5z
cGVjdG9yUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFn
ZSkpOwogICAgIH0KIAogICAgIH5XZWJJbnNwZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwot
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdl
YlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFn
ZTsgfQogCiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0
b3JQYWdlOyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJs
ZTsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAg
ICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9
IEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9
IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lk
IHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJv
ZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3Rh
dGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQ
cm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0lu
c3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9y
bSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3Rv
clBhZ2VVUkwoKSBjb25zdDsKQEAgLTE5Miw5ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgb3BlbigpOwogCi0gICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBn
cm91cCBpZGVudGlmaWVyLCBub3QgYW4gaW5zdGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAg
ICAvLyBkaXJlY3RseSBwcm92aWRlIGEgcGFnZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNl
cyBhcmUgbm90IG5lY2Vzc2FyeSB0byBjb21wdXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAq
IGluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwg
aXMgdXNlZCB0byBnaXZlIGRpZmZlcmVudCBwcmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3Rvcgor
ICAgIC8vIGxldmVsIGJ5IHNldHRpbmcgYSBwZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVy
LgorICAgIHVuc2lnbmVkIGluc3BlY3RvckxldmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3Bl
Y3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBjb25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkKQEAgLTIxMiw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAgICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0
cn07CisgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdl
YlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdlIHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRl
clRlc3Qge2ZhbHNlfTsKQEAgLTIyMywxNCArMjI0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3Nob3dNZXNzYWdlU2VudCB7ZmFsc2V9OwogICAgIGJvb2wgbV9pZ25vcmVGaXJzdEJyaW5nVG9G
cm9udCB7ZmFsc2V9OwogCi0gICAgLy8gVGhlIGRlYnVnZ2VyIHN0b3BzIGFsbCB0aGUgcGFnZXMg
aW4gdGhlIHNhbWUgUGFnZUdyb3VwLiBIYXZpbmcKLSAgICAvLyBhbGwgdGhlIGluc3BlY3RvcnMg
aW4gdGhlIHNhbWUgZ3JvdXAgd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVidWcKLSAgICAv
LyB0aGUgaW5zcGVjdG9yIGNvZGUsIHNvIHdlIHVzZSB0aGUgbGV2ZWwgdG8gbWFrZSBkaWZmZXJl
bnQgcGFnZSBncm91cHMuCi0gICAgdW5zaWduZWQgbV9sZXZlbDsKLSAgICAKKyAgICAvLyBLZWVw
IHRyYWNrIG9mIHdoaWNoIFdlYlBhZ2VzIGFyZSBpbnNwZWN0b3IgcGFnZXMsIGFuZCB0aGVpciBs
ZXZlbC4KKyAgICBzdGF0aWMgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCB1bnNpZ25lZD4gc19wYWdl
TGV2ZWxNYXA7CisKICAgICBJUEM6OkF0dGFjaG1lbnQgbV9jb25uZWN0aW9uSWRlbnRpZmllcjsK
IAotICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1lbnRTaWRlQm90
dG9tfTsKKyAgICBBdHRhY2htZW50U2lkZSBtX2F0dGFjaG1lbnRTaWRlIHtBdHRhY2htZW50U2lk
ZTo6Qm90dG9tfTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKICAgICBS
ZXRhaW5QdHI8V0tXZWJJbnNwZWN0b3JXS1dlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5j
cHAKaW5kZXggYmRkMTBhMzkzODkzNzU4MTRhY2FiYTUzMDljOGI2MzJhOTNlYzhlYy4uODMwZWI0
Y2E3ZGE0YzgwNThlOGQ4NTg2Y2M4NTc1MWViMjA5ZWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkK
IAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQobV9pbnNwZWN0ZWRQ
YWdlKTsKIAogI2lmZGVmIEhBVkVfRUNPUkVfWAogICAgIGNvbnN0IGNoYXIqIGVuZ2luZSA9ICJv
cGVuZ2xfeDExIjsKQEAgLTEwMyw3ICsxMDMsOCBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIFdLQ29udGV4dFJlZiB3a0NvbnRleHQgPSB0b0FQSSgmaW5zcGVjdG9yUHJvY2Vzc1Bv
b2woKSk7Ci0gICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAgPSB0b0FQSShpbnNwZWN0b3JQ
YWdlR3JvdXAoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrR3JvdXBJZGVudGlm
aWVyID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhpbnNwZWN0b3JQYWdl
R3JvdXBJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSkpOworICAgIFdLUGFnZUdyb3VwUmVmIHdr
UGFnZUdyb3VwID0gV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcih3a0dyb3VwSWRlbnRp
Zmllci5nZXQoKSk7CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBFV0tWaWV3Q3JlYXRlKHdrQ29u
dGV4dCwgd2tQYWdlR3JvdXAsIGVjb3JlX2V2YXNfZ2V0KG1faW5zcGVjdG9yV2luZG93KSwgLyog
c21hcnQgKi8gMCk7CiAgICAgV0tWaWV3UmVmIHdrVmlldyA9IEVXS1ZpZXdHZXRXS1ZpZXcobV9p
bnNwZWN0b3JWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViSW5zcGVjdG9yUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAKaW5kZXggZWU2NzI3MTJkOGI1NmJhYTljNTcwNDQzYTMw
NjQyZTFmYjg3MzIwOS4uNzBiMWNhMTZkZDdlNzczZGUxNmYwYWNhYzcwNjQ2YmYzNGRiMTIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHAKQEAgLTU4LDkgKzU4LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
aXRpYWxpemVJbnNwZWN0b3JDbGllbnRHdGsoY29uc3QgV0tJbnNwZWN0b3JDbGllbnRHdGtCCiAK
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSgpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZSk7CisgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2Uo
KSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwotICAgIG1faW5zcGVjdG9yVmlldyA9
IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJmluc3BlY3RvclByb2Nlc3NQb29s
KCksIG51bGxwdHIsIGluc3BlY3RvclBhZ2VHcm91cCgpLCBudWxscHRyLCBudWxscHRyKSk7Cisg
ICAgYXV0byBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyKCksIGZhbHNlLCBmYWxzZSk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RL
X1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSwg
bnVsbHB0ciwgcGFnZUdyb3VwLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgZ19vYmplY3RfYWRk
X3dlYWtfcG9pbnRlcihHX09CSkVDVChtX2luc3BlY3RvclZpZXcpLCByZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJm1faW5zcGVjdG9yVmlldykpOwogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9pbnNwZWN0b3JWaWV3KSk7CiB9CkBAIC02
OCw5ICs2OSw5IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpkb2NrQnV0dG9uQ2xp
Y2tlZChHdGtXaWRnZXQqIGJ1dHRvbiwgV2ViSW5zcGVjdG9yUHJveHkqIGluc3BlY3RvcikKIHsK
ICAgICBpZiAoYnV0dG9uID09IGluc3BlY3Rvci0+bV9kb2NrQm90dG9tQnV0dG9uKQotICAgICAg
ICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgICAgIGluc3Bl
Y3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogICAgIGVsc2UgaWYgKGJ1dHRv
biA9PSBpbnNwZWN0b3ItPm1fZG9ja1JpZ2h0QnV0dG9uKQotICAgICAgICBpbnNwZWN0b3ItPmF0
dGFjaChBdHRhY2htZW50U2lkZVJpZ2h0KTsKKyAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0
YWNobWVudFNpZGU6OlJpZ2h0KTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpAQCAtODMsNyArODQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJ
bnNwZWN0b3JXaW5kb3coKQogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JXaW5kb3cpOwogICAgIG1f
aW5zcGVjdG9yV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAK
LSAgICBHdGtXaWRnZXQqIGluc3BlY3RlZFZpZXdQYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChtX3BhZ2UtPnZpZXdXaWRnZXQoKSk7CisgICAgR3RrV2lkZ2V0KiBpbnNwZWN0ZWRWaWV3
UGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lk
Z2V0KCkpOwogICAgIGlmIChXZWJDb3JlOjp3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
aW5zcGVjdGVkVmlld1BhcmVudCkpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X3RyYW5zaWVudF9m
b3IoR1RLX1dJTkRPVyhtX2luc3BlY3RvcldpbmRvdyksIEdUS19XSU5ET1coaW5zcGVjdGVkVmll
d1BhcmVudCkpOwogCkBAIC0yMTksMTIgKzIyMCwxMiBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RvckJhc2VVUkwoKSBjb25zdAogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKQogewotICAgIHJldHVybiBndGtfd2lk
Z2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICByZXR1
cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodChpbnNwZWN0ZWRQYWdlKCktPnZpZXdX
aWRnZXQoKSk7CiB9CiAKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3Bl
Y3RlZFdpbmRvd1dpZHRoKCkKIHsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVk
X3dpZHRoKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRf
YWxsb2NhdGVkX3dpZHRoKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQpAQCAtMjQxLDcgKzI0Miw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkV2lkdGggPSA3NTA7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZEhlaWdodCA9IDI1MDsKIAotICAgIGlmIChtX2F0dGFj
aG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CisgICAgaWYgKG1fYXR0YWNobWVu
dFNpZGUgPT0gQXR0YWNobWVudFNpZGU6OkJvdHRvbSkgewogICAgICAgICB1bnNpZ25lZCBtYXhp
bXVtQXR0YWNoZWRIZWlnaHQgPSBwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpICogMyAv
IDQ7CiAgICAgICAgIHBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoc3RkOjptYXgobWlu
aW11bUF0dGFjaGVkSGVpZ2h0LCBzdGQ6Om1pbihkZWZhdWx0QXR0YWNoZWRTaXplLCBtYXhpbXVt
QXR0YWNoZWRIZWlnaHQpKSk7CiAgICAgfSBlbHNlIHsKQEAgLTI1MiwxMyArMjUzLDEzIEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBpZiAobV9jbGllbnQu
YXR0YWNoKHRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJraXRXZWJWaWV3QmFzZUFk
ZFdlYkluc3BlY3RvcihXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZpZXdXaWRnZXQoKSks
IG1faW5zcGVjdG9yVmlldywgbV9hdHRhY2htZW50U2lkZSk7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VBZGRXZWJJbnNwZWN0b3IoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52
aWV3V2lkZ2V0KCkpLCBtX2luc3BlY3RvclZpZXcsIG1fYXR0YWNobWVudFNpZGUpOwogICAgIGd0
a193aWRnZXRfc2hvdyhtX2luc3BlY3RvclZpZXcpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybURldGFjaCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UtPmlzVmFsaWQoKSkKKyAg
ICBpZiAoIWluc3BlY3RlZFBhZ2UoKS0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBHUmVmUHRyPEd0a1dpZGdldD4gaW5zcGVjdG9yVmlldyA9IG1faW5zcGVjdG9yVmlldzsKQEAg
LTI4MCw3ICsyODEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFj
aGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlQXR0YWNoZWRIZWlnaHQodGhpcywgaGVpZ2h0KTsKLSAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKG1f
cGFnZS0+dmlld1dpZGdldCgpKSwgaGVpZ2h0KTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldElu
c3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKGluc3BlY3RlZFBhZ2UoKS0+dmll
d1dpZGdldCgpKSwgaGVpZ2h0KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQpAQCAtMjg5LDcgKzI5MCw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCB3aWR0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jbGllbnQuZGlkQ2hh
bmdlQXR0YWNoZWRXaWR0aCh0aGlzLCB3aWR0aCk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJ
bnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZpZXdXaWRnZXQo
KSksIHdpZHRoKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdF
QktJVF9XRUJfVklFV19CQVNFKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKSwgd2lkdGgp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFRvb2xiYXJIZWlnaHQo
dW5zaWduZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbQppbmRleCAwNTEyMzc3YjVmZDZjYjUxMWE1Yjk0ZGQ3YTQzMjU3OTJj
NTdlNWEyLi5jYmVhZmUzYzkxNGIzZGE2NDFlZDJjM2E2MmU3ODZjNTY2NDAxNjcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KQEAgLTExNCwxMiArMTE0LDEyIEBAIC0gKGlkKWluaXRXaXRoV2ViSW5zcGVjdG9yUHJveHk6
KFdlYkluc3BlY3RvclByb3h5KilpbnNwZWN0b3JQcm94eQogCiAtIChJQkFjdGlvbilhdHRhY2hS
aWdodDooaWQpc2VuZGVyCiB7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9yUHJveHkqPihf
aW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGVSaWdodCk7CisgICAgc3RhdGlj
X2Nhc3Q8V2ViSW5zcGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNo
bWVudFNpZGU6OlJpZ2h0KTsKIH0KIAogLSAoSUJBY3Rpb24pYXR0YWNoQm90dG9tOihpZClzZW5k
ZXIKIHsKLSAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94
eSktPmF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgc3RhdGljX2Nhc3Q8V2ViSW5z
cGVjdG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGU6OkJv
dHRvbSk7CiB9CiAKIC0gKHZvaWQpY2xvc2UKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9p
ZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLT3BlblBh
bmVsUGFyYW1ldGVycwogICAgICAgICAgICAgV0tSZWxlYXNlKGZpbGVVUkxzKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKGxpc3Rl
bmVyKTsKLSAgICAgICAgCisKICAgICAgICAgV0tSZWxlYXNlKGxpc3RlbmVyKTsKICAgICB9XTsK
IH0KQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNw
ZWN0b3JXaW5kb3coKQogICAgIE5TUmVjdCB3aW5kb3dGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwg
aW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0KTsKIAogICAgIC8vIFJlc3Rv
cmUgdGhlIHNhdmVkIHdpbmRvdyBmcmFtZSwgaWYgdGhlcmUgd2FzIG9uZS4KLSAgICBOU1N0cmlu
ZyAqc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyA9IHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5j
ZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOworICAgIE5TU3RyaW5nICpzYXZlZFdpbmRvd0Zy
YW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmlu
c3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAgTlNSZWN0IHNhdmVkV2luZG93RnJhbWUgPSBOU1Jl
Y3RGcm9tU3RyaW5nKHNhdmVkV2luZG93RnJhbWVTdHJpbmcpOwogICAgIGlmICghTlNJc0VtcHR5
UmVjdChzYXZlZFdpbmRvd0ZyYW1lKSkKICAgICAgICAgd2luZG93RnJhbWUgPSBzYXZlZFdpbmRv
d0ZyYW1lOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnVwZGF0
ZUluc3BlY3RvcldpbmRvd1RpdGxlKCkgY29uc3QKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9w
YWdlKTsKKyAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAogICAgIG1fY2xvc2VUaW1lci5z
dG9wKCk7CiAKQEAgLTQ2MSwyMCArNDYxLDIwIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAKICAgICBOU1JlY3QgaW5pdGlh
bFJlY3Q7CiAgICAgaWYgKG1faXNBdHRhY2hlZCkgewotICAgICAgICBOU1JlY3QgaW5zcGVjdGVk
Vmlld0ZyYW1lID0gbV9wYWdlLT53a1ZpZXcoKS5mcmFtZTsKKyAgICAgICAgTlNSZWN0IGluc3Bl
Y3RlZFZpZXdGcmFtZSA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCkuZnJhbWU7CiAKICAgICAg
ICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVCb3R0b206CisgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAg
ICAgIGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3BlY3RlZFZpZXdG
cmFtZSksIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkSGVpZ2h0
KCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdo
dDoKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6CiAgICAgICAgICAgICBpbml0
aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5z
cGVjdG9yQXR0YWNoZWRXaWR0aCgpLCBOU0hlaWdodChpbnNwZWN0ZWRWaWV3RnJhbWUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5pdGlh
bFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlhbFdpbmRv
d0hlaWdodCk7CiAKLSAgICAgICAgTlNTdHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5nID0gcGFnZSgp
LT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CisgICAg
ICAgIE5TU3RyaW5nICp3aW5kb3dGcmFtZVN0cmluZyA9IGluc3BlY3RlZFBhZ2UoKS0+cGFnZUdy
b3VwKCkucHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOwogICAgICAgICBOU1Jl
Y3Qgd2luZG93RnJhbWUgPSBOU1JlY3RGcm9tU3RyaW5nKHdpbmRvd0ZyYW1lU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHdpbmRvd0ZyYW1lKSkKICAgICAgICAgICAgIGluaXRp
YWxSZWN0ID0gW05TV2luZG93IGNvbnRlbnRSZWN0Rm9yRnJhbWVSZWN0OndpbmRvd0ZyYW1lIHN0
eWxlTWFzazp3aW5kb3dTdHlsZU1hc2tdOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94
eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAjZW5k
aWYKICAgICBwcmVmZXJlbmNlcy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOwog
ICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOiA6OldlYktpdDo6d3JhcHBlcihpbnNw
ZWN0b3JQcm9jZXNzUG9vbCgpKV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldEdyb3VwSWRlbnRp
ZmllcjppbnNwZWN0b3JQYWdlR3JvdXAoKS0+aWRlbnRpZmllcigpXTsKKyAgICBbY29uZmlndXJh
dGlvbiBfc2V0R3JvdXBJZGVudGlmaWVyOmluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKV07
CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tXZWJJbnNwZWN0b3JXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJlY3QgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CkBAIC02MTAsNyAr
NjEwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQoKQog
ICAgIC8vIElmIHRoZSBXZWIgSW5zcGVjdG9yIGlzIG5vIGxvbmdlciBpbiB0aGUgc2FtZSB3aW5k
b3cgYXMgdGhlIGluc3BlY3RlZCB2aWV3LAogICAgIC8vIHRoZW4gd2UgbmVlZCB0byByZW9wZW4g
dGhlIEluc3BlY3RvciB0byBnZXQgaXQgYXR0YWNoZWQgdG8gdGhlIHJpZ2h0IHdpbmRvdy4KICAg
ICAvLyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBkcmFnZ2luZyB0YWJzIHRvIGFub3RoZXIgd2luZG93
IGluIFNhZmFyaS4KLSAgICBpZiAobV9pc0F0dGFjaGVkICYmIG1faW5zcGVjdG9yVmlldy5nZXQo
KS53aW5kb3cgIT0gbV9wYWdlLT53a1ZpZXcoKS53aW5kb3cpIHsKKyAgICBpZiAobV9pc0F0dGFj
aGVkICYmIG1faW5zcGVjdG9yVmlldy5nZXQoKS53aW5kb3cgIT0gaW5zcGVjdGVkUGFnZSgpLT53
a1ZpZXcoKS53aW5kb3cpIHsKICAgICAgICAgcGxhdGZvcm1PcGVuKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2lu
ZG93RnJhbWVEaWRDaGFuZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0cmluZyAqZnJh
bWVTdHJpbmcgPSBOU1N0cmluZ0Zyb21SZWN0KFttX2luc3BlY3RvcldpbmRvdyBmcmFtZV0pOwot
ICAgIHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JXaW5kb3dG
cmFtZShmcmFtZVN0cmluZyk7CisgICAgaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVm
ZXJlbmNlcygpLnNldEluc3BlY3RvcldpbmRvd0ZyYW1lKGZyYW1lU3RyaW5nKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQg
Y3VycmVudERpbWVuc2lvbikKQEAgLTcyNyw0MCArNzI3LDQwIEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNp
b24pCiAgICAgaWYgKCFtX2lzQXR0YWNoZWQgfHwgIW1faXNWaXNpYmxlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAg
IFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAg
TlNSZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICBO
U1JlY3QgaW5zcGVjdG9yRnJhbWUgPSBOU1plcm9SZWN0OwogICAgIE5TUmVjdCBwYXJlbnRCb3Vu
ZHMgPSBbW2luc3BlY3RlZFZpZXcgc3VwZXJ2aWV3XSBib3VuZHNdOwogICAgIENHRmxvYXQgaW5z
cGVjdGVkVmlld1RvcCA9IE5TTWF4WShpbnNwZWN0ZWRWaWV3RnJhbWUpOwogCiAgICAgc3dpdGNo
IChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206
IHsKLSAgICAgICAgICAgIGlmICghY3VycmVudERpbWVuc2lvbikKLSAgICAgICAgICAgICAgICBj
dXJyZW50RGltZW5zaW9uID0gTlNIZWlnaHQoW21faW5zcGVjdG9yVmlldyBmcmFtZV0pOworICAg
IGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbTogeworICAgICAgICBpZiAoIWN1cnJlbnREaW1l
bnNpb24pCisgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNIZWlnaHQoW21faW5zcGVj
dG9yVmlldyBmcmFtZV0pOwogCi0gICAgICAgICAgICBDR0Zsb2F0IHBhcmVudEhlaWdodCA9IE5T
SGVpZ2h0KHBhcmVudEJvdW5kcyk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGluc3BlY3RvckhlaWdo
dCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5k
b3dIZWlnaHQoY3VycmVudERpbWVuc2lvbiwgcGFyZW50SGVpZ2h0KTsKKyAgICAgICAgQ0dGbG9h
dCBwYXJlbnRIZWlnaHQgPSBOU0hlaWdodChwYXJlbnRCb3VuZHMpOworICAgICAgICBDR0Zsb2F0
IGluc3BlY3RvckhlaWdodCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFp
bmVkQXR0YWNoZWRXaW5kb3dIZWlnaHQoY3VycmVudERpbWVuc2lvbiwgcGFyZW50SGVpZ2h0KTsK
IAotICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgaW5zcGVj
dGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIGlu
c3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgaW5zcGVjdG9ySGVpZ2h0LCBOU1dpZHRo
KHBhcmVudEJvdW5kcyksIGluc3BlY3RlZFZpZXdUb3AgLSBpbnNwZWN0b3JIZWlnaHQpOwotICAg
ICAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVj
dGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9CisgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3Bl
Y3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuCisgICAgICAgIGluc3Bl
Y3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgaW5zcGVjdG9ySGVpZ2h0LCBOU1dpZHRoKHBh
cmVudEJvdW5kcyksIGluc3BlY3RlZFZpZXdUb3AgLSBpbnNwZWN0b3JIZWlnaHQpOworICAgICAg
ICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChpbnNwZWN0ZWRWaWV3
RnJhbWUpLCBpbnNwZWN0b3JIZWlnaHQpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAg
ICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OiB7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRE
aW1lbnNpb24pCi0gICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TV2lkdGgoW21f
aW5zcGVjdG9yVmlldyBmcmFtZV0pOworICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OiB7
CisgICAgICAgIGlmICghY3VycmVudERpbWVuc2lvbikKKyAgICAgICAgICAgIGN1cnJlbnREaW1l
bnNpb24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAotICAgICAgICAgICAg
Q0dGbG9hdCBwYXJlbnRXaWR0aCA9IE5TV2lkdGgocGFyZW50Qm91bmRzKTsKLSAgICAgICAgICAg
IENHRmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpj
b25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERpbWVuc2lvbiwgcGFyZW50V2lk
dGgpOworICAgICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJlbnRCb3VuZHMp
OworICAgICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoKGN1cnJlbnREaW1lbnNpb24s
IHBhcmVudFdpZHRoKTsKIAotICAgICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlv
biBvZiB0aGUgaW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4g
QnV0IGRvbid0IHVzZSB0aGF0Ci0gICAgICAgICAgICAvLyB0b3AgcG9zaXRpb24gZm9yIHRoZSBp
bnNwZWN0b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMgd2lkZSBhcyB0
aGUgdGhlIGluc3BlY3RlZCB2aWV3LgotICAgICAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0g
TlNNYWtlUmVjdCgwLCAwLCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRW
aWV3VG9wKTsKLSAgICAgICAgICAgIENHRmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gaW5z
cGVjdGVkVmlldy5fdG9wQ29udGVudEluc2V0IC0gaW5zcGVjdGVkVmlldy5fdG90YWxIZWlnaHRP
ZkJhbm5lcnM7Ci0gICAgICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50
V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVu
dEJvdW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KKyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgaW5z
cGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4gQnV0IGRvbid0IHVz
ZSB0aGF0CisgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3RvciB2aWV3IHNp
bmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3aWRlIGFzIHRoZSB0aGUgaW5zcGVjdGVk
IHZpZXcuCisgICAgICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgcGFy
ZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7CisgICAgICAgIENH
RmxvYXQgaW5zZXRFeGNsdWRpbmdCYW5uZXJzID0gaW5zcGVjdGVkVmlldy5fdG9wQ29udGVudElu
c2V0IC0gaW5zcGVjdGVkVmlldy5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CisgICAgICAgIGluc3Bl
Y3RvckZyYW1lID0gTlNNYWtlUmVjdChwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCAwLCBp
bnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQocGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFu
bmVycyk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICB9CiAKICAgICBpZiAoTlNFcXVhbFJl
Y3RzKFttX2luc3BlY3RvclZpZXcgZnJhbWVdLCBpbnNwZWN0b3JGcmFtZSkgJiYgTlNFcXVhbFJl
Y3RzKFtpbnNwZWN0ZWRWaWV3IGZyYW1lXSwgaW5zcGVjdGVkVmlld0ZyYW1lKSkKQEAgLTc3Nywy
MSArNzc3LDIxIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURp
ZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCiAKIHVuc2lnbmVkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAgV0tWaWV3ICpp
bnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZp
ZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3
UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUuaGVpZ2h0KTsKIH0KIAogdW5zaWduZWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKQogewotICAgIFdL
VmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNw
ZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBOU1JlY3QgaW5zcGVj
dGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVjdC5zaXplLndpZHRoKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogewotICAgIFdLVmlldyAqaW5zcGVj
dGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0g
aW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQo
KSBzZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlOikgbmFtZTpO
U1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6aW5zcGVjdGVkVmlld107CiAK
ICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKQEAgLTgwNSwxMSArODA1LDExIEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKICAgICBDR0Zsb2F0IGN1cnJlbnRE
aW1lbnNpb247CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICBjYXNlIEF0
dGFjaG1lbnRTaWRlQm90dG9tOgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAg
ICAgICAgW21faW5zcGVjdG9yVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld1dpZHRoU2l6
YWJsZSB8IE5TVmlld01heFlNYXJnaW5dOwogICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gaW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQoKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNo
bWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEF1dG9yZXNpemlu
Z01hc2s6TlNWaWV3SGVpZ2h0U2l6YWJsZSB8IE5TVmlld01pblhNYXJnaW5dOwogICAgICAgICBj
dXJyZW50RGltZW5zaW9uID0gaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0
YWNoZWRXaWR0aCgpOwogICAgICAgICBicmVhazsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3Bh
Z2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2Uo
KS0+d2tWaWV3KCk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBy
ZW1vdmVPYnNlcnZlcjptX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIuZ2V0KCkgbmFtZTpOU1Zp
ZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6aW5zcGVjdGVkVmlld107CiAKICAg
ICBbbV9pbnNwZWN0b3JWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246036</attachid>
            <date>2015-02-04 09:37:32 -0800</date>
            <delta_ts>2015-02-04 14:11:21 -0800</delta_ts>
            <desc>Patch (fix iOS)</desc>
            <filename>bug-141135-20150204093732.patch</filename>
            <type>text/plain</type>
            <size>43482</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTg5MDg2M2M3YjAxMzFk
ODUzYWYxMTgzZjllMTQ0NWQ1MjAzMjg3MC4uOTA1N2MxMWQxMTljMGEwMjEwZDg1MDk0MjVmMDFj
YzEyNzhkMDE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0wMi0wNCAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgIG90aGVyIG1pc2NlbGxhbmVvdXMgY2xlYW51cHMsIHN1Y2ggYXMgbmFtaW5nIG1f
cGFnZQorICAgICAgICB0byBtX2luc3BlY3RlZFBhZ2UsIHVzaW5nIFJlZiBhbmQgdXNpbmcgYW4g
ZW51bSBjbGFzcyBmb3IgdGhlIGF0dGFjaG1lbnQgc2lkZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0luc3BlY3Rvci5jcHA6CisgICAgICAgIChXS0luc3BlY3RvckdldFBhZ2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhZ2VMZXZl
bE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JMZXZl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlR3Jv
dXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzRnJv
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkUmVs
YXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6
YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmRldGFjaCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNjb25uZWN0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlzcGF0Y2hNZXNzYWdlRnJv
bVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVh
Z2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3Jv
dXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
YWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6aW5zcGVjdG9yUGFnZUdyb3Vw
TGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBz
OjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp+V2ViSW5zcGVjdG9yUHJv
eHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVj
dG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Blbik6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQ
cm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhdHRhY2hS
aWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyIGF0dGFj
aEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUlu
c3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93
V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRh
Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2gp
OgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgY2xvc2VdKTogRGVs
ZXRlZC4KKwogMjAxNS0wMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCByZW1vdmVGaXJzdCh2YWx1ZSkgLyByZW1vdmVBbGwodmFsdWUpIG1ldGhvZHMg
dG8gV1RGOjpWZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0luc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNw
ZWN0b3IuY3BwCmluZGV4IDc1YTFjZDQ4MDdlNjM1OWJiNmFiMjk5Yzk5ZmU5MDIxM2QzMWY3Y2Uu
LjZiMDIyZTI5NDk1ZjIwZDAwZTAwY2U2NmYxZDY0YWUwNTdkMzA0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3BlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBXS1R5cGVJRCBXS0luc3BlY3RvckdldFR5cGVJRCgpCiAKIFdLUGFnZVJlZiBXS0luc3BlY3Rv
ckdldFBhZ2UoV0tJbnNwZWN0b3JSZWYgaW5zcGVjdG9yUmVmKQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwoaW5zcGVjdG9yUmVmKS0+cGFnZSgpKTsKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGluc3BlY3RvclJlZiktPmluc3BlY3RlZFBhZ2UoKSk7CiB9CiAKIGJvb2wgV0tJbnNwZWN0b3JJ
c0Nvbm5lY3RlZChXS0luc3BlY3RvclJlZiBpbnNwZWN0b3JSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXgg
YTc5MzNlNzFlYjhiNDkyZTllMjAyMTYzM2JmMjJhMzI4NjYwMDAzZC4uZTAxYjczNjBmMTQ5ODVh
OWRlN2U3YzRiMzQ1Mjk4MTI1ODJmODhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNTkxLDcgKzU5MSw3
IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgaWYgKHByaXYtPmluc3BlY3RvclZpZXcp
IHsKICAgICAgICAgR3RrQWxsb2NhdGlvbiBjaGlsZEFsbG9jYXRpb24gPSB2aWV3UmVjdDsKIAot
ICAgICAgICBpZiAocHJpdi0+aW5zcGVjdG9yQXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNp
ZGVCb3R0b20pIHsKKyAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFjaG1lbnRTaWRlID09
IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pIHsKICAgICAgICAgICAgIGludCBpbnNwZWN0b3JWaWV3
SGVpZ2h0ID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8aW50Pihwcml2LT5pbnNwZWN0b3JWaWV3U2l6
ZSksIGFsbG9jYXRpb24tPmhlaWdodCk7CiAgICAgICAgICAgICBjaGlsZEFsbG9jYXRpb24ueCA9
IDA7CiAgICAgICAgICAgICBjaGlsZEFsbG9jYXRpb24ueSA9IGFsbG9jYXRpb24tPmhlaWdodCAt
IGluc3BlY3RvclZpZXdIZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
c3BlY3RvclByb3h5LmNwcAppbmRleCAzYjA4ZTcwM2ZiYzRjMmQyODhlZmE5NzQ3N2IxNWQ1ZmUz
NmU5YzBlLi5kMjBkNWRlNjc3MGI0ZmUxNzcyMjJiNGM2YmQwNGFkYWE2ZTQyMDZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTU4LDkw
ICs1OCw0NSBAQCBjb25zdCB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRv
d0hlaWdodCA9IDQwMDsKIGNvbnN0IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFs
V2luZG93V2lkdGggPSAxMDAwOwogY29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
aXRpYWxXaW5kb3dIZWlnaHQgPSA2NTA7CiAKLWNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMg
ewotcHVibGljOgotICAgIHN0YXRpYyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaW5nbGV0b24o
KQotICAgIHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYkluc3BlY3RvclBhZ2VH
cm91cHM+IGluc3RhbmNlOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgaW5zcGVjdG9yTGV2ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0ZWRQYWdlR3JvdXAp
Ci0gICAgewotICAgICAgICByZXR1cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAoaW5zcGVjdGVkUGFn
ZUdyb3VwKSA/IGluc3BlY3RvclBhZ2VHcm91cExldmVsKGluc3BlY3RlZFBhZ2VHcm91cCkgKyAx
IDogMTsKLSAgICB9Ci0KLSAgICBib29sIGlzSW5zcGVjdG9yUGFnZUdyb3VwKFdlYlBhZ2VHcm91
cCYgZ3JvdXApCi0gICAgewotICAgICAgICByZXR1cm4gbV9wYWdlR3JvdXBMZXZlbC5jb250YWlu
cygmZ3JvdXApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGluc3BlY3RvclBhZ2VHcm91cExldmVs
KFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAgICAgICBBU1NFUlQoaXNJbnNwZWN0b3JQ
YWdlR3JvdXAoZ3JvdXApKTsKLSAgICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwuZ2V0KCZn
cm91cCk7Ci0gICAgfQotCi0gICAgV2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3JvdXBGb3JM
ZXZlbCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZSBsZXZlbCBpcyB0aGUg
a2V5IG9mIHRoZSBIYXNoTWFwLCBzbyBpdCBjYW5ub3QgYmUgMC4KLSAgICAgICAgQVNTRVJUKGxl
dmVsKTsKLQotICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBCeUxldmVsLmZpbmQo
bGV2ZWwpOwotICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBCeUxldmVsLmVuZCgp
KQotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLQotICAgICAgICBS
ZWZQdHI8V2ViUGFnZUdyb3VwPiBncm91cCA9IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cChsZXZl
bCk7Ci0gICAgICAgIG1fcGFnZUdyb3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdyb3VwLmdldCgpKTsK
LSAgICAgICAgbV9wYWdlR3JvdXBMZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxldmVsKTsKLSAgICAg
ICAgcmV0dXJuIGdyb3VwLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQYWdlR3JvdXA+IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCh1bnNpZ25lZCBs
ZXZlbCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdl
YlBhZ2VHcm91cDo6Y3JlYXRlKFN0cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91
cExldmVsJXVfXyIsIGxldmVsKSwgZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRlZiBOREVCVUcKLSAg
ICAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGlu
IGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgotICAgICAgICBwYWdlR3Jv
dXAtPnByZWZlcmVuY2VzKCkuc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLSAgICAg
ICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNv
bnNvbGVFbmFibGVkKHRydWUpOwotI2VuZGlmCi0KLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJl
bmNlcygpLnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKLQotICAgICAgICBy
ZXR1cm4gcGFnZUdyb3VwLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8
dW5zaWduZWQsIFJlZlB0cjxXZWJQYWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1hcDsKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8V2ViUGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91cExldmVs
TWFwOwordHlwZWRlZiBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIHVuc2lnbmVkPiBQYWdlTGV2ZWxN
YXA7CiAKLSAgICBQYWdlR3JvdXBCeUxldmVsTWFwIG1fcGFnZUdyb3VwQnlMZXZlbDsKLSAgICBQ
YWdlR3JvdXBMZXZlbE1hcCBtX3BhZ2VHcm91cExldmVsOwotfTsKK3N0YXRpYyBQYWdlTGV2ZWxN
YXAmIHBhZ2VMZXZlbE1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhZ2VMZXZl
bE1hcD4gbWFwOworICAgIHJldHVybiBtYXA7Cit9CiAKLVdlYkluc3BlY3RvclByb3h5OjpXZWJJ
bnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKK1dl
Ykluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3Rl
ZFBhZ2UpCisgICAgOiBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICNpZiBQTEFURk9S
TShNQUMpICYmIFdLX0FQSV9FTkFCTEVECiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNlbmRpZgog
ewotICAgIG1fbGV2ZWwgPSBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNw
ZWN0b3JMZXZlbChtX3BhZ2UtPnBhZ2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0
aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9
CiAKLVdlYlBhZ2VHcm91cCogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cCgp
IGNvbnN0Cit1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yTGV2ZWwoKSBjb25z
dAoreworICAgIGF1dG8gZmluZFJlc3VsdCA9IHBhZ2VMZXZlbE1hcCgpLmZpbmQoaW5zcGVjdGVk
UGFnZSgpKTsKKyAgICBpZiAoZmluZFJlc3VsdCAhPSBwYWdlTGV2ZWxNYXAoKS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZpbmRSZXN1bHQtPnZhbHVlICsgMTsKKworICAgIHJldHVybiAxOworfQor
CitTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIo
KSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24o
KS5pbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVjdG9yTGV2
ZWwoKSk7CiB9CiAKIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3Vw
KCktPnByZWZlcmVuY2VzKCk7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgcmV0
dXJuIG1faW5zcGVjdG9yUGFnZS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCkBAIC0xNTEsMTggKzEwNiwxOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5zcGVjdG9y
U2VydmVyOjpzaW5nbGV0b24oKS51bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rpb25QYWdl
SWQpOwogI2VuZGlmCiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwog
ICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBw
YWdlTGV2ZWxNYXAoKS5yZW1vdmUobV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UgPSBudWxscHRyOwogfQogCiAvLyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0b3JQcm94
eTo6aXNGcm9udCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBh
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlzRnJvbnQo
KTsKQEAgLTE3MCw3ICsxMjYsNyBAQCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zyb250KCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X3Nob3dNZXNzYWdlU2VudCkKQEAgLTE4MSwxMiArMTM3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmNvbm5lY3QoKQogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQo
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlmICghbV9w
YWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoaXNDb25uZWN0ZWQoKSkgewpAQCAtMjAyLDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNob3coKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsKLSAgICBp
ZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9pc1Zpc2libGUgPSBmYWxzZTsKQEAgLTIxMiw4NiArMTY4LDg2IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OmhpZGUoKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgp
CiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6Q2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRpZFJlbGF1bmNoSW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIAogICAg
IC8vIFdoZW4gZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2Fu
IGFzc3VtZSBpdCBpcyBkdXJpbmcgYSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2Vz
IHdlIHdvdWxkIGhhdmUgc2VudCB0byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJl
LXNlbnQuCiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1f
aW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIHsK
LSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYg
KCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJ
bnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjphdHRhY2hCb3R0b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZUJv
dHRvbSk7CisgICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphdHRhY2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFjaG1lbnRT
aWRlUmlnaHQpOworICAgIGF0dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsKLSAgICBp
ZiAoIW1fcGFnZSB8fCAhY2FuQXR0YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UgfHwg
IWNhbkF0dGFjaCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSB0cnVl
OwogICAgIG1fYXR0YWNobWVudFNpZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFnZVByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHNpZGUpKTsKIAogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVj
dG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0
dGFjaGVkKHRydWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lk
ZSkgewotICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50
U2lkZTo6Qm90dG9tOgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJp
Z2h0OgorICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRS
aWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMzAxLDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRh
Y2htZW50U2lkZSBzaWRlKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSBmYWxzZTsKQEAgLTMwOSw3ICsyNjUsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAg
ICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQo
ZmFsc2UpOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwpAQCAt
MzI5LDIzICsyODUsMTggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5k
b3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xl
UGFnZVByb2ZpbGluZygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAg
ICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9w
UGFnZVByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2Zp
bGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJv
ZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBX
ZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQ
YWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5Ojpp
c0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBXZWJJbnNw
ZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChwYWdlLnBh
Z2VHcm91cCgpKTsKLX0KLQogV2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNw
ZWN0b3JQcm9jZXNzUG9vbCgpCiB7CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2VzcyBwb29s
IHJlbW92ZXMgdXMgZnJvbSB0aGUgbWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTksNiArMzEw
LDExIEBAIFdlYlByb2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKQogICAgIHJldHVybiAqcHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9y
UHJveHk6OmlzSW5zcGVjdG9yUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0
dXJuIHBhZ2VMZXZlbE1hcCgpLmNvbnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGljIGJvb2wg
aXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5z
cGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCByZXF1
ZXN0VVJMKFVSTCgpLCB0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgp
KTsKQEAgLTQwOSw3ICszNjUsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1w
bChsaXN0ZW5lclJlZiktPmlnbm9yZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBp
biB0aGUgaW5zcGVjdGVkIHBhZ2UuCi0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9h
ZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2Vi
SW5zcGVjdG9yUHJveHktPmluc3BlY3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NF
UlZFUikKQEAgLTQyMSwxNyArMzc3LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJs
ZVJlbW90ZUluc3BlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9u
dGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlJlbW90ZUZyb250ZW5kQ29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5l
Y3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpSZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3Rl
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2Fn
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NSw2ICs0MDEs
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgp
CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHBhZ2VM
ZXZlbE1hcCgpLnNldChtX2luc3BlY3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOworCiAgICAg
V0tQYWdlUG9saWN5Q2xpZW50VjEgcG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMg
fSwKICAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwCkBAIC01MDEsMTQgKzQ1OSwxNCBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdlU2V0UGFn
ZVBvbGljeUNsaWVudCh0b0FQSShtX2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2Up
OwogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwg
JmxvYWRlckNsaWVudC5iYXNlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRo
aXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jh
c2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3Rv
clByb3h5IG1lc3NhZ2VzCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQ
YWdlKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gs
IGJvb2wgdW5kZXJUZXN0KQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0
ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFn
ZSgpOwpAQCAtNTIwLDIyICs0NzgsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBt
X3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29u
bmVjdGlvbklkZW50aWZpZXI7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rp
b25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklk
ZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAgICAg
IG1fY2FuQXR0YWNoID0gY2FuQXR0YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRP
cGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0
dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2ht
ZW50U2lkZSgpKTsKIAotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogCiAgICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRj
aCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJv
dHRvbToKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAg
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVS
aWdodDoKKyAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAg
ICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTYxLDcgKzUxOSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAg
IG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAyZDgy
MmY1MmEyOTE2ZDRiOGRmYjUxYTNhNTlhNjIwMjEwYzBjNWYyLi4wNzE3ZGQzYWMwMjc3N2EzZGQy
NmE5MmI4YTEwYmVlYWI0NTE3NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtNjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsK
IGNsYXNzIFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVudW0gQXR0
YWNobWVudFNpZGUgewotICAgIEF0dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFjaG1lbnRT
aWRlUmlnaHQKK2VudW0gY2xhc3MgQXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwKKyAgICBS
aWdodAogfTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9y
UHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFnZSkpOwog
ICAgIH0KIAogICAgIH5XZWJJbnNwZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwotICAgIFdl
YlBhZ2VQcm94eSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYlBhZ2VQ
cm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQog
CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdl
OyB9CiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9p
ZCBhdHRhY2hCb3R0b20oKTsKLSAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFj
aG1lbnRTaWRlQm90dG9tKTsKKyAgICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFj
aG1lbnRTaWRlOjpCb3R0b20pOwogICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lkIHNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Byb2ZpbGluZ1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5n
UGFnZTsgfQogICAgIHZvaWQgdG9nZ2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3RhdGljIGJv
b2wgaXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQcm9jZXNz
UG9vbCYgaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3Rv
clBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJ
bnNwZWN0b3JQcm94eSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VV
UkwoKSBjb25zdDsKQEAgLTE5Miw5ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3Bl
bigpOwogCi0gICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBncm91cCBp
ZGVudGlmaWVyLCBub3QgYW4gaW5zdGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAgICAvLyBk
aXJlY3RseSBwcm92aWRlIGEgcGFnZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNlcyBhcmUg
bm90IG5lY2Vzc2FyeSB0byBjb21wdXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAqIGluc3Bl
Y3RvclBhZ2VHcm91cCgpIGNvbnN0OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwgaXMgdXNl
ZCB0byBnaXZlIGRpZmZlcmVudCBwcmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3RvcgorICAgIC8v
IGxldmVsIGJ5IHNldHRpbmcgYSBwZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVyLgorICAg
IHVuc2lnbmVkIGluc3BlY3RvckxldmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3BlY3RvclBh
Z2VHcm91cElkZW50aWZpZXIoKSBjb25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5zcGVjdG9y
UGFnZVByZWZlcmVuY2VzKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KEVGTCkKQEAgLTIxMiw3ICsyMTMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBpbml0aWFsV2luZG93V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRp
YWxXaW5kb3dIZWlnaHQ7CiAKLSAgICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0cn07Cisg
ICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdlYlBhZ2VQ
cm94eSogbV9pbnNwZWN0b3JQYWdlIHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Qg
e2ZhbHNlfTsKQEAgLTIyMywxNCArMjI0LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd01l
c3NhZ2VTZW50IHtmYWxzZX07CiAgICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250IHtm
YWxzZX07CiAKLSAgICAvLyBUaGUgZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUg
c2FtZSBQYWdlR3JvdXAuIEhhdmluZwotICAgIC8vIGFsbCB0aGUgaW5zcGVjdG9ycyBpbiB0aGUg
c2FtZSBncm91cCB3aWxsIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWJ1ZwotICAgIC8vIHRoZSBp
bnNwZWN0b3IgY29kZSwgc28gd2UgdXNlIHRoZSBsZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdl
IGdyb3Vwcy4KLSAgICB1bnNpZ25lZCBtX2xldmVsOwotICAgIAogICAgIElQQzo6QXR0YWNobWVu
dCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwogCi0gICAgQXR0YWNobWVudFNpZGUgbV9hdHRhY2ht
ZW50U2lkZSB7QXR0YWNobWVudFNpZGVCb3R0b219OworICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0
YWNobWVudFNpZGUge0F0dGFjaG1lbnRTaWRlOjpCb3R0b219OwogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBXS19BUElfRU5BQkxFRAogICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLV2ViVmll
dz4gbV9pbnNwZWN0b3JWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJh
NTMwOWM4YjYzMmE5M2VjOGVjLi44MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDll
ZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3Rv
clByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3Bl
Y3RvclByb3h5RWZsLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpjcmVhdGVJbnNwZWN0b3JXaW5kb3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2Up
OworICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAg
ICAgY29uc3QgY2hhciogZW5naW5lID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBA
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9
IHRvQVBJKCZpbnNwZWN0b3JQcm9jZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1Bh
Z2VHcm91cCA9IHRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tHcm91cElkZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgV0tQYWdlR3JvdXBSZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdp
dGhJZGVudGlmaWVyKHdrR3JvdXBJZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9y
VmlldyA9IEVXS1ZpZXdDcmVhdGUod2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19n
ZXQobV9pbnNwZWN0b3JXaW5kb3cpLCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tW
aWV3ID0gRVdLVmlld0dldFdLVmlldyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBl
ZTY3MjcxMmQ4YjU2YmFhOWM1NzA0NDNhMzA2NDJlMWZiODczMjA5Li43MGIxY2ExNmRkN2U3NzNk
ZTE2ZjBhY2FjNzA2NDZiZjM0ZGIxMjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcApAQCAtNTgsOSArNTgsMTAgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbGl6ZUluc3BlY3RvckNsaWVudEd0ayhjb25z
dCBXS0luc3BlY3RvckNsaWVudEd0a0IKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlKTsK
KyAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmll
dyk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNy
ZWF0ZSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSwgbnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3Vw
KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91
cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSwgZmFsc2UsIGZhbHNlKTsK
KyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRl
KCZpbnNwZWN0b3JQcm9jZXNzUG9vbCgpLCBudWxscHRyLCBwYWdlR3JvdXAsIG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVj
dG9yVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAg
ICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSht
X2luc3BlY3RvclZpZXcpKTsKIH0KQEAgLTY4LDkgKzY5LDkgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmRvY2tCdXR0b25DbGlja2VkKEd0a1dpZGdldCogYnV0dG9uLCBXZWJJbnNw
ZWN0b3JQcm94eSogaW5zcGVjdG9yKQogewogICAgIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5t
X2RvY2tCb3R0b21CdXR0b24pCi0gICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRT
aWRlQm90dG9tKTsKKyAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGU6OkJv
dHRvbSk7CiAgICAgZWxzZSBpZiAoYnV0dG9uID09IGluc3BlY3Rvci0+bV9kb2NrUmlnaHRCdXR0
b24pCi0gICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAg
ICAgICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdygpCiAgICAgQVNTRVJUKCFt
X2luc3BlY3RvcldpbmRvdyk7CiAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25l
dyhHVEtfV0lORE9XX1RPUExFVkVMKTsKIAotICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1Bh
cmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAg
ICBHdGtXaWRnZXQqIGluc3BlY3RlZFZpZXdQYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZl
bChpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSk7CiAgICAgaWYgKFdlYkNvcmU6OndpZGdl
dElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyhpbnNwZWN0ZWRWaWV3UGFyZW50KSkKICAgICAgICAg
Z3RrX3dpbmRvd19zZXRfdHJhbnNpZW50X2ZvcihHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93
KSwgR1RLX1dJTkRPVyhpbnNwZWN0ZWRWaWV3UGFyZW50KSk7CiAKQEAgLTIxOSwxMiArMjIwLDEy
IEBAIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0CiAK
IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdo
dCgpCiB7Ci0gICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWlnaHQobV9wYWdl
LT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVp
Z2h0KGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKTsKIH0KIAogdW5zaWduZWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgoKQogewotICAgIHJldHVy
biBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfd2lkdGgobV9wYWdlLT52aWV3V2lkZ2V0KCkpOwor
ICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfd2lkdGgoaW5zcGVjdGVkUGFnZSgp
LT52aWV3V2lkZ2V0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaCgpCkBAIC0yNDEsNyArMjQyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2goKQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0
aCA9IDc1MDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0
ID0gMjUwOwogCi0gICAgaWYgKG1fYXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0
b20pIHsKKyAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9t
KSB7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5z
cGVjdGVkV2luZG93SGVpZ2h0KCkgKiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChzdGQ6Om1heChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRl
ZmF1bHRBdHRhY2hlZFNpemUsIG1heGltdW1BdHRhY2hlZEhlaWdodCkpKTsKICAgICB9IGVsc2Ug
ewpAQCAtMjUyLDEzICsyNTMsMTMgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1B
dHRhY2goKQogICAgIGlmIChtX2NsaWVudC5hdHRhY2godGhpcykpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJfVklFV19C
QVNFKG1fcGFnZS0+dmlld1dpZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3LCBtX2F0dGFjaG1lbnRT
aWRlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUFkZFdlYkluc3BlY3RvcihXRUJLSVRfV0VCX1ZJ
RVdfQkFTRShpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSksIG1faW5zcGVjdG9yVmlldywg
bV9hdHRhY2htZW50U2lkZSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KG1faW5zcGVjdG9yVmlldyk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBp
ZiAoIW1fcGFnZS0+aXNWYWxpZCgpKQorICAgIGlmICghaW5zcGVjdGVkUGFnZSgpLT5pc1ZhbGlk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JW
aWV3ID0gbV9pbnNwZWN0b3JWaWV3OwpAQCAtMjgwLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRhY2hlZEhlaWdo
dCh0aGlzLCBoZWlnaHQpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1Np
emUoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOwor
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVX
X0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOwogfQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWdu
ZWQgd2lkdGgpCkBAIC0yODksNyArMjkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRhY2hlZFdpZHRoKHRoaXMsIHdpZHRoKTsK
LSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklF
V19CQVNFKG1fcGFnZS0+dmlld1dpZGdldCgpKSwgd2lkdGgpOworICAgIHdlYmtpdFdlYlZpZXdC
YXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFn
ZSgpLT52aWV3V2lkZ2V0KCkpLCB3aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDA1MTIzNzdi
NWZkNmNiNTExYTViOTRkZDdhNDMyNTc5MmM1N2U1YTIuLmNiZWFmZTNjOTE0YjNkYTY0MWVkMmMz
YTYyZTc4NmM1NjY0MDE2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHdlYlZpZXdDbG9zZVRpbWVvdXQgPSA2MDsKIAogLSAoSUJBY3Rpb24p
YXR0YWNoUmlnaHQ6KGlkKXNlbmRlcgogewotICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclBy
b3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAg
IHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNo
KEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiB9CiAKIC0gKElCQWN0aW9uKWF0dGFjaEJvdHRvbToo
aWQpc2VuZGVyCiB7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVjdG9yUHJveHkqPihfaW5zcGVj
dG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGVCb3R0b20pOworICAgIHN0YXRpY19jYXN0
PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRT
aWRlOjpCb3R0b20pOwogfQogCiAtICh2b2lkKWNsb3NlCkBAIC0yODUsNyArMjg1LDcgQEAgc3Rh
dGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICAgICAgICAgIFdLUmVsZWFzZShmaWxlVVJMcyk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lckNhbmNl
bChsaXN0ZW5lcik7Ci0gICAgICAgIAorCiAgICAgICAgIFdLUmVsZWFzZShsaXN0ZW5lcik7CiAg
ICAgfV07CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBOU1JlY3Qgd2luZG93RnJhbWUgPSBOU01ha2VSZWN0
KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlhbFdpbmRvd0hlaWdodCk7CiAKICAgICAv
LyBSZXN0b3JlIHRoZSBzYXZlZCB3aW5kb3cgZnJhbWUsIGlmIHRoZXJlIHdhcyBvbmUuCi0gICAg
TlNTdHJpbmcgKnNhdmVkV2luZG93RnJhbWVTdHJpbmcgPSBwYWdlKCktPnBhZ2VHcm91cCgpLnBy
ZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKKyAgICBOU1N0cmluZyAqc2F2ZWRX
aW5kb3dGcmFtZVN0cmluZyA9IGluc3BlY3RlZFBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5j
ZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOwogICAgIE5TUmVjdCBzYXZlZFdpbmRvd0ZyYW1l
ID0gTlNSZWN0RnJvbVN0cmluZyhzYXZlZFdpbmRvd0ZyYW1lU3RyaW5nKTsKICAgICBpZiAoIU5T
SXNFbXB0eVJlY3Qoc2F2ZWRXaW5kb3dGcmFtZSkpCiAgICAgICAgIHdpbmRvd0ZyYW1lID0gc2F2
ZWRXaW5kb3dGcmFtZTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp1cGRhdGVJbnNwZWN0b3JXaW5kb3dUaXRsZSgpIGNvbnN0CiAKIFdlYlBhZ2VQcm94eSogV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiB7Ci0gICAgQVNT
RVJUKG1fcGFnZSk7CisgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKICAgICBtX2Nsb3Nl
VGltZXIuc3RvcCgpOwogCkBAIC00NjEsMjAgKzQ2MSwyMCBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogCiAgICAgTlNSZWN0
IGluaXRpYWxSZWN0OwogICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKLSAgICAgICAgTlNSZWN0IGlu
c3BlY3RlZFZpZXdGcmFtZSA9IG1fcGFnZS0+d2tWaWV3KCkuZnJhbWU7CisgICAgICAgIE5TUmVj
dCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpLmZyYW1lOwog
CiAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlQm90dG9tOgorICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206CiAg
ICAgICAgICAgICBpbml0aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChpbnNwZWN0
ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2hl
ZEhlaWdodCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEF0dGFjaG1lbnRT
aWRlUmlnaHQ6CisgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAg
ICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNl
cygpLmluc3BlY3RvckF0dGFjaGVkV2lkdGgoKSwgTlNIZWlnaHQoaW5zcGVjdGVkVmlld0ZyYW1l
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRp
YWxXaW5kb3dIZWlnaHQpOwogCi0gICAgICAgIE5TU3RyaW5nICp3aW5kb3dGcmFtZVN0cmluZyA9
IHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgp
OworICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcgPSBpbnNwZWN0ZWRQYWdlKCkt
PnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKICAgICAg
ICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNSZWN0RnJvbVN0cmluZyh3aW5kb3dGcmFtZVN0cmlu
Zyk7CiAgICAgICAgIGlmICghTlNJc0VtcHR5UmVjdCh3aW5kb3dGcmFtZSkpCiAgICAgICAgICAg
ICBpbml0aWFsUmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVjdEZvckZyYW1lUmVjdDp3aW5kb3dG
cmFtZSBzdHlsZU1hc2s6d2luZG93U3R5bGVNYXNrXTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBXZWJQ
YWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2Uo
KQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMuX2FsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9
IFlFUzsKICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogOjpXZWJLaXQ6OndyYXBw
ZXIoaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSldOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRHcm91
cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwKCktPmlkZW50aWZpZXIoKV07CisgICAgW2Nv
bmZpZ3VyYXRpb24gX3NldEdyb3VwSWRlbnRpZmllcjppbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlm
aWVyKCldOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9y
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwpAQCAt
NjEwLDcgKzYxMCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQnJpbmdUb0Zy
b250KCkKICAgICAvLyBJZiB0aGUgV2ViIEluc3BlY3RvciBpcyBubyBsb25nZXIgaW4gdGhlIHNh
bWUgd2luZG93IGFzIHRoZSBpbnNwZWN0ZWQgdmlldywKICAgICAvLyB0aGVuIHdlIG5lZWQgdG8g
cmVvcGVuIHRoZSBJbnNwZWN0b3IgdG8gZ2V0IGl0IGF0dGFjaGVkIHRvIHRoZSByaWdodCB3aW5k
b3cuCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZHJhZ2dpbmcgdGFicyB0byBhbm90aGVy
IHdpbmRvdyBpbiBTYWZhcmkuCi0gICAgaWYgKG1faXNBdHRhY2hlZCAmJiBtX2luc3BlY3RvclZp
ZXcuZ2V0KCkud2luZG93ICE9IG1fcGFnZS0+d2tWaWV3KCkud2luZG93KSB7CisgICAgaWYgKG1f
aXNBdHRhY2hlZCAmJiBtX2luc3BlY3RvclZpZXcuZ2V0KCkud2luZG93ICE9IGluc3BlY3RlZFBh
Z2UoKS0+d2tWaWV3KCkud2luZG93KSB7CiAgICAgICAgIHBsYXRmb3JtT3BlbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNzE5LDcgKzcxOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNTdHJp
bmcgKmZyYW1lU3RyaW5nID0gTlNTdHJpbmdGcm9tUmVjdChbbV9pbnNwZWN0b3JXaW5kb3cgZnJh
bWVdKTsKLSAgICBwYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9y
V2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOworICAgIGluc3BlY3RlZFBhZ2UoKS0+cGFnZUdyb3Vw
KCkucHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JXaW5kb3dGcmFtZShmcmFtZVN0cmluZyk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShD
R0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCkBAIC03MjcsNDAgKzcyNyw0MCBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50
RGltZW5zaW9uKQogICAgIGlmICghbV9pc0F0dGFjaGVkIHx8ICFtX2lzVmlzaWJsZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXco
KTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygp
OwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07
CiAgICAgTlNSZWN0IGluc3BlY3RvckZyYW1lID0gTlNaZXJvUmVjdDsKICAgICBOU1JlY3QgcGFy
ZW50Qm91bmRzID0gW1tpbnNwZWN0ZWRWaWV3IHN1cGVydmlld10gYm91bmRzXTsKICAgICBDR0Zs
b2F0IGluc3BlY3RlZFZpZXdUb3AgPSBOU01heFkoaW5zcGVjdGVkVmlld0ZyYW1lKTsKIAogICAg
IHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
Qm90dG9tOiB7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNpb24pCi0gICAgICAgICAg
ICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFttX2luc3BlY3RvclZpZXcgZnJhbWVd
KTsKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206IHsKKyAgICAgICAgaWYgKCFjdXJy
ZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFtt
X2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAotICAgICAgICAgICAgQ0dGbG9hdCBwYXJlbnRIZWln
aHQgPSBOU0hlaWdodChwYXJlbnRCb3VuZHMpOwotICAgICAgICAgICAgQ0dGbG9hdCBpbnNwZWN0
b3JIZWlnaHQgPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFj
aGVkV2luZG93SGVpZ2h0KGN1cnJlbnREaW1lbnNpb24sIHBhcmVudEhlaWdodCk7CisgICAgICAg
IENHRmxvYXQgcGFyZW50SGVpZ2h0ID0gTlNIZWlnaHQocGFyZW50Qm91bmRzKTsKKyAgICAgICAg
Q0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpj
b25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJlbnREaW1lbnNpb24sIHBhcmVudEhl
aWdodCk7CiAKLSAgICAgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhl
IGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuCi0gICAgICAg
ICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAsIGluc3BlY3RvckhlaWdodCwg
TlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9wIC0gaW5zcGVjdG9ySGVpZ2h0
KTsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRo
KGluc3BlY3RlZFZpZXdGcmFtZSksIGluc3BlY3RvckhlaWdodCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQorICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRo
ZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgorICAgICAg
ICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAsIGluc3BlY3RvckhlaWdodCwgTlNX
aWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9wIC0gaW5zcGVjdG9ySGVpZ2h0KTsK
KyAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVj
dGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
Ci0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDogewotICAgICAgICAgICAgaWYgKCFj
dXJyZW50RGltZW5zaW9uKQotICAgICAgICAgICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU1dp
ZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpS
aWdodDogeworICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNpb24pCisgICAgICAgICAgICBjdXJy
ZW50RGltZW5zaW9uID0gTlNXaWR0aChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CiAKLSAgICAg
ICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRoKHBhcmVudEJvdW5kcyk7Ci0gICAg
ICAgICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoKGN1cnJlbnREaW1lbnNpb24sIHBh
cmVudFdpZHRoKTsKKyAgICAgICAgQ0dGbG9hdCBwYXJlbnRXaWR0aCA9IE5TV2lkdGgocGFyZW50
Qm91bmRzKTsKKyAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JXaWR0aCA9IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dXaWR0aChjdXJyZW50RGlt
ZW5zaW9uLCBwYXJlbnRXaWR0aCk7CiAKLSAgICAgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0b3Ag
cG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxs
IHdvcmsuIEJ1dCBkb24ndCB1c2UgdGhhdAotICAgICAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZv
ciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhlIGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdp
ZGUgYXMgdGhlIHRoZSBpbnNwZWN0ZWQgdmlldy4KLSAgICAgICAgICAgIGluc3BlY3RlZFZpZXdG
cmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgcGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0aCwgaW5z
cGVjdGVkVmlld1RvcCk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5nQmFubmVy
cyA9IGluc3BlY3RlZFZpZXcuX3RvcENvbnRlbnRJbnNldCAtIGluc3BlY3RlZFZpZXcuX3RvdGFs
SGVpZ2h0T2ZCYW5uZXJzOwotICAgICAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0
KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIDAsIGluc3BlY3RvcldpZHRoLCBOU0hlaWdo
dChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5uZXJzKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CisgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2Yg
dGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuIEJ1dCBk
b24ndCB1c2UgdGhhdAorICAgICAgICAvLyB0b3AgcG9zaXRpb24gZm9yIHRoZSBpbnNwZWN0b3Ig
dmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMgd2lkZSBhcyB0aGUgdGhlIGlu
c3BlY3RlZCB2aWV3LgorICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAs
IDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGluc3BlY3RlZFZpZXdUb3ApOworICAg
ICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5nQmFubmVycyA9IGluc3BlY3RlZFZpZXcuX3RvcENv
bnRlbnRJbnNldCAtIGluc3BlY3RlZFZpZXcuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOworICAgICAg
ICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50V2lkdGggLSBpbnNwZWN0b3JXaWR0
aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVudEJvdW5kcykgLSBpbnNldEV4Y2x1
ZGluZ0Jhbm5lcnMpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgfQogCiAgICAgaWYgKE5T
RXF1YWxSZWN0cyhbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSwgaW5zcGVjdG9yRnJhbWUpICYmIE5T
RXF1YWxSZWN0cyhbaW5zcGVjdGVkVmlldyBmcmFtZV0sIGluc3BlY3RlZFZpZXdGcmFtZSkpCkBA
IC03NzcsMjEgKzc3NywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3
RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9uKQogCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKQogewotICAgIFdL
VmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNw
ZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBOU1JlY3QgaW5zcGVj
dGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVjdC5zaXplLmhlaWdodCk7CiB9CiAKIHVuc2ln
bmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd1dpZHRoKCkKIHsK
LSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmll
dyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgTlNSZWN0
IGluc3BlY3RlZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5zcGVjdGVkVmlld1JlY3Quc2l6ZS53aWR0aCk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKIHsKLSAgICBXS1ZpZXcg
Kmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVk
VmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX2luc3BlY3RvclByb3h5T2JqQ0FkYXB0
ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZTop
IG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Omluc3BlY3RlZFZp
ZXddOwogCiAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7CkBAIC04MDUsMTEgKzgwNSwxMSBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiAgICAgQ0dGbG9hdCBj
dXJyZW50RGltZW5zaW9uOwogCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7Ci0gICAg
Y2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0
b206CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdX
aWR0aFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luXTsKICAgICAgICAgY3VycmVudERpbWVuc2lv
biA9IGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkSGVpZ2h0KCk7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgW21faW5zcGVjdG9yVmlldyBzZXRBdXRv
cmVzaXppbmdNYXNrOk5TVmlld0hlaWdodFNpemFibGUgfCBOU1ZpZXdNaW5YTWFyZ2luXTsKICAg
ICAgICAgY3VycmVudERpbWVuc2lvbiA9IGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3Bl
Y3RvckF0dGFjaGVkV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CkBAIC04MjQsNyArODI0LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiB7Ci0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3
ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0
ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIG5h
bWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Omluc3BlY3RlZFZpZXdd
OwogCiAgICAgW21faW5zcGVjdG9yVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsK
</data>
<flag name="review"
          id="270976"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246103</attachid>
            <date>2015-02-05 08:51:56 -0800</date>
            <delta_ts>2015-02-05 08:51:56 -0800</delta_ts>
            <desc>Fix GTK,EFL</desc>
            <filename>bug-141135-20150205085155.patch</filename>
            <type>text/plain</type>
            <size>45418</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzFkNmViN2UxZGM0MGE0
ZTg0YjJkN2U2MjcwMDFlNjkyZjQzODFkMS4uODU1ODhhMGZlNGQ2MmE5NjI0MzIxZGRkZTlhZDdk
ODEzYjllMDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxNS0wMi0wNSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgb3RoZXIgbWlzY2VsbGFuZW91cyBjbGVhbnVwcywgc3VjaCBhcyBuYW1pbmcgbV9w
YWdlCisgICAgICAgIHRvIG1faW5zcGVjdGVkUGFnZSwgdXNpbmcgUmVmIGFuZCB1c2luZyBhbiBl
bnVtIGNsYXNzIGZvciB0aGUgYXR0YWNobWVudCBzaWRlLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdLSW5zcGVjdG9yR2V0UGFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAocmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJH
dGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhZ2VMZXZlbE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpXZWJJbnNwZWN0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JMZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmlzRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OmRldGFjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5z
cGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFn
ZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vw
czo6aW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2VHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojp+V2ViSW5zcGVjdG9yUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3Bl
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Bl
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVk
V2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1E
ZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlciBhdHRhY2hSaWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQ
cm94eU9iakNBZGFwdGVyIGF0dGFjaEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVj
dGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgY2xvc2VdKTogRGVsZXRlZC4KKwogMjAxNS0wMi0wNCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgY29weWluZyBzdGQ6OmZ1bmN0aW9u
cyBhY3Jvc3MgdGhyZWFkcyBpbiBOZXR3b3JrQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCA3NWExY2Q0ODA3ZTYzNTli
YjZhYjI5OWM5OWZlOTAyMTNkMzFmN2NlLi42YjAyMmUyOTQ5NWYyMGQwMGUwMGNlNjZmMWQ2NGFl
MDU3ZDMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tJbnNwZWN0b3JHZXRUeXBlSUQo
KQogCiBXS1BhZ2VSZWYgV0tJbnNwZWN0b3JHZXRQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rv
clJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGluc3BlY3RvclJlZiktPnBhZ2UoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pbnNwZWN0ZWRQYWdlKCkp
OwogfQogCiBib29sIFdLSW5zcGVjdG9ySXNDb25uZWN0ZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGE3OTMzZTcxZWI4YjQ5MmU5ZTIwMjE2MzNiZjIyYTMy
ODY2MDAwM2QuLmUwMWI3MzYwZjE0OTg1YTlkZTdlN2M0YjM0NTI5ODEyNTgyZjg4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJW
aWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAg
IGlmIChwcml2LT5pbnNwZWN0b3JWaWV3KSB7CiAgICAgICAgIEd0a0FsbG9jYXRpb24gY2hpbGRB
bGxvY2F0aW9uID0gdmlld1JlY3Q7CiAKLSAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CisgICAgICAgIGlmIChwcml2LT5p
bnNwZWN0b3JBdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAg
ICAgICAgICBpbnQgaW5zcGVjdG9yVmlld0hlaWdodCA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGlu
dD4ocHJpdi0+aW5zcGVjdG9yVmlld1NpemUpLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwogICAgICAg
ICAgICAgY2hpbGRBbGxvY2F0aW9uLnggPSAwOwogICAgICAgICAgICAgY2hpbGRBbGxvY2F0aW9u
LnkgPSBhbGxvY2F0aW9uLT5oZWlnaHQgLSBpbnNwZWN0b3JWaWV3SGVpZ2h0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVj
dG9yU2VydmVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAKaW5kZXggOGVlMTYyOGZhMzZhYjA4NGRl
MGVkNDI5M2VkN2IxNzFmMzQ0Njg5MC4uMjFlZmE5Y2E5YmY4YmZmNjMyZmYzMGFjYmQ3N2RhOGU4
MzViZmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZl
Y3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogICAgIENsaWVudE1hcDo6
aXRlcmF0b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CiAgICAgZm9yIChDbGllbnRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFBhZ2UoKTsKICAgICAg
ICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgieyBcImlk
XCI6ICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKaW5kZXgg
NTAxMTY2NmIzZjI0MGI2OTdkMTFkNzcxODcxNzk3NWVhM2M3MDY0OS4uNTlkNzIwMzI3ZTU0ZDY3
MzgwMTFhOTNjYWRmZDY5NTliMzU1NjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0
b3JTZXJ2ZXJHdGsuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVy
OjpidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7CiAgICAgQ2xpZW50TWFwOjppdGVyYXRv
ciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKICAgICBmb3IgKENsaWVudE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gaXQtPnZhbHVlLT5wYWdlKCk7CisgICAgICAgIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+aW5zcGVjdGVkUGFnZSgpOwogICAgICAgICBpZiAo
aXQgIT0gbV9jbGllbnRNYXAuYmVnaW4oKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7IFwiaWRcIjogIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCAzYjA4ZTcwM2ZiYzRjMmQyODhlZmE5NzQ3N2IxNWQ1ZmUzNmU5YzBlLi5kMjBkNWRlNjc3MGI0
ZmUxNzcyMjJiNGM2YmQwNGFkYWE2ZTQyMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTU4LDkwICs1OCw0NSBAQCBjb25zdCB1bnNp
Z25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0
IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAxMDAwOwog
Y29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2
NTA7CiAKLWNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMgewotcHVibGljOgotICAgIHN0YXRp
YyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdlYkluc3BlY3RvclBhZ2VHcm91cHM+IGluc3RhbmNlOwotICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2
ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0ZWRQYWdlR3JvdXApCi0gICAgewotICAgICAgICByZXR1
cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAoaW5zcGVjdGVkUGFnZUdyb3VwKSA/IGluc3BlY3RvclBh
Z2VHcm91cExldmVsKGluc3BlY3RlZFBhZ2VHcm91cCkgKyAxIDogMTsKLSAgICB9Ci0KLSAgICBi
b29sIGlzSW5zcGVjdG9yUGFnZUdyb3VwKFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9wYWdlR3JvdXBMZXZlbC5jb250YWlucygmZ3JvdXApOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIGluc3BlY3RvclBhZ2VHcm91cExldmVsKFdlYlBhZ2VHcm91cCYgZ3JvdXAp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNJbnNwZWN0b3JQYWdlR3JvdXAoZ3JvdXApKTsKLSAg
ICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwuZ2V0KCZncm91cCk7Ci0gICAgfQotCi0gICAg
V2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCh1bnNpZ25lZCBsZXZlbCkK
LSAgICB7Ci0gICAgICAgIC8vIFRoZSBsZXZlbCBpcyB0aGUga2V5IG9mIHRoZSBIYXNoTWFwLCBz
byBpdCBjYW5ub3QgYmUgMC4KLSAgICAgICAgQVNTRVJUKGxldmVsKTsKLQotICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBCeUxldmVsLmZpbmQobGV2ZWwpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBCeUxldmVsLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLQotICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBn
cm91cCA9IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cChsZXZlbCk7Ci0gICAgICAgIG1fcGFnZUdy
b3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdyb3VwLmdldCgpKTsKLSAgICAgICAgbV9wYWdlR3JvdXBM
ZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxldmVsKTsKLSAgICAgICAgcmV0dXJuIGdyb3VwLmdldCgp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+
IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAg
IFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0
cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwg
ZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxv
cGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0
IGNoYW5naW5nIHNldHRpbmdzLgotICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJl
bmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwot
I2VuZGlmCi0KLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKLQotICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVh
c2UoKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxXZWJQ
YWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
UGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91cExldmVsTWFwOwordHlwZWRlZiBIYXNoTWFw
PFdlYlBhZ2VQcm94eSosIHVuc2lnbmVkPiBQYWdlTGV2ZWxNYXA7CiAKLSAgICBQYWdlR3JvdXBC
eUxldmVsTWFwIG1fcGFnZUdyb3VwQnlMZXZlbDsKLSAgICBQYWdlR3JvdXBMZXZlbE1hcCBtX3Bh
Z2VHcm91cExldmVsOwotfTsKK3N0YXRpYyBQYWdlTGV2ZWxNYXAmIHBhZ2VMZXZlbE1hcCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhZ2VMZXZlbE1hcD4gbWFwOworICAgIHJldHVy
biBtYXA7Cit9CiAKLVdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKK1dlYkluc3BlY3RvclByb3h5OjpXZWJJ
bnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCisgICAgOiBtX2luc3Bl
Y3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFC
TEVECiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNlbmRpZgogewotICAgIG1fbGV2ZWwgPSBXZWJJ
bnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JMZXZlbChtX3BhZ2UtPnBh
Z2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVj
dG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9CiAKLVdlYlBhZ2VHcm91cCogV2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yTGV2ZWwoKSBjb25zdAoreworICAgIGF1dG8gZmluZFJl
c3VsdCA9IHBhZ2VMZXZlbE1hcCgpLmZpbmQoaW5zcGVjdGVkUGFnZSgpKTsKKyAgICBpZiAoZmlu
ZFJlc3VsdCAhPSBwYWdlTGV2ZWxNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRSZXN1
bHQtPnZhbHVlICsgMTsKKworICAgIHJldHVybiAxOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVy
biBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JQYWdlR3JvdXBG
b3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5zcGVj
dG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVjdG9yTGV2ZWwoKSk7CiB9CiAKIFdlYlByZWZl
cmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7Cisg
ICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW52YWxpZGF0ZSgpCkBAIC0xNTEsMTggKzEwNiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS51
bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQpOwogI2VuZGlmCiAKLSAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0
ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBwYWdlTGV2ZWxNYXAoKS5yZW1vdmUo
bV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UgPSBudWxscHRyOwogfQogCiAv
LyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNGcm9udCgpCiB7Ci0gICAg
aWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlzRnJvbnQoKTsKQEAgLTE3MCw3ICsxMjYsNyBA
QCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Nob3dNZXNzYWdlU2VudCkKQEAg
LTE4MSwxMiArMTM3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogCiAg
ICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNw
ZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkgewpA
QCAtMjAyLDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAo
IW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1Zpc2libGUgPSBm
YWxzZTsKQEAgLTIxMiw4NiArMTY4LDg2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmhpZGUo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAog
ICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNo
SW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwg
KnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIAogICAgIC8vIFdoZW4gZGlkUmVsYXVuY2hJ
bnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2FuIGFzc3VtZSBpdCBpcyBkdXJpbmcg
YSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2VzIHdlIHdvdWxkIGhhdmUgc2VudCB0
byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJlLXNlbnQuCiAKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJs
aXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hD
b25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAg
ICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAg
aWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0
b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgYXR0YWNoKEF0
dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRh
Y2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgIGF0dGFj
aChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojph
dHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsKLSAgICBpZiAoIW1fcGFnZSB8fCAhY2FuQXR0
YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UgfHwgIWNhbkF0dGFjaCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSB0cnVlOwogICAgIG1fYXR0YWNobWVudFNp
ZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9y
QXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0
SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNpZGUpKTsKIAog
ICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCku
c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNo
bWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzAxLDcgKzI1Nyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewotICAgIGlmICghbV9wYWdlKQorICAg
IGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNo
ZWQgPSBmYWxzZTsKQEAgLTMwOSw3ICsyNjUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpk
ZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxz
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwpAQCAtMzI5LDIzICsyODUsMTggQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0
aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBv
biBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQYWdlID0gIW1faXNQcm9maWxpbmdQ
YWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0luc3BlY3RvclBhZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5n
bGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChwYWdlLnBhZ2VHcm91cCgpKTsKLX0KLQogV2Vi
UHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNzUG9vbCgpCiB7
CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2VzcyBwb29sIHJlbW92ZXMgdXMgZnJvbSB0aGUg
bWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTksNiArMzEwLDExIEBAIFdlYlByb2Nlc3NQb29s
JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJvY2Vzc1Bvb2woKQogICAgIHJldHVybiAq
cHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2VMZXZlbE1hcCgpLmNv
bnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9y
UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCByZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKQEAgLTQwOSw3ICszNjUsNyBA
QCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmlnbm9y
ZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2Uu
Ci0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2ViSW5zcGVjdG9yUHJveHktPmluc3Bl
Y3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVl
c3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKQEAgLTQyMSwxNyArMzc3
LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NSw2ICs0MDEsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHBhZ2VMZXZlbE1hcCgpLnNldChtX2luc3Bl
Y3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOworCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEg
cG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgbnVsbHB0ciwg
Ly8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
CkBAIC01MDEsMTQgKzQ1OSwxNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSSht
X2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsK
IAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5w
YWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwpAQCAtNTIwLDIyICs0Nzgs
MjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVz
dDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CiAK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0
YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAg
ICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFj
aGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVk
KG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0
b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNTYxLDcgKzUxOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAgIG1faW5zcGVjdG9yUGFnZSA9IG51
bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAyZDgyMmY1MmEyOTE2ZDRiOGRmYjUxYTNh
NTlhNjIwMjEwYzBjNWYyLi4wNzE3ZGQzYWMwMjc3N2EzZGQyNmE5MmI4YTEwYmVlYWI0NTE3NWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAt
NjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2Vz
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVudW0gQXR0YWNobWVudFNpZGUgewotICAgIEF0
dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFjaG1lbnRTaWRlUmlnaHQKK2VudW0gY2xhc3Mg
QXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwKKyAgICBSaWdodAogfTsKIAogY2xhc3MgV2Vi
SW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yUHJveHk+IGNyZWF0ZShXZWJQYWdl
UHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFnZSkpOwogICAgIH0KIAogICAgIH5XZWJJbnNw
ZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQogCiAgICAgYm9vbCBpc0Nvbm5lY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9CiAgICAgYm9vbCBpc1Zpc2li
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7
IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwog
ICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb2ZpbGlu
Z1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9n
Z2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdl
YlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQcm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7
CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1l
bnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTE5Miw5
ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3BlbigpOwogCi0gICAgLy8gRklYTUU6
IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBncm91cCBpZGVudGlmaWVyLCBub3QgYW4gaW5z
dGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAgICAvLyBkaXJlY3RseSBwcm92aWRlIGEgcGFn
ZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNlcyBhcmUgbm90IG5lY2Vzc2FyeSB0byBjb21w
dXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAqIGluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0
OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwgaXMgdXNlZCB0byBnaXZlIGRpZmZlcmVudCBw
cmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3RvcgorICAgIC8vIGxldmVsIGJ5IHNldHRpbmcgYSBw
ZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVyLgorICAgIHVuc2lnbmVkIGluc3BlY3Rvckxl
dmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBj
b25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTIxMiw3ICsyMTMs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lk
dGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0cn07CisgICAgV2ViUGFnZVByb3h5KiBtX2lu
c3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdl
IHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Qge2ZhbHNlfTsKQEAgLTIyMywxNCAr
MjI0LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAg
ICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBUaGUg
ZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAuIEhhdmlu
ZwotICAgIC8vIGFsbCB0aGUgaW5zcGVjdG9ycyBpbiB0aGUgc2FtZSBncm91cCB3aWxsIG1ha2Ug
aXQgaW1wb3NzaWJsZSB0byBkZWJ1ZwotICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2Ug
dXNlIHRoZSBsZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KLSAgICB1bnNpZ25l
ZCBtX2xldmVsOwotICAgIAogICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVudGlm
aWVyOwogCi0gICAgQXR0YWNobWVudFNpZGUgbV9hdHRhY2htZW50U2lkZSB7QXR0YWNobWVudFNp
ZGVCb3R0b219OworICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1l
bnRTaWRlOjpCb3R0b219OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAog
ICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLV2ViVmlldz4gbV9pbnNwZWN0b3JWaWV3Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJhNTMwOWM4YjYzMmE5M2VjOGVjLi44
MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDllZDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAt
ODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JXaW5k
b3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOworICAgIEFTU0VSVChtX2luc3Bl
Y3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgY29uc3QgY2hhciogZW5naW5l
ID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JQcm9j
ZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IHRvQVBJKGluc3Bl
Y3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tHcm91cElk
ZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tQYWdlR3JvdXBS
ZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdrR3JvdXBJ
ZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdDcmVhdGUo
d2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cp
LCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tWaWV3ID0gRVdLVmlld0dldFdLVmll
dyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBlZTY3MjcxMmQ4YjU2YmFhOWM1NzA0
NDNhMzA2NDJlMWZiODczMjA5Li43MGIxY2ExNmRkN2U3NzNkZTE2ZjBhY2FjNzA2NDZiZjM0ZGIx
MjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rv
clByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcApAQCAtNTgsOSArNTgsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6aW5pdGlhbGl6ZUluc3BlY3RvckNsaWVudEd0ayhjb25zdCBXS0luc3BlY3RvckNsaWVudEd0
a0IKIAogV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNw
ZWN0b3JQYWdlKCkKIHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5zcGVjdGVk
UGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9pbnNwZWN0b3JW
aWV3ID0gR1RLX1dJREdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKSwgbnVsbHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxwdHIp
KTsKKyAgICBhdXRvIHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBh
Z2VHcm91cElkZW50aWZpZXIoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX2luc3BlY3RvclZpZXcg
PSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JQcm9jZXNzUG9v
bCgpLCBudWxscHRyLCBwYWdlR3JvdXAsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBnX29iamVj
dF9hZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCoqPigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZp
ZXdCYXNlR2V0UGFnZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcpKTsKIH0K
QEAgLTY4LDkgKzY5LDkgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRvY2tCdXR0
b25DbGlja2VkKEd0a1dpZGdldCogYnV0dG9uLCBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9y
KQogewogICAgIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tCb3R0b21CdXR0b24pCi0g
ICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICAgICAg
aW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7CiAgICAgZWxzZSBpZiAo
YnV0dG9uID09IGluc3BlY3Rvci0+bV9kb2NrUmlnaHRCdXR0b24pCi0gICAgICAgIGluc3BlY3Rv
ci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgICAgICBpbnNwZWN0b3ItPmF0dGFj
aChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUluc3BlY3RvcldpbmRvdygpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRvdyk7CiAg
ICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVM
KTsKIAotICAgIEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRfZ2V0
X3RvcGxldmVsKG1fcGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICBHdGtXaWRnZXQqIGluc3BlY3Rl
ZFZpZXdQYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChpbnNwZWN0ZWRQYWdlKCktPnZp
ZXdXaWRnZXQoKSk7CiAgICAgaWYgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdp
bmRvdyhpbnNwZWN0ZWRWaWV3UGFyZW50KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfdHJhbnNp
ZW50X2ZvcihHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJTkRPVyhpbnNwZWN0
ZWRWaWV3UGFyZW50KSk7CiAKQEAgLTIxOSwxMiArMjIwLDEyIEBAIFN0cmluZyBXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAgcmV0dXJuIGd0
a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWlnaHQobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAg
IHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KGluc3BlY3RlZFBhZ2UoKS0+
dmlld1dpZGdldCgpKTsKIH0KIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
SW5zcGVjdGVkV2luZG93V2lkdGgoKQogewotICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxv
Y2F0ZWRfd2lkdGgobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtfd2lkZ2V0
X2dldF9hbGxvY2F0ZWRfd2lkdGgoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCkBAIC0yNDEsNyArMjQy
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwogCi0gICAgaWYgKG1f
YXR0YWNobWVudFNpZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKKyAgICBpZiAobV9hdHRh
Y2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAgICAgIHVuc2lnbmVk
IG1heGltdW1BdHRhY2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkg
KiAzIC8gNDsKICAgICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChzdGQ6Om1h
eChtaW5pbXVtQXR0YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNpemUsIG1h
eGltdW1BdHRhY2hlZEhlaWdodCkpKTsKICAgICB9IGVsc2UgewpAQCAtMjUyLDEzICsyNTMsMTMg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIGlmIChtX2Ns
aWVudC5hdHRhY2godGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYmtpdFdlYlZpZXdC
YXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmlld1dpZGdl
dCgpKSwgbV9pbnNwZWN0b3JWaWV3LCBtX2F0dGFjaG1lbnRTaWRlKTsKKyAgICB3ZWJraXRXZWJW
aWV3QmFzZUFkZFdlYkluc3BlY3RvcihXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQYWdl
KCktPnZpZXdXaWRnZXQoKSksIG1faW5zcGVjdG9yVmlldywgbV9hdHRhY2htZW50U2lkZSk7CiAg
ICAgZ3RrX3dpZGdldF9zaG93KG1faW5zcGVjdG9yVmlldyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtRGV0YWNoKCkKIHsKLSAgICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgp
KQorICAgIGlmICghaW5zcGVjdGVkUGFnZSgpLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEdSZWZQdHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0b3JWaWV3
OwpAQCAtMjgwLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRhY2hlZEhlaWdodCh0aGlzLCBoZWlnaHQpOwotICAg
IHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOworICAgIHdlYmtpdFdlYlZpZXdCYXNl
U2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgp
LT52aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCkBAIC0yODksNyAr
MjkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5k
aWRDaGFuZ2VBdHRhY2hlZFdpZHRoKHRoaXMsIHdpZHRoKTsKLSAgICB3ZWJraXRXZWJWaWV3QmFz
ZVNldEluc3BlY3RvclZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmlld1dp
ZGdldCgpKSwgd2lkdGgpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1Np
emUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpLCB3
aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0VG9vbGJhckhl
aWdodCh1bnNpZ25lZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDA1MTIzNzdiNWZkNmNiNTExYTViOTRkZDdhNDMy
NTc5MmM1N2U1YTIuLmNiZWFmZTNjOTE0YjNkYTY0MWVkMmMzYTYyZTc4NmM1NjY0MDE2NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgLSAoaWQpaW5pdFdpdGhXZWJJbnNwZWN0b3JQ
cm94eTooV2ViSW5zcGVjdG9yUHJveHkqKWluc3BlY3RvclByb3h5CiAKIC0gKElCQWN0aW9uKWF0
dGFjaFJpZ2h0OihpZClzZW5kZXIKIHsKLSAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94
eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lkZVJpZ2h0KTsKKyAgICBz
dGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChB
dHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiAtIChJQkFjdGlvbilhdHRhY2hCb3R0b206KGlk
KXNlbmRlcgogewotICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3Rv
clByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lk
ZTo6Qm90dG9tKTsKIH0KIAogLSAodm9pZCljbG9zZQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRp
YyB2b2lkIHJ1bk9wZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzCiAgICAgICAgICAgICBXS1JlbGVhc2UoZmlsZVVSTHMpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwo
bGlzdGVuZXIpOwotICAgICAgICAKKwogICAgICAgICBXS1JlbGVhc2UobGlzdGVuZXIpOwogICAg
IH1dOwogfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUluc3BlY3RvcldpbmRvdygpCiAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNNYWtlUmVjdCgw
LCAwLCBpbml0aWFsV2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCiAgICAgLy8g
UmVzdG9yZSB0aGUgc2F2ZWQgd2luZG93IGZyYW1lLCBpZiB0aGVyZSB3YXMgb25lLgotICAgIE5T
U3RyaW5nICpzYXZlZFdpbmRvd0ZyYW1lU3RyaW5nID0gcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVm
ZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CisgICAgTlNTdHJpbmcgKnNhdmVkV2lu
ZG93RnJhbWVTdHJpbmcgPSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2Vz
KCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKICAgICBOU1JlY3Qgc2F2ZWRXaW5kb3dGcmFtZSA9
IE5TUmVjdEZyb21TdHJpbmcoc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyk7CiAgICAgaWYgKCFOU0lz
RW1wdHlSZWN0KHNhdmVkV2luZG93RnJhbWUpKQogICAgICAgICB3aW5kb3dGcmFtZSA9IHNhdmVk
V2luZG93RnJhbWU7CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
dXBkYXRlSW5zcGVjdG9yV2luZG93VGl0bGUoKSBjb25zdAogCiBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VS
VChtX3BhZ2UpOworICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCiAgICAgbV9jbG9zZVRp
bWVyLnN0b3AoKTsKIApAQCAtNDYxLDIwICs0NjEsMjAgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIAogICAgIE5TUmVjdCBp
bml0aWFsUmVjdDsKICAgICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIE5TUmVjdCBpbnNw
ZWN0ZWRWaWV3RnJhbWUgPSBtX3BhZ2UtPndrVmlldygpLmZyYW1lOworICAgICAgICBOU1JlY3Qg
aW5zcGVjdGVkVmlld0ZyYW1lID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKS5mcmFtZTsKIAog
ICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2ht
ZW50U2lkZUJvdHRvbToKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAg
ICAgICAgICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVjdGVk
Vmlld0ZyYW1lKSwgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRI
ZWlnaHQoKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lk
ZVJpZ2h0OgorICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgICAg
IGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMo
KS5pbnNwZWN0b3JBdHRhY2hlZFdpZHRoKCksIE5TSGVpZ2h0KGluc3BlY3RlZFZpZXdGcmFtZSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
bml0aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFs
V2luZG93SGVpZ2h0KTsKIAotICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcgPSBw
YWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsK
KyAgICAgICAgTlNTdHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgpLT5w
YWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAgICAg
IE5TUmVjdCB3aW5kb3dGcmFtZSA9IE5TUmVjdEZyb21TdHJpbmcod2luZG93RnJhbWVTdHJpbmcp
OwogICAgICAgICBpZiAoIU5TSXNFbXB0eVJlY3Qod2luZG93RnJhbWUpKQogICAgICAgICAgICAg
aW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJh
bWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CkBAIC00ODksNyArNDg5LDcgQEAgV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkK
ICNlbmRpZgogICAgIHByZWZlcmVuY2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZ
RVM7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFwcGVy
KGluc3BlY3RvclByb2Nlc3NQb29sKCkpXTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0R3JvdXBJ
ZGVudGlmaWVyOmluc3BlY3RvclBhZ2VHcm91cCgpLT5pZGVudGlmaWVyKCldOworICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmll
cigpXTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKQEAgLTYx
MCw3ICs2MTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9u
dCgpCiAgICAgLy8gSWYgdGhlIFdlYiBJbnNwZWN0b3IgaXMgbm8gbG9uZ2VyIGluIHRoZSBzYW1l
IHdpbmRvdyBhcyB0aGUgaW5zcGVjdGVkIHZpZXcsCiAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIHJl
b3BlbiB0aGUgSW5zcGVjdG9yIHRvIGdldCBpdCBhdHRhY2hlZCB0byB0aGUgcmlnaHQgd2luZG93
LgogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGRyYWdnaW5nIHRhYnMgdG8gYW5vdGhlciB3
aW5kb3cgaW4gU2FmYXJpLgotICAgIGlmIChtX2lzQXR0YWNoZWQgJiYgbV9pbnNwZWN0b3JWaWV3
LmdldCgpLndpbmRvdyAhPSBtX3BhZ2UtPndrVmlldygpLndpbmRvdykgeworICAgIGlmIChtX2lz
QXR0YWNoZWQgJiYgbV9pbnNwZWN0b3JWaWV3LmdldCgpLndpbmRvdyAhPSBpbnNwZWN0ZWRQYWdl
KCktPndrVmlldygpLndpbmRvdykgewogICAgICAgICBwbGF0Zm9ybU9wZW4oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5n
ICpmcmFtZVN0cmluZyA9IE5TU3RyaW5nRnJvbVJlY3QoW21faW5zcGVjdG9yV2luZG93IGZyYW1l
XSk7Ci0gICAgcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEluc3BlY3Rvcldp
bmRvd0ZyYW1lKGZyYW1lU3RyaW5nKTsKKyAgICBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgp
LnByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dG
bG9hdCBjdXJyZW50RGltZW5zaW9uKQpAQCAtNzI3LDQwICs3MjcsNDAgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVudERp
bWVuc2lvbikKICAgICBpZiAoIW1faXNBdHRhY2hlZCB8fCAhbV9pc1Zpc2libGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7
CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsK
ICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld0ZyYW1lID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOwog
ICAgIE5TUmVjdCBpbnNwZWN0b3JGcmFtZSA9IE5TWmVyb1JlY3Q7CiAgICAgTlNSZWN0IHBhcmVu
dEJvdW5kcyA9IFtbaW5zcGVjdGVkVmlldyBzdXBlcnZpZXddIGJvdW5kc107CiAgICAgQ0dGbG9h
dCBpbnNwZWN0ZWRWaWV3VG9wID0gTlNNYXhZKGluc3BlY3RlZFZpZXdGcmFtZSk7CiAKICAgICBz
d2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJv
dHRvbTogewotICAgICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQotICAgICAgICAgICAg
ICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU0hlaWdodChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7
CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOiB7CisgICAgICAgIGlmICghY3VycmVu
dERpbWVuc2lvbikKKyAgICAgICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU0hlaWdodChbbV9p
bnNwZWN0b3JWaWV3IGZyYW1lXSk7CiAKLSAgICAgICAgICAgIENHRmxvYXQgcGFyZW50SGVpZ2h0
ID0gTlNIZWlnaHQocGFyZW50Qm91bmRzKTsKLSAgICAgICAgICAgIENHRmxvYXQgaW5zcGVjdG9y
SGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hl
ZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWlnaHQpOworICAgICAgICBD
R0Zsb2F0IHBhcmVudEhlaWdodCA9IE5TSGVpZ2h0KHBhcmVudEJvdW5kcyk7CisgICAgICAgIENH
RmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29u
c3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWln
aHQpOwogCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBp
bnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgotICAgICAgICAg
ICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5T
V2lkdGgocGFyZW50Qm91bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7
Ci0gICAgICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChp
bnNwZWN0ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JIZWlnaHQpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KKyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUg
aW5zcGVjdGVkIHZpZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4KKyAgICAgICAg
aW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5TV2lk
dGgocGFyZW50Qm91bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7Cisg
ICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3BlY3Rl
ZFZpZXdGcmFtZSksIGluc3BlY3RvckhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAot
ICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6IHsKLSAgICAgICAgICAgIGlmICghY3Vy
cmVudERpbWVuc2lvbikKLSAgICAgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNXaWR0
aChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Umln
aHQ6IHsKKyAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3VycmVu
dERpbWVuc2lvbiA9IE5TV2lkdGgoW21faW5zcGVjdG9yVmlldyBmcmFtZV0pOwogCi0gICAgICAg
ICAgICBDR0Zsb2F0IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJlbnRCb3VuZHMpOwotICAgICAg
ICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JXaWR0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dXaWR0aChjdXJyZW50RGltZW5zaW9uLCBwYXJl
bnRXaWR0aCk7CisgICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRoKHBhcmVudEJv
dW5kcyk7CisgICAgICAgIENHRmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERpbWVu
c2lvbiwgcGFyZW50V2lkdGgpOwogCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBv
c2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3
b3JrLiBCdXQgZG9uJ3QgdXNlIHRoYXQKLSAgICAgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBmb3Ig
dGhlIGluc3BlY3RvciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3aWRl
IGFzIHRoZSB0aGUgaW5zcGVjdGVkIHZpZXcuCi0gICAgICAgICAgICBpbnNwZWN0ZWRWaWV3RnJh
bWUgPSBOU01ha2VSZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGluc3Bl
Y3RlZFZpZXdUb3ApOwotICAgICAgICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMg
PSBpbnNwZWN0ZWRWaWV3Ll90b3BDb250ZW50SW5zZXQgLSBpbnNwZWN0ZWRWaWV3Ll90b3RhbEhl
aWdodE9mQmFubmVyczsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdChw
YXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQo
cGFyZW50Qm91bmRzKSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQorICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRo
ZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLiBCdXQgZG9u
J3QgdXNlIHRoYXQKKyAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZp
ZXcgc2luY2UgdGhlIGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIHRoZSBpbnNw
ZWN0ZWQgdmlldy4KKyAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAw
LCBwYXJlbnRXaWR0aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKKyAgICAg
ICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSBpbnNwZWN0ZWRWaWV3Ll90b3BDb250
ZW50SW5zZXQgLSBpbnNwZWN0ZWRWaWV3Ll90b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAgICAg
aW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgs
IDAsIGluc3BlY3RvcldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRp
bmdCYW5uZXJzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIGlmIChOU0Vx
dWFsUmVjdHMoW21faW5zcGVjdG9yVmlldyBmcmFtZV0sIGluc3BlY3RvckZyYW1lKSAmJiBOU0Vx
dWFsUmVjdHMoW2luc3BlY3RlZFZpZXcgZnJhbWVdLCBpbnNwZWN0ZWRWaWV3RnJhbWUpKQpAQCAt
Nzc3LDIxICs3NzcsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0Zy
YW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKIAogdW5zaWduZWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkKIHsKLSAgICBXS1Zp
ZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVj
dGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgTlNSZWN0IGluc3BlY3Rl
ZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOwogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5zcGVjdGVkVmlld1JlY3Quc2l6ZS5oZWlnaHQpOwogfQogCiB1bnNpZ25l
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Ci0g
ICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcg
Kmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBp
bnNwZWN0ZWRWaWV3UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUud2lkdGgpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiB7Ci0gICAgV0tWaWV3ICpp
bnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZp
ZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVy
LmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBu
YW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3
XTsKIAogICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgewpAQCAtODA1LDExICs4MDUsMTEgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIENHRmxvYXQgY3Vy
cmVudERpbWVuc2lvbjsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgIGNh
c2UgQXR0YWNobWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9t
OgogICAgICAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lk
dGhTaXphYmxlIHwgTlNWaWV3TWF4WU1hcmdpbl07CiAgICAgICAgIGN1cnJlbnREaW1lbnNpb24g
PSBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2hlZEhlaWdodCgpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6UmlnaHQ6CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0b3Jl
c2l6aW5nTWFzazpOU1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWluWE1hcmdpbl07CiAgICAg
ICAgIGN1cnJlbnREaW1lbnNpb24gPSBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0
b3JBdHRhY2hlZFdpZHRoKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9
IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVk
UGFnZSgpLT53a1ZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHJlbW92ZU9ic2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQoKSBuYW1l
Ok5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsK
IAogICAgIFttX2luc3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246105</attachid>
            <date>2015-02-05 09:07:08 -0800</date>
            <delta_ts>2015-02-05 09:07:08 -0800</delta_ts>
            <desc>Fix GTK</desc>
            <filename>bug-141135-20150205090708.patch</filename>
            <type>text/plain</type>
            <size>45634</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzFkNmViN2UxZGM0MGE0
ZTg0YjJkN2U2MjcwMDFlNjkyZjQzODFkMS4uODU1ODhhMGZlNGQ2MmE5NjI0MzIxZGRkZTlhZDdk
ODEzYjllMDFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxNS0wMi0wNSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBteSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgb3RoZXIgbWlzY2VsbGFuZW91cyBjbGVhbnVwcywgc3VjaCBhcyBuYW1pbmcgbV9w
YWdlCisgICAgICAgIHRvIG1faW5zcGVjdGVkUGFnZSwgdXNpbmcgUmVmIGFuZCB1c2luZyBhbiBl
bnVtIGNsYXNzIGZvciB0aGUgYXR0YWNobWVudCBzaWRlLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdLSW5zcGVjdG9yR2V0UGFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAocmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJH
dGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhZ2VMZXZlbE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpXZWJJbnNwZWN0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JMZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmlzRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OmRldGFjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5z
cGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFn
ZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vw
czo6aW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2VHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojp+V2ViSW5zcGVjdG9yUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3Bl
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Bl
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVk
V2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1E
ZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlciBhdHRhY2hSaWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQ
cm94eU9iakNBZGFwdGVyIGF0dGFjaEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVj
dGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgY2xvc2VdKTogRGVsZXRlZC4KKwogMjAxNS0wMi0wNCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgY29weWluZyBzdGQ6OmZ1bmN0aW9u
cyBhY3Jvc3MgdGhyZWFkcyBpbiBOZXR3b3JrQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCA3NWExY2Q0ODA3ZTYzNTli
YjZhYjI5OWM5OWZlOTAyMTNkMzFmN2NlLi42YjAyMmUyOTQ5NWYyMGQwMGUwMGNlNjZmMWQ2NGFl
MDU3ZDMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tJbnNwZWN0b3JHZXRUeXBlSUQo
KQogCiBXS1BhZ2VSZWYgV0tJbnNwZWN0b3JHZXRQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rv
clJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGluc3BlY3RvclJlZiktPnBhZ2UoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pbnNwZWN0ZWRQYWdlKCkp
OwogfQogCiBib29sIFdLSW5zcGVjdG9ySXNDb25uZWN0ZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGE3OTMzZTcxZWI4YjQ5MmU5ZTIwMjE2MzNiZjIyYTMy
ODY2MDAwM2QuLmUwMWI3MzYwZjE0OTg1YTlkZTdlN2M0YjM0NTI5ODEyNTgyZjg4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJW
aWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAg
IGlmIChwcml2LT5pbnNwZWN0b3JWaWV3KSB7CiAgICAgICAgIEd0a0FsbG9jYXRpb24gY2hpbGRB
bGxvY2F0aW9uID0gdmlld1JlY3Q7CiAKLSAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CisgICAgICAgIGlmIChwcml2LT5p
bnNwZWN0b3JBdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAg
ICAgICAgICBpbnQgaW5zcGVjdG9yVmlld0hlaWdodCA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGlu
dD4ocHJpdi0+aW5zcGVjdG9yVmlld1NpemUpLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwogICAgICAg
ICAgICAgY2hpbGRBbGxvY2F0aW9uLnggPSAwOwogICAgICAgICAgICAgY2hpbGRBbGxvY2F0aW9u
LnkgPSBhbGxvY2F0aW9uLT5oZWlnaHQgLSBpbnNwZWN0b3JWaWV3SGVpZ2h0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVj
dG9yU2VydmVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAKaW5kZXggOGVlMTYyOGZhMzZhYjA4NGRl
MGVkNDI5M2VkN2IxNzFmMzQ0Njg5MC4uMjFlZmE5Y2E5YmY4YmZmNjMyZmYzMGFjYmQ3N2RhOGU4
MzViZmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZl
Y3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogICAgIENsaWVudE1hcDo6
aXRlcmF0b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CiAgICAgZm9yIChDbGllbnRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFBhZ2UoKTsKICAgICAg
ICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgieyBcImlk
XCI6ICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKaW5kZXgg
NTAxMTY2NmIzZjI0MGI2OTdkMTFkNzcxODcxNzk3NWVhM2M3MDY0OS4uNTlkNzIwMzI3ZTU0ZDY3
MzgwMTFhOTNjYWRmZDY5NTliMzU1NjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0
b3JTZXJ2ZXJHdGsuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVy
OjpidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7CiAgICAgQ2xpZW50TWFwOjppdGVyYXRv
ciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKICAgICBmb3IgKENsaWVudE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gaXQtPnZhbHVlLT5wYWdlKCk7CisgICAgICAgIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+aW5zcGVjdGVkUGFnZSgpOwogICAgICAgICBpZiAo
aXQgIT0gbV9jbGllbnRNYXAuYmVnaW4oKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7IFwiaWRcIjogIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCAzYjA4ZTcwM2ZiYzRjMmQyODhlZmE5NzQ3N2IxNWQ1ZmUzNmU5YzBlLi5kMjBkNWRlNjc3MGI0
ZmUxNzcyMjJiNGM2YmQwNGFkYWE2ZTQyMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTU4LDkwICs1OCw0NSBAQCBjb25zdCB1bnNp
Z25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0
IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAxMDAwOwog
Y29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2
NTA7CiAKLWNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMgewotcHVibGljOgotICAgIHN0YXRp
YyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdlYkluc3BlY3RvclBhZ2VHcm91cHM+IGluc3RhbmNlOwotICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2
ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0ZWRQYWdlR3JvdXApCi0gICAgewotICAgICAgICByZXR1
cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAoaW5zcGVjdGVkUGFnZUdyb3VwKSA/IGluc3BlY3RvclBh
Z2VHcm91cExldmVsKGluc3BlY3RlZFBhZ2VHcm91cCkgKyAxIDogMTsKLSAgICB9Ci0KLSAgICBi
b29sIGlzSW5zcGVjdG9yUGFnZUdyb3VwKFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9wYWdlR3JvdXBMZXZlbC5jb250YWlucygmZ3JvdXApOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIGluc3BlY3RvclBhZ2VHcm91cExldmVsKFdlYlBhZ2VHcm91cCYgZ3JvdXAp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNJbnNwZWN0b3JQYWdlR3JvdXAoZ3JvdXApKTsKLSAg
ICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwuZ2V0KCZncm91cCk7Ci0gICAgfQotCi0gICAg
V2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCh1bnNpZ25lZCBsZXZlbCkK
LSAgICB7Ci0gICAgICAgIC8vIFRoZSBsZXZlbCBpcyB0aGUga2V5IG9mIHRoZSBIYXNoTWFwLCBz
byBpdCBjYW5ub3QgYmUgMC4KLSAgICAgICAgQVNTRVJUKGxldmVsKTsKLQotICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBCeUxldmVsLmZpbmQobGV2ZWwpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBCeUxldmVsLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLQotICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBn
cm91cCA9IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cChsZXZlbCk7Ci0gICAgICAgIG1fcGFnZUdy
b3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdyb3VwLmdldCgpKTsKLSAgICAgICAgbV9wYWdlR3JvdXBM
ZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxldmVsKTsKLSAgICAgICAgcmV0dXJuIGdyb3VwLmdldCgp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+
IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAg
IFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0
cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwg
ZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxv
cGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0
IGNoYW5naW5nIHNldHRpbmdzLgotICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJl
bmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwot
I2VuZGlmCi0KLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKLQotICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVh
c2UoKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxXZWJQ
YWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
UGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91cExldmVsTWFwOwordHlwZWRlZiBIYXNoTWFw
PFdlYlBhZ2VQcm94eSosIHVuc2lnbmVkPiBQYWdlTGV2ZWxNYXA7CiAKLSAgICBQYWdlR3JvdXBC
eUxldmVsTWFwIG1fcGFnZUdyb3VwQnlMZXZlbDsKLSAgICBQYWdlR3JvdXBMZXZlbE1hcCBtX3Bh
Z2VHcm91cExldmVsOwotfTsKK3N0YXRpYyBQYWdlTGV2ZWxNYXAmIHBhZ2VMZXZlbE1hcCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhZ2VMZXZlbE1hcD4gbWFwOworICAgIHJldHVy
biBtYXA7Cit9CiAKLVdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKK1dlYkluc3BlY3RvclByb3h5OjpXZWJJ
bnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCisgICAgOiBtX2luc3Bl
Y3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFC
TEVECiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNlbmRpZgogewotICAgIG1fbGV2ZWwgPSBXZWJJ
bnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JMZXZlbChtX3BhZ2UtPnBh
Z2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVj
dG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9CiAKLVdlYlBhZ2VHcm91cCogV2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yTGV2ZWwoKSBjb25zdAoreworICAgIGF1dG8gZmluZFJl
c3VsdCA9IHBhZ2VMZXZlbE1hcCgpLmZpbmQoaW5zcGVjdGVkUGFnZSgpKTsKKyAgICBpZiAoZmlu
ZFJlc3VsdCAhPSBwYWdlTGV2ZWxNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRSZXN1
bHQtPnZhbHVlICsgMTsKKworICAgIHJldHVybiAxOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVy
biBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JQYWdlR3JvdXBG
b3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5zcGVj
dG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVjdG9yTGV2ZWwoKSk7CiB9CiAKIFdlYlByZWZl
cmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7Cisg
ICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW52YWxpZGF0ZSgpCkBAIC0xNTEsMTggKzEwNiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS51
bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQpOwogI2VuZGlmCiAKLSAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0
ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBwYWdlTGV2ZWxNYXAoKS5yZW1vdmUo
bV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UgPSBudWxscHRyOwogfQogCiAv
LyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNGcm9udCgpCiB7Ci0gICAg
aWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlzRnJvbnQoKTsKQEAgLTE3MCw3ICsxMjYsNyBA
QCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Nob3dNZXNzYWdlU2VudCkKQEAg
LTE4MSwxMiArMTM3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogCiAg
ICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNw
ZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkgewpA
QCAtMjAyLDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAo
IW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1Zpc2libGUgPSBm
YWxzZTsKQEAgLTIxMiw4NiArMTY4LDg2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmhpZGUo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAog
ICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNo
SW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwg
KnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIAogICAgIC8vIFdoZW4gZGlkUmVsYXVuY2hJ
bnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2FuIGFzc3VtZSBpdCBpcyBkdXJpbmcg
YSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2VzIHdlIHdvdWxkIGhhdmUgc2VudCB0
byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJlLXNlbnQuCiAKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJs
aXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hD
b25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAg
ICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAg
aWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0
b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgYXR0YWNoKEF0
dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRh
Y2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgIGF0dGFj
aChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojph
dHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsKLSAgICBpZiAoIW1fcGFnZSB8fCAhY2FuQXR0
YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UgfHwgIWNhbkF0dGFjaCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSB0cnVlOwogICAgIG1fYXR0YWNobWVudFNp
ZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9y
QXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0
SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNpZGUpKTsKIAog
ICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCku
c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNo
bWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzAxLDcgKzI1Nyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewotICAgIGlmICghbV9wYWdlKQorICAg
IGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNo
ZWQgPSBmYWxzZTsKQEAgLTMwOSw3ICsyNjUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpk
ZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxz
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwpAQCAtMzI5LDIzICsyODUsMTggQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0
aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBv
biBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQYWdlID0gIW1faXNQcm9maWxpbmdQ
YWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0luc3BlY3RvclBhZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5n
bGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChwYWdlLnBhZ2VHcm91cCgpKTsKLX0KLQogV2Vi
UHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNzUG9vbCgpCiB7
CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2VzcyBwb29sIHJlbW92ZXMgdXMgZnJvbSB0aGUg
bWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTksNiArMzEwLDExIEBAIFdlYlByb2Nlc3NQb29s
JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJvY2Vzc1Bvb2woKQogICAgIHJldHVybiAq
cHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2VMZXZlbE1hcCgpLmNv
bnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9y
UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCByZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKQEAgLTQwOSw3ICszNjUsNyBA
QCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmlnbm9y
ZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2Uu
Ci0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2ViSW5zcGVjdG9yUHJveHktPmluc3Bl
Y3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVl
c3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKQEAgLTQyMSwxNyArMzc3
LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NSw2ICs0MDEsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHBhZ2VMZXZlbE1hcCgpLnNldChtX2luc3Bl
Y3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOworCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEg
cG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgbnVsbHB0ciwg
Ly8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
CkBAIC01MDEsMTQgKzQ1OSwxNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSSht
X2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsK
IAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5w
YWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwpAQCAtNTIwLDIyICs0Nzgs
MjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVz
dDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CiAK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0
YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAg
ICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFj
aGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVk
KG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0
b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNTYxLDcgKzUxOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAgIG1faW5zcGVjdG9yUGFnZSA9IG51
bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAyZDgyMmY1MmEyOTE2ZDRiOGRmYjUxYTNh
NTlhNjIwMjEwYzBjNWYyLi4wNzE3ZGQzYWMwMjc3N2EzZGQyNmE5MmI4YTEwYmVlYWI0NTE3NWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAt
NjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2Vz
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVudW0gQXR0YWNobWVudFNpZGUgewotICAgIEF0
dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFjaG1lbnRTaWRlUmlnaHQKK2VudW0gY2xhc3Mg
QXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwKKyAgICBSaWdodAogfTsKIAogY2xhc3MgV2Vi
SW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yUHJveHk+IGNyZWF0ZShXZWJQYWdl
UHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFnZSkpOwogICAgIH0KIAogICAgIH5XZWJJbnNw
ZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQogCiAgICAgYm9vbCBpc0Nvbm5lY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9CiAgICAgYm9vbCBpc1Zpc2li
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7
IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwog
ICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb2ZpbGlu
Z1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9n
Z2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdl
YlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQcm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7
CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1l
bnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTE5Miw5
ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3BlbigpOwogCi0gICAgLy8gRklYTUU6
IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBncm91cCBpZGVudGlmaWVyLCBub3QgYW4gaW5z
dGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAgICAvLyBkaXJlY3RseSBwcm92aWRlIGEgcGFn
ZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNlcyBhcmUgbm90IG5lY2Vzc2FyeSB0byBjb21w
dXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAqIGluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0
OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwgaXMgdXNlZCB0byBnaXZlIGRpZmZlcmVudCBw
cmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3RvcgorICAgIC8vIGxldmVsIGJ5IHNldHRpbmcgYSBw
ZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVyLgorICAgIHVuc2lnbmVkIGluc3BlY3Rvckxl
dmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBj
b25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTIxMiw3ICsyMTMs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lk
dGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0cn07CisgICAgV2ViUGFnZVByb3h5KiBtX2lu
c3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdl
IHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Qge2ZhbHNlfTsKQEAgLTIyMywxNCAr
MjI0LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAg
ICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBUaGUg
ZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAuIEhhdmlu
ZwotICAgIC8vIGFsbCB0aGUgaW5zcGVjdG9ycyBpbiB0aGUgc2FtZSBncm91cCB3aWxsIG1ha2Ug
aXQgaW1wb3NzaWJsZSB0byBkZWJ1ZwotICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2Ug
dXNlIHRoZSBsZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KLSAgICB1bnNpZ25l
ZCBtX2xldmVsOwotICAgIAogICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVudGlm
aWVyOwogCi0gICAgQXR0YWNobWVudFNpZGUgbV9hdHRhY2htZW50U2lkZSB7QXR0YWNobWVudFNp
ZGVCb3R0b219OworICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1l
bnRTaWRlOjpCb3R0b219OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAog
ICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLV2ViVmlldz4gbV9pbnNwZWN0b3JWaWV3Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJhNTMwOWM4YjYzMmE5M2VjOGVjLi44
MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDllZDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAt
ODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JXaW5k
b3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOworICAgIEFTU0VSVChtX2luc3Bl
Y3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgY29uc3QgY2hhciogZW5naW5l
ID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JQcm9j
ZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IHRvQVBJKGluc3Bl
Y3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tHcm91cElk
ZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tQYWdlR3JvdXBS
ZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdrR3JvdXBJ
ZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdDcmVhdGUo
d2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cp
LCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tWaWV3ID0gRVdLVmlld0dldFdLVmll
dyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBlZTY3MjcxMmQ4YjU2YmFhOWM1NzA0
NDNhMzA2NDJlMWZiODczMjA5Li4zZGViMmZjYmE4ZDVjMTRmNWU4YmEyOTE3MDE4M2FkYjg0ZmFh
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rv
clByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGll
cy5oPgpAQCAtNTgsOSArNTksMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbGl6
ZUluc3BlY3RvckNsaWVudEd0ayhjb25zdCBXS0luc3BlY3RvckNsaWVudEd0a0IKIAogV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkK
IHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJ
REdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSwgbnVs
bHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBhdXRv
IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKGluc3BlY3RvclBhZ2VHcm91cElkZW50
aWZpZXIoKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBHVEtfV0lER0VU
KHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlKCZpbnNwZWN0b3JQcm9jZXNzUG9vbCgpLCBudWxscHRy
LCBwYWdlR3JvdXAsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBnX29iamVjdF9hZGRfd2Vha19w
b2ludGVyKEdfT0JKRUNUKG1faW5zcGVjdG9yVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmbV9pbnNwZWN0b3JWaWV3KSk7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFn
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX2luc3BlY3RvclZpZXcpKTsKIH0KQEAgLTY4LDkgKzcw
LDkgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNw
ZWN0b3JQYWdlKCkKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRvY2tCdXR0b25DbGlja2VkKEd0
a1dpZGdldCogYnV0dG9uLCBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKQogewogICAgIGlm
IChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tCb3R0b21CdXR0b24pCi0gICAgICAgIGluc3Bl
Y3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICAgICAgaW5zcGVjdG9yLT5h
dHRhY2goQXR0YWNobWVudFNpZGU6OkJvdHRvbSk7CiAgICAgZWxzZSBpZiAoYnV0dG9uID09IGlu
c3BlY3Rvci0+bV9kb2NrUmlnaHRCdXR0b24pCi0gICAgICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0
dGFjaG1lbnRTaWRlUmlnaHQpOworICAgICAgICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50
U2lkZTo6UmlnaHQpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CkBAIC04Myw3ICs4NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3Rv
cldpbmRvdygpCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRvdyk7CiAgICAgbV9pbnNwZWN0
b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKIAotICAgIEd0
a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKG1f
cGFnZS0+dmlld1dpZGdldCgpKTsKKyAgICBHdGtXaWRnZXQqIGluc3BlY3RlZFZpZXdQYXJlbnQg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSk7
CiAgICAgaWYgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyhpbnNwZWN0
ZWRWaWV3UGFyZW50KSkKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfdHJhbnNpZW50X2ZvcihHVEtf
V0lORE9XKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJTkRPVyhpbnNwZWN0ZWRWaWV3UGFyZW50
KSk7CiAKQEAgLTIxOSwxMiArMjIxLDEyIEBAIFN0cmluZyBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yQmFzZVVSTCgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUluc3BlY3RlZFdpbmRvd0hlaWdodCgpCiB7Ci0gICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0
X2FsbG9jYXRlZF9oZWlnaHQobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtf
d2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgp
KTsKIH0KIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2lu
ZG93V2lkdGgoKQogewotICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfd2lkdGgo
bV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9hbGxvY2F0
ZWRfd2lkdGgoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCkBAIC0yNDEsNyArMjQzLDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtaW5pbXVtQXR0YWNoZWRXaWR0aCA9IDc1MDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWluaW11bUF0dGFjaGVkSGVpZ2h0ID0gMjUwOwogCi0gICAgaWYgKG1fYXR0YWNobWVudFNp
ZGUgPT0gQXR0YWNobWVudFNpZGVCb3R0b20pIHsKKyAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9
PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAgICAgIHVuc2lnbmVkIG1heGltdW1BdHRh
Y2hlZEhlaWdodCA9IHBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkgKiAzIC8gNDsKICAg
ICAgICAgcGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodChzdGQ6Om1heChtaW5pbXVtQXR0
YWNoZWRIZWlnaHQsIHN0ZDo6bWluKGRlZmF1bHRBdHRhY2hlZFNpemUsIG1heGltdW1BdHRhY2hl
ZEhlaWdodCkpKTsKICAgICB9IGVsc2UgewpAQCAtMjUyLDEzICsyNTQsMTMgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIGlmIChtX2NsaWVudC5hdHRhY2go
dGhpcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5z
cGVjdG9yKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmlld1dpZGdldCgpKSwgbV9pbnNw
ZWN0b3JWaWV3LCBtX2F0dGFjaG1lbnRTaWRlKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUFkZFdl
Ykluc3BlY3RvcihXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRn
ZXQoKSksIG1faW5zcGVjdG9yVmlldywgbV9hdHRhY2htZW50U2lkZSk7CiAgICAgZ3RrX3dpZGdl
dF9zaG93KG1faW5zcGVjdG9yVmlldyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtRGV0YWNoKCkKIHsKLSAgICBpZiAoIW1fcGFnZS0+aXNWYWxpZCgpKQorICAgIGlmICgh
aW5zcGVjdGVkUGFnZSgpLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdSZWZQ
dHI8R3RrV2lkZ2V0PiBpbnNwZWN0b3JWaWV3ID0gbV9pbnNwZWN0b3JWaWV3OwpAQCAtMjgwLDcg
KzI4Miw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VBdHRhY2hlZEhlaWdodCh0aGlzLCBoZWlnaHQpOwotICAgIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV9wYWdlLT52
aWV3V2lkZ2V0KCkpLCBoZWlnaHQpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9y
Vmlld1NpemUoV0VCS0lUX1dFQl9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0
KCkpLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0
dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCkBAIC0yODksNyArMjkxLDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2ln
bmVkIHdpZHRoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VBdHRh
Y2hlZFdpZHRoKHRoaXMsIHdpZHRoKTsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3Rv
clZpZXdTaXplKFdFQktJVF9XRUJfVklFV19CQVNFKG1fcGFnZS0+dmlld1dpZGdldCgpKSwgd2lk
dGgpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpLCB3aWR0aCk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0VG9vbGJhckhlaWdodCh1bnNpZ25l
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCmluZGV4IDA1MTIzNzdiNWZkNmNiNTExYTViOTRkZDdhNDMyNTc5MmM1N2U1YTIu
LmNiZWFmZTNjOTE0YjNkYTY0MWVkMmMzYTYyZTc4NmM1NjY0MDE2NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAt
MTE0LDEyICsxMTQsMTIgQEAgLSAoaWQpaW5pdFdpdGhXZWJJbnNwZWN0b3JQcm94eTooV2ViSW5z
cGVjdG9yUHJveHkqKWluc3BlY3RvclByb3h5CiAKIC0gKElCQWN0aW9uKWF0dGFjaFJpZ2h0Oihp
ZClzZW5kZXIKIHsKLSAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0
b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lkZVJpZ2h0KTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJJbnNwZWN0b3JQcm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lk
ZTo6UmlnaHQpOwogfQogCiAtIChJQkFjdGlvbilhdHRhY2hCb3R0b206KGlkKXNlbmRlcgogewot
ICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0
YWNoKEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJJbnNwZWN0b3JQ
cm94eSo+KF9pbnNwZWN0b3JQcm94eSktPmF0dGFjaChBdHRhY2htZW50U2lkZTo6Qm90dG9tKTsK
IH0KIAogLSAodm9pZCljbG9zZQpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJ1bk9w
ZW5QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzCiAgICAgICAgICAgICBXS1JlbGVhc2UoZmlsZVVSTHMpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwobGlzdGVuZXIpOwot
ICAgICAgICAKKwogICAgICAgICBXS1JlbGVhc2UobGlzdGVuZXIpOwogICAgIH1dOwogfQpAQCAt
MzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3Rvcldp
bmRvdygpCiAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBpbml0aWFs
V2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUg
c2F2ZWQgd2luZG93IGZyYW1lLCBpZiB0aGVyZSB3YXMgb25lLgotICAgIE5TU3RyaW5nICpzYXZl
ZFdpbmRvd0ZyYW1lU3RyaW5nID0gcGFnZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLmlu
c3BlY3RvcldpbmRvd0ZyYW1lKCk7CisgICAgTlNTdHJpbmcgKnNhdmVkV2luZG93RnJhbWVTdHJp
bmcgPSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9y
V2luZG93RnJhbWUoKTsKICAgICBOU1JlY3Qgc2F2ZWRXaW5kb3dGcmFtZSA9IE5TUmVjdEZyb21T
dHJpbmcoc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyk7CiAgICAgaWYgKCFOU0lzRW1wdHlSZWN0KHNh
dmVkV2luZG93RnJhbWUpKQogICAgICAgICB3aW5kb3dGcmFtZSA9IHNhdmVkV2luZG93RnJhbWU7
CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dXBkYXRlSW5zcGVj
dG9yV2luZG93VGl0bGUoKSBjb25zdAogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOwor
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCiAgICAgbV9jbG9zZVRpbWVyLnN0b3AoKTsK
IApAQCAtNDYxLDIwICs0NjEsMjAgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKIAogICAgIE5TUmVjdCBpbml0aWFsUmVjdDsK
ICAgICBpZiAobV9pc0F0dGFjaGVkKSB7Ci0gICAgICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJh
bWUgPSBtX3BhZ2UtPndrVmlldygpLmZyYW1lOworICAgICAgICBOU1JlY3QgaW5zcGVjdGVkVmll
d0ZyYW1lID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKS5mcmFtZTsKIAogICAgICAgICBzd2l0
Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRv
bToKKyAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAgICAgICAgaW5p
dGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIE5TV2lkdGgoaW5zcGVjdGVkVmlld0ZyYW1lKSwg
aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAg
ICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgICAgIGluaXRpYWxSZWN0
ID0gTlNNYWtlUmVjdCgwLCAwLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JB
dHRhY2hlZFdpZHRoKCksIE5TSGVpZ2h0KGluc3BlY3RlZFZpZXdGcmFtZSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpbml0aWFsUmVjdCA9
IE5TTWFrZVJlY3QoMCwgMCwgaW5pdGlhbFdpbmRvd1dpZHRoLCBpbml0aWFsV2luZG93SGVpZ2h0
KTsKIAotICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcgPSBwYWdlKCktPnBhZ2VH
cm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKKyAgICAgICAgTlNT
dHJpbmcgKndpbmRvd0ZyYW1lU3RyaW5nID0gaW5zcGVjdGVkUGFnZSgpLT5wYWdlR3JvdXAoKS5w
cmVmZXJlbmNlcygpLmluc3BlY3RvcldpbmRvd0ZyYW1lKCk7CiAgICAgICAgIE5TUmVjdCB3aW5k
b3dGcmFtZSA9IE5TUmVjdEZyb21TdHJpbmcod2luZG93RnJhbWVTdHJpbmcpOwogICAgICAgICBp
ZiAoIU5TSXNFbXB0eVJlY3Qod2luZG93RnJhbWUpKQogICAgICAgICAgICAgaW5pdGlhbFJlY3Qg
PSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJlY3Q6d2luZG93RnJhbWUgc3R5bGVNYXNr
OndpbmRvd1N0eWxlTWFza107CkBAIC00ODksNyArNDg5LDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKICNlbmRpZgogICAg
IHByZWZlcmVuY2VzLl9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZRVM7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFwcGVyKGluc3BlY3RvclBy
b2Nlc3NQb29sKCkpXTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0R3JvdXBJZGVudGlmaWVyOmlu
c3BlY3RvclBhZ2VHcm91cCgpLT5pZGVudGlmaWVyKCldOworICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllcigpXTsKIAogICAg
IG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dlYkluc3BlY3RvcldLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKQEAgLTYxMCw3ICs2MTAsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUJyaW5nVG9Gcm9udCgpCiAgICAgLy8g
SWYgdGhlIFdlYiBJbnNwZWN0b3IgaXMgbm8gbG9uZ2VyIGluIHRoZSBzYW1lIHdpbmRvdyBhcyB0
aGUgaW5zcGVjdGVkIHZpZXcsCiAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIHJlb3BlbiB0aGUgSW5z
cGVjdG9yIHRvIGdldCBpdCBhdHRhY2hlZCB0byB0aGUgcmlnaHQgd2luZG93LgogICAgIC8vIFRo
aXMgY2FuIGhhcHBlbiB3aGVuIGRyYWdnaW5nIHRhYnMgdG8gYW5vdGhlciB3aW5kb3cgaW4gU2Fm
YXJpLgotICAgIGlmIChtX2lzQXR0YWNoZWQgJiYgbV9pbnNwZWN0b3JWaWV3LmdldCgpLndpbmRv
dyAhPSBtX3BhZ2UtPndrVmlldygpLndpbmRvdykgeworICAgIGlmIChtX2lzQXR0YWNoZWQgJiYg
bV9pbnNwZWN0b3JWaWV3LmdldCgpLndpbmRvdyAhPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygp
LndpbmRvdykgewogICAgICAgICBwbGF0Zm9ybU9wZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTcxOSw3ICs3MTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFt
ZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICpmcmFtZVN0cmlu
ZyA9IE5TU3RyaW5nRnJvbVJlY3QoW21faW5zcGVjdG9yV2luZG93IGZyYW1lXSk7Ci0gICAgcGFn
ZSgpLT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLnNldEluc3BlY3RvcldpbmRvd0ZyYW1lKGZy
YW1lU3RyaW5nKTsKKyAgICBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2Vz
KCkuc2V0SW5zcGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50
RGltZW5zaW9uKQpAQCAtNzI3LDQwICs3MjcsNDAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlKENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKICAg
ICBpZiAoIW1faXNBdHRhY2hlZCB8fCAhbV9pc1Zpc2libGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7CisgICAgV0tWaWV3
ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsKICAgICBOU1JlY3Qg
aW5zcGVjdGVkVmlld0ZyYW1lID0gW2luc3BlY3RlZFZpZXcgZnJhbWVdOwogICAgIE5TUmVjdCBp
bnNwZWN0b3JGcmFtZSA9IE5TWmVyb1JlY3Q7CiAgICAgTlNSZWN0IHBhcmVudEJvdW5kcyA9IFtb
aW5zcGVjdGVkVmlldyBzdXBlcnZpZXddIGJvdW5kc107CiAgICAgQ0dGbG9hdCBpbnNwZWN0ZWRW
aWV3VG9wID0gTlNNYXhZKGluc3BlY3RlZFZpZXdGcmFtZSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0
YWNobWVudFNpZGUpIHsKLSAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbTogewotICAg
ICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQotICAgICAgICAgICAgICAgIGN1cnJlbnRE
aW1lbnNpb24gPSBOU0hlaWdodChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CisgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6Qm90dG9tOiB7CisgICAgICAgIGlmICghY3VycmVudERpbWVuc2lvbikK
KyAgICAgICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBOU0hlaWdodChbbV9pbnNwZWN0b3JWaWV3
IGZyYW1lXSk7CiAKLSAgICAgICAgICAgIENHRmxvYXQgcGFyZW50SGVpZ2h0ID0gTlNIZWlnaHQo
cGFyZW50Qm91bmRzKTsKLSAgICAgICAgICAgIENHRmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdo
dChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWlnaHQpOworICAgICAgICBDR0Zsb2F0IHBhcmVu
dEhlaWdodCA9IE5TSGVpZ2h0KHBhcmVudEJvdW5kcyk7CisgICAgICAgIENHRmxvYXQgaW5zcGVj
dG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRh
Y2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWlnaHQpOwogCi0gICAg
ICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmll
dyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLgotICAgICAgICAgICAgaW5zcGVjdGVk
Vmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5TV2lkdGgocGFyZW50
Qm91bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7Ci0gICAgICAgICAg
ICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgTlNXaWR0aChpbnNwZWN0ZWRWaWV3
RnJhbWUpLCBpbnNwZWN0b3JIZWlnaHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgLy8gUHJlc2VydmUgdGhlIHRvcCBwb3NpdGlvbiBvZiB0aGUgaW5zcGVjdGVkIHZp
ZXcgc28gYmFubmVycyBpbiBTYWZhcmkgc3RpbGwgd29yay4KKyAgICAgICAgaW5zcGVjdGVkVmll
d0ZyYW1lID0gTlNNYWtlUmVjdCgwLCBpbnNwZWN0b3JIZWlnaHQsIE5TV2lkdGgocGFyZW50Qm91
bmRzKSwgaW5zcGVjdGVkVmlld1RvcCAtIGluc3BlY3RvckhlaWdodCk7CisgICAgICAgIGluc3Bl
Y3RvckZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBOU1dpZHRoKGluc3BlY3RlZFZpZXdGcmFtZSks
IGluc3BlY3RvckhlaWdodCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlUmlnaHQ6IHsKLSAgICAgICAgICAgIGlmICghY3VycmVudERpbWVuc2lv
bikKLSAgICAgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNXaWR0aChbbV9pbnNwZWN0
b3JWaWV3IGZyYW1lXSk7CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6IHsKKyAgICAg
ICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9
IE5TV2lkdGgoW21faW5zcGVjdG9yVmlldyBmcmFtZV0pOwogCi0gICAgICAgICAgICBDR0Zsb2F0
IHBhcmVudFdpZHRoID0gTlNXaWR0aChwYXJlbnRCb3VuZHMpOwotICAgICAgICAgICAgQ0dGbG9h
dCBpbnNwZWN0b3JXaWR0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFp
bmVkQXR0YWNoZWRXaW5kb3dXaWR0aChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRXaWR0aCk7Cisg
ICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRoKHBhcmVudEJvdW5kcyk7CisgICAg
ICAgIENHRmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Ojpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERpbWVuc2lvbiwgcGFyZW50
V2lkdGgpOwogCi0gICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRo
ZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLiBCdXQgZG9u
J3QgdXNlIHRoYXQKLSAgICAgICAgICAgIC8vIHRvcCBwb3NpdGlvbiBmb3IgdGhlIGluc3BlY3Rv
ciB2aWV3IHNpbmNlIHRoZSBiYW5uZXJzIG9ubHkgc3RyZXRjaCBhcyB3aWRlIGFzIHRoZSB0aGUg
aW5zcGVjdGVkIHZpZXcuCi0gICAgICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VS
ZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGluc3BlY3RlZFZpZXdUb3Ap
OwotICAgICAgICAgICAgQ0dGbG9hdCBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSBpbnNwZWN0ZWRW
aWV3Ll90b3BDb250ZW50SW5zZXQgLSBpbnNwZWN0ZWRWaWV3Ll90b3RhbEhlaWdodE9mQmFubmVy
czsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtlUmVjdChwYXJlbnRXaWR0aCAt
IGluc3BlY3RvcldpZHRoLCAwLCBpbnNwZWN0b3JXaWR0aCwgTlNIZWlnaHQocGFyZW50Qm91bmRz
KSAtIGluc2V0RXhjbHVkaW5nQmFubmVycyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQorICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgdG9wIHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQg
dmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBzdGlsbCB3b3JrLiBCdXQgZG9uJ3QgdXNlIHRoYXQK
KyAgICAgICAgLy8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhl
IGJhbm5lcnMgb25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIHRoZSBpbnNwZWN0ZWQgdmlldy4K
KyAgICAgICAgaW5zcGVjdGVkVmlld0ZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBwYXJlbnRXaWR0
aCAtIGluc3BlY3RvcldpZHRoLCBpbnNwZWN0ZWRWaWV3VG9wKTsKKyAgICAgICAgQ0dGbG9hdCBp
bnNldEV4Y2x1ZGluZ0Jhbm5lcnMgPSBpbnNwZWN0ZWRWaWV3Ll90b3BDb250ZW50SW5zZXQgLSBp
bnNwZWN0ZWRWaWV3Ll90b3RhbEhlaWdodE9mQmFubmVyczsKKyAgICAgICAgaW5zcGVjdG9yRnJh
bWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIDAsIGluc3BlY3Rv
cldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5uZXJzKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIH0KIAogICAgIGlmIChOU0VxdWFsUmVjdHMoW21f
aW5zcGVjdG9yVmlldyBmcmFtZV0sIGluc3BlY3RvckZyYW1lKSAmJiBOU0VxdWFsUmVjdHMoW2lu
c3BlY3RlZFZpZXcgZnJhbWVdLCBpbnNwZWN0ZWRWaWV3RnJhbWUpKQpAQCAtNzc3LDIxICs3Nzcs
MjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdl
KENHRmxvYXQgY3VycmVudERpbWVuc2lvbikKIAogdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0KCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3Rl
ZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGlu
c3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdSZWN0ID0g
W2luc3BlY3RlZFZpZXcgZnJhbWVdOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW5zcGVjdGVkVmlld1JlY3Quc2l6ZS5oZWlnaHQpOwogfQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Ci0gICAgV0tWaWV3ICpp
bnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZp
ZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3
UmVjdCA9IFtpbnNwZWN0ZWRWaWV3IGZyYW1lXTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluc3BlY3RlZFZpZXdSZWN0LnNpemUud2lkdGgpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUF0dGFjaCgpCiB7Ci0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3
ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0
ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIHNlbGVj
dG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1lOk5TVmlld0Zy
YW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKIAogICAgIGlm
IChtX2luc3BlY3RvcldpbmRvdykgewpAQCAtODA1LDExICs4MDUsMTEgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2goKQogICAgIENHRmxvYXQgY3VycmVudERpbWVuc2lv
bjsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgIGNhc2UgQXR0YWNobWVu
dFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAgICBb
bV9pbnNwZWN0b3JWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwg
TlNWaWV3TWF4WU1hcmdpbl07CiAgICAgICAgIGN1cnJlbnREaW1lbnNpb24gPSBpbnNwZWN0b3JQ
YWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2hlZEhlaWdodCgpOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgY2FzZSBBdHRhY2htZW50U2lk
ZTo6UmlnaHQ6CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazpO
U1ZpZXdIZWlnaHRTaXphYmxlIHwgTlNWaWV3TWluWE1hcmdpbl07CiAgICAgICAgIGN1cnJlbnRE
aW1lbnNpb24gPSBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2hlZFdp
ZHRoKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtODI0LDcgKzgyNCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1EZXRhY2goKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tW
aWV3KCk7CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1Zp
ZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9i
c2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQoKSBuYW1lOk5TVmlld0ZyYW1l
RGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKIAogICAgIFttX2lu
c3BlY3RvclZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246126</attachid>
            <date>2015-02-05 13:10:50 -0800</date>
            <delta_ts>2015-02-05 13:10:50 -0800</delta_ts>
            <desc>Fix GTK</desc>
            <filename>bug-141135-20150205131049.patch</filename>
            <type>text/plain</type>
            <size>45666</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzFkNmViN2UxZGM0MGE0
ZTg0YjJkN2U2MjcwMDFlNjkyZjQzODFkMS4uMjk4OWM2MDNlNWRjODJiZTk3NjI3NzA4YzAxMGUy
ZTBkOGYyOGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxNS0wMi0wNSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ2xlYW4gdXAg
V2ViSW5zcGVjdG9yUHJveHkgYW5kIHVzZSBzaW1wbGVyIGluc3BlY3RvciBsZXZlbHMgZGVzaWdu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgSW5zcGVj
dG9yIGxldmVscyB1c2VkIHRvIGJlIG1hbmFnZWQgYnkga2VlcGluZyBhIHNldCBvZiBXZWJQYWdl
R3JvdXAKKyAgICAgICAgaW5zdGFuY2VzIGFuZCBkb2luZyBwb2ludGVyIGNvbXBhcmlzb25zIHRv
IGNoZWNrIHdoZXRoZXIgdGhlIGluc3BlY3RlZAorICAgICAgICB2aWV3IGlzIGl0c2VsZiBhIHdl
YiBpbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgaXMgdW5uZWNlc3NhcnksIGFzIHdlCisgICAgICAg
IGNhbiBtYWludGFpbiBhIG1hcHBpbmcgZnJvbSBXZWJQYWdlUHJveHkqIHRvIGl0cyBjb3JyZXNw
b25kaW5nIGxldmVsLgorCisgICAgICAgIFdoZW4gYW4gaW5zcGVjdG9yIGluc3RhbmNlIGlzIGNy
ZWF0ZWQsIGl0IGlzIGluc2VydGVkIGludG8gdGhlIG1hcHBpbmcKKyAgICAgICAgYWxvbmcgd2l0
aCBpdHMgbGV2ZWwuIEFuIGluc3BlY3RvcidzIGxldmVsIGlzIDEgdW5sZXNzIGl0cyBpbnNwZWN0
ZWQgcGFnZQorICAgICAgICBpcyBpbiB0aGUgbWFwcGluZywgdGhlbiBpdCBpcyBvbmUgZ3JlYXRl
ciB0aGF0IHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGxldmVsLgorCisgICAgICAgIFRoZSBsZXZlbCBp
cyBwcm92aWRlZCBieSBpbnNwZWN0b3JMZXZlbCgpLCByYXRoZXIgdGhhbiBhIG1lbWJlciB2YXJp
YWJsZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yUHJveHkgaXMgY3JlYXRlZCBpbiB0aGUgY29uc3Ry
dWN0b3Igb2YgV2ViUGFnZVByb3h5LiBUaHVzLCB0aGVyZQorICAgICAgICB3b3VsZCBiZSBubyBj
aGFuY2UgdG8gYWRkIHRoZSBpbnNwZWN0b3IgcGFnZSdzIGxldmVsIHRvIHRoZSBtYXBwaW5nIGJl
Zm9yZSB0aGUKKyAgICAgICAgbmV4dCBsZXZlbCBpbnNwZWN0b3IgdHJpZXMgdG8gbG9vayBpdCB1
cCB3aGVuIGluaXRpYWxpemluZyBpdHMgbWVtYmVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgb3RoZXIgbWlzY2VsbGFuZW91cyBjbGVhbnVwcywgc3VjaCBhcyBuYW1pbmcgbV9w
YWdlCisgICAgICAgIHRvIG1faW5zcGVjdGVkUGFnZSwgdXNpbmcgUmVmIGFuZCB1c2luZyBhbiBl
bnVtIGNsYXNzIGZvciB0aGUgYXR0YWNobWVudCBzaWRlLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLSW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKFdLSW5zcGVjdG9yR2V0UGFnZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAocmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2ZXJH
dGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBhZ2VMZXZlbE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpXZWJJbnNwZWN0b3JQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JMZXZlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmlzRnJvbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmhpZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6ZGlkUmVsYXVuY2hJbnNwZWN0b3JQYWdlUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoUmlnaHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OmRldGFjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQ
YWdlUHJvZmlsaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmlzSW5z
cGVjdG9yUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRl
bmRDb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3Rl
RnJvbnRlbmREaXNjb25uZWN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yUHJveHk6OmVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JMZXZlbCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmlzSW5zcGVjdG9yUGFn
ZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUGFnZUdyb3Vw
czo6aW5zcGVjdG9yUGFnZUdyb3VwTGV2ZWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjppbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBhZ2VHcm91cHM6OmNyZWF0ZUluc3Bl
Y3RvclBhZ2VHcm91cCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5Ojp+V2ViSW5zcGVjdG9yUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZUdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3Bl
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6b3Bl
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVk
V2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1E
ZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICgtW1dLV2ViSW5zcGVjdG9yUHJv
eHlPYmpDQWRhcHRlciBhdHRhY2hSaWdodDpdKToKKyAgICAgICAgKC1bV0tXZWJJbnNwZWN0b3JQ
cm94eU9iakNBZGFwdGVyIGF0dGFjaEJvdHRvbTpdKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1CcmluZ1RvRnJvbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVj
dGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtSW5zcGVjdGVkV2luZG93V2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1BdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6cGxhdGZvcm1EZXRhY2gpOgorICAgICAgICAoLVtXS1dlYkluc3BlY3RvclByb3h5T2Jq
Q0FkYXB0ZXIgY2xvc2VdKTogRGVsZXRlZC4KKwogMjAxNS0wMi0wNCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgY29weWluZyBzdGQ6OmZ1bmN0aW9u
cyBhY3Jvc3MgdGhyZWFkcyBpbiBOZXR3b3JrQ2FjaGVTdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAppbmRleCA3NWExY2Q0ODA3ZTYzNTli
YjZhYjI5OWM5OWZlOTAyMTNkMzFmN2NlLi42YjAyMmUyOTQ5NWYyMGQwMGUwMGNlNjZmMWQ2NGFl
MDU3ZDMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0luc3Bl
Y3Rvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV0tUeXBlSUQgV0tJbnNwZWN0b3JHZXRUeXBlSUQo
KQogCiBXS1BhZ2VSZWYgV0tJbnNwZWN0b3JHZXRQYWdlKFdLSW5zcGVjdG9yUmVmIGluc3BlY3Rv
clJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGluc3BlY3RvclJlZiktPnBhZ2UoKSk7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnNwZWN0b3JSZWYpLT5pbnNwZWN0ZWRQYWdlKCkp
OwogfQogCiBib29sIFdLSW5zcGVjdG9ySXNDb25uZWN0ZWQoV0tJbnNwZWN0b3JSZWYgaW5zcGVj
dG9yUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IGE3OTMzZTcxZWI4YjQ5MmU5ZTIwMjE2MzNiZjIyYTMy
ODY2MDAwM2QuLmUwMWI3MzYwZjE0OTg1YTlkZTdlN2M0YjM0NTI5ODEyNTgyZjg4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJW
aWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAg
IGlmIChwcml2LT5pbnNwZWN0b3JWaWV3KSB7CiAgICAgICAgIEd0a0FsbG9jYXRpb24gY2hpbGRB
bGxvY2F0aW9uID0gdmlld1JlY3Q7CiAKLSAgICAgICAgaWYgKHByaXYtPmluc3BlY3RvckF0dGFj
aG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlQm90dG9tKSB7CisgICAgICAgIGlmIChwcml2LT5p
bnNwZWN0b3JBdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZTo6Qm90dG9tKSB7CiAgICAg
ICAgICAgICBpbnQgaW5zcGVjdG9yVmlld0hlaWdodCA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGlu
dD4ocHJpdi0+aW5zcGVjdG9yVmlld1NpemUpLCBhbGxvY2F0aW9uLT5oZWlnaHQpOwogICAgICAg
ICAgICAgY2hpbGRBbGxvY2F0aW9uLnggPSAwOwogICAgICAgICAgICAgY2hpbGRBbGxvY2F0aW9u
LnkgPSBhbGxvY2F0aW9uLT5oZWlnaHQgLSBpbnNwZWN0b3JWaWV3SGVpZ2h0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9lZmwvV2ViSW5zcGVj
dG9yU2VydmVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvZWZsL1dlYkluc3BlY3RvclNlcnZlckVmbC5jcHAKaW5kZXggOGVlMTYyOGZhMzZhYjA4NGRl
MGVkNDI5M2VkN2IxNzFmMzQ0Njg5MC4uMjFlZmE5Y2E5YmY4YmZmNjMyZmYzMGFjYmQ3N2RhOGU4
MzViZmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJFZmwuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpidWlsZFBhZ2VMaXN0KFZl
Y3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkKIAogICAgIENsaWVudE1hcDo6
aXRlcmF0b3IgZW5kID0gbV9jbGllbnRNYXAuZW5kKCk7CiAgICAgZm9yIChDbGllbnRNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9jbGllbnRNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+cGFnZSgpOworICAgICAgICBX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBpdC0+dmFsdWUtPmluc3BlY3RlZFBhZ2UoKTsKICAgICAg
ICAgaWYgKGl0ICE9IG1fY2xpZW50TWFwLmJlZ2luKCkpCiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZExpdGVyYWwoIiwgIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgieyBcImlk
XCI6ICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAKaW5kZXgg
NTAxMTY2NmIzZjI0MGI2OTdkMTFkNzcxODcxNzk3NWVhM2M3MDY0OS4uNTlkNzIwMzI3ZTU0ZDY3
MzgwMTFhOTNjYWRmZDY5NTliMzU1NjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0
b3JTZXJ2ZXJHdGsuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVy
OjpidWlsZFBhZ2VMaXN0KFZlY3RvcjxjaGFyPiYgZGF0YSwgU3RyaW5nJiBjb250ZW50VHlwZSkK
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlsgIik7CiAgICAgQ2xpZW50TWFwOjppdGVyYXRv
ciBlbmQgPSBtX2NsaWVudE1hcC5lbmQoKTsKICAgICBmb3IgKENsaWVudE1hcDo6aXRlcmF0b3Ig
aXQgPSBtX2NsaWVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gaXQtPnZhbHVlLT5wYWdlKCk7CisgICAgICAgIFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSA9IGl0LT52YWx1ZS0+aW5zcGVjdGVkUGFnZSgpOwogICAgICAgICBpZiAo
aXQgIT0gbV9jbGllbnRNYXAuYmVnaW4oKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiLCAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7IFwiaWRcIjogIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRl
eCAzYjA4ZTcwM2ZiYzRjMmQyODhlZmE5NzQ3N2IxNWQ1ZmUzNmU5YzBlLi5kMjBkNWRlNjc3MGI0
ZmUxNzcyMjJiNGM2YmQwNGFkYWE2ZTQyMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTU4LDkwICs1OCw0NSBAQCBjb25zdCB1bnNp
Z25lZCBXZWJJbnNwZWN0b3JQcm94eTo6bWluaW11bVdpbmRvd0hlaWdodCA9IDQwMDsKIGNvbnN0
IHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGggPSAxMDAwOwog
Y29uc3QgdW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQgPSA2
NTA7CiAKLWNsYXNzIFdlYkluc3BlY3RvclBhZ2VHcm91cHMgewotcHVibGljOgotICAgIHN0YXRp
YyBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzJiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdlYkluc3BlY3RvclBhZ2VHcm91cHM+IGluc3RhbmNlOwotICAg
ICAgICByZXR1cm4gaW5zdGFuY2U7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW5zcGVjdG9yTGV2
ZWwoV2ViUGFnZUdyb3VwJiBpbnNwZWN0ZWRQYWdlR3JvdXApCi0gICAgewotICAgICAgICByZXR1
cm4gaXNJbnNwZWN0b3JQYWdlR3JvdXAoaW5zcGVjdGVkUGFnZUdyb3VwKSA/IGluc3BlY3RvclBh
Z2VHcm91cExldmVsKGluc3BlY3RlZFBhZ2VHcm91cCkgKyAxIDogMTsKLSAgICB9Ci0KLSAgICBi
b29sIGlzSW5zcGVjdG9yUGFnZUdyb3VwKFdlYlBhZ2VHcm91cCYgZ3JvdXApCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9wYWdlR3JvdXBMZXZlbC5jb250YWlucygmZ3JvdXApOwotICAgIH0KLQot
ICAgIHVuc2lnbmVkIGluc3BlY3RvclBhZ2VHcm91cExldmVsKFdlYlBhZ2VHcm91cCYgZ3JvdXAp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNJbnNwZWN0b3JQYWdlR3JvdXAoZ3JvdXApKTsKLSAg
ICAgICAgcmV0dXJuIG1fcGFnZUdyb3VwTGV2ZWwuZ2V0KCZncm91cCk7Ci0gICAgfQotCi0gICAg
V2ViUGFnZUdyb3VwKiBpbnNwZWN0b3JQYWdlR3JvdXBGb3JMZXZlbCh1bnNpZ25lZCBsZXZlbCkK
LSAgICB7Ci0gICAgICAgIC8vIFRoZSBsZXZlbCBpcyB0aGUga2V5IG9mIHRoZSBIYXNoTWFwLCBz
byBpdCBjYW5ub3QgYmUgMC4KLSAgICAgICAgQVNTRVJUKGxldmVsKTsKLQotICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9wYWdlR3JvdXBCeUxldmVsLmZpbmQobGV2ZWwpOwotICAgICAgICBpZiAo
aXRlcmF0b3IgIT0gbV9wYWdlR3JvdXBCeUxldmVsLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJu
IGl0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKLQotICAgICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBn
cm91cCA9IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cChsZXZlbCk7Ci0gICAgICAgIG1fcGFnZUdy
b3VwQnlMZXZlbC5zZXQobGV2ZWwsIGdyb3VwLmdldCgpKTsKLSAgICAgICAgbV9wYWdlR3JvdXBM
ZXZlbC5zZXQoZ3JvdXAuZ2V0KCksIGxldmVsKTsKLSAgICAgICAgcmV0dXJuIGdyb3VwLmdldCgp
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlR3JvdXA+
IGNyZWF0ZUluc3BlY3RvclBhZ2VHcm91cCh1bnNpZ25lZCBsZXZlbCkKLSAgICB7Ci0gICAgICAg
IFJlZlB0cjxXZWJQYWdlR3JvdXA+IHBhZ2VHcm91cCA9IFdlYlBhZ2VHcm91cDo6Y3JlYXRlKFN0
cmluZzo6Zm9ybWF0KCJfX1dlYkluc3BlY3RvclBhZ2VHcm91cExldmVsJXVfXyIsIGxldmVsKSwg
ZmFsc2UsIGZhbHNlKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLy8gQWxsb3cgZGV2ZWxv
cGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0
IGNoYW5naW5nIHNldHRpbmdzLgotICAgICAgICBwYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJl
bmNlcygpLnNldExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKHRydWUpOwot
I2VuZGlmCi0KLSAgICAgICAgcGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKLQotICAgICAgICByZXR1cm4gcGFnZUdyb3VwLnJlbGVh
c2UoKTsKLSAgICB9Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxXZWJQ
YWdlR3JvdXA+ID4gUGFnZUdyb3VwQnlMZXZlbE1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
UGFnZUdyb3VwKiwgdW5zaWduZWQ+IFBhZ2VHcm91cExldmVsTWFwOwordHlwZWRlZiBIYXNoTWFw
PFdlYlBhZ2VQcm94eSosIHVuc2lnbmVkPiBQYWdlTGV2ZWxNYXA7CiAKLSAgICBQYWdlR3JvdXBC
eUxldmVsTWFwIG1fcGFnZUdyb3VwQnlMZXZlbDsKLSAgICBQYWdlR3JvdXBMZXZlbE1hcCBtX3Bh
Z2VHcm91cExldmVsOwotfTsKK3N0YXRpYyBQYWdlTGV2ZWxNYXAmIHBhZ2VMZXZlbE1hcCgpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhZ2VMZXZlbE1hcD4gbWFwOworICAgIHJldHVy
biBtYXA7Cit9CiAKLVdlYkluc3BlY3RvclByb3h5OjpXZWJJbnNwZWN0b3JQcm94eShXZWJQYWdl
UHJveHkqIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKK1dlYkluc3BlY3RvclByb3h5OjpXZWJJ
bnNwZWN0b3JQcm94eShXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCisgICAgOiBtX2luc3Bl
Y3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFC
TEVECiAgICAgLCBtX2Nsb3NlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlVGltZXJGaXJlZCkKICNlbmRpZgogewotICAgIG1fbGV2ZWwgPSBXZWJJ
bnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JMZXZlbChtX3BhZ2UtPnBh
Z2VHcm91cCgpKTsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKIH0KIAogV2ViSW5zcGVj
dG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCiB7CiB9CiAKLVdlYlBhZ2VHcm91cCogV2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0Cit1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yTGV2ZWwoKSBjb25zdAoreworICAgIGF1dG8gZmluZFJl
c3VsdCA9IHBhZ2VMZXZlbE1hcCgpLmZpbmQoaW5zcGVjdGVkUGFnZSgpKTsKKyAgICBpZiAoZmlu
ZFJlc3VsdCAhPSBwYWdlTGV2ZWxNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZpbmRSZXN1
bHQtPnZhbHVlICsgMTsKKworICAgIHJldHVybiAxOworfQorCitTdHJpbmcgV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVy
biBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5nbGV0b24oKS5pbnNwZWN0b3JQYWdlR3JvdXBG
b3JMZXZlbChtX2xldmVsKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIl9fV2ViSW5zcGVj
dG9yUGFnZUdyb3VwTGV2ZWwldV9fIiwgaW5zcGVjdG9yTGV2ZWwoKSk7CiB9CiAKIFdlYlByZWZl
cmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7Cisg
ICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgcmV0dXJuIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
aW52YWxpZGF0ZSgpCkBAIC0xNTEsMTggKzEwNiwxOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjppbnZhbGlkYXRlKCkKICAgICAgICAgV2ViSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS51
bnJlZ2lzdGVyUGFnZShtX3JlbW90ZUluc3BlY3Rpb25QYWdlSWQpOwogI2VuZGlmCiAKLSAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRDbG9zZSgpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0
ZSgpOwogCi0gICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBwYWdlTGV2ZWxNYXAoKS5yZW1vdmUo
bV9pbnNwZWN0ZWRQYWdlKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UgPSBudWxscHRyOwogfQogCiAv
LyBQdWJsaWMgQVBJcwogYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNGcm9udCgpCiB7Ci0gICAg
aWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHJldHVybiBwbGF0Zm9ybUlzRnJvbnQoKTsKQEAgLTE3MCw3ICsxMjYsNyBA
QCBib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3Rl
ZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Nob3dNZXNzYWdlU2VudCkKQEAg
LTE4MSwxMiArMTM3LDEyIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogCiAg
ICAgZWFnZXJseUNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNob3coKQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNw
ZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkgewpA
QCAtMjAyLDcgKzE1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpoaWRlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAgICBpZiAo
IW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc1Zpc2libGUgPSBm
YWxzZTsKQEAgLTIxMiw4NiArMTY4LDg2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmhpZGUo
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgpCiB7Ci0gICAgaWYgKCFtX3BhZ2Up
CisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAog
ICAgIGRpZENsb3NlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmRpZFJlbGF1bmNo
SW5zcGVjdG9yUGFnZVByb2Nlc3MoKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwg
KnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVSTCgpKTsKIAogICAgIC8vIFdoZW4gZGlkUmVsYXVuY2hJ
bnNwZWN0b3JQYWdlUHJvY2VzcyBpcyBjYWxsZWQgd2UgY2FuIGFzc3VtZSBpdCBpcyBkdXJpbmcg
YSBsb2FkIHJlcXVlc3QuCiAgICAgLy8gQW55IG1lc3NhZ2VzIHdlIHdvdWxkIGhhdmUgc2VudCB0
byBhIHRlcm1pbmF0ZWQgcHJvY2VzcyBuZWVkIHRvIGJlIHJlLXNlbnQuCiAKLSAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJs
aXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hD
b25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKKyAg
ICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZWFnZXJseUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAg
aWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVh
dGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSog
ZnJhbWUpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGVhZ2VybHlDcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAKLSAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0
b20oKQogewotICAgIGF0dGFjaChBdHRhY2htZW50U2lkZUJvdHRvbSk7CisgICAgYXR0YWNoKEF0
dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRh
Y2hSaWdodCgpCiB7Ci0gICAgYXR0YWNoKEF0dGFjaG1lbnRTaWRlUmlnaHQpOworICAgIGF0dGFj
aChBdHRhY2htZW50U2lkZTo6UmlnaHQpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojph
dHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKIHsKLSAgICBpZiAoIW1fcGFnZSB8fCAhY2FuQXR0
YWNoKCkpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UgfHwgIWNhbkF0dGFjaCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNoZWQgPSB0cnVlOwogICAgIG1fYXR0YWNobWVudFNp
ZGUgPSBzaWRlOwogCi0gICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9y
QXR0YWNobWVudFNpZGUoc2lkZSk7CisgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0
SW5zcGVjdG9yQXR0YWNobWVudFNpZGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNpZGUpKTsKIAog
ICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCku
c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgIGNhc2UgQXR0YWNo
bWVudFNpZGVCb3R0b206CisgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgogICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAg
IGJyZWFrOwogCi0gICAgY2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OgorICAgIGNhc2UgQXR0YWNo
bWVudFNpZGU6OlJpZ2h0OgogICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzAxLDcgKzI1Nyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW50U2lkZSBzaWRlKQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogewotICAgIGlmICghbV9wYWdlKQorICAg
IGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzQXR0YWNo
ZWQgPSBmYWxzZTsKQEAgLTMwOSw3ICsyNjUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpk
ZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZl
cmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxz
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwpAQCAtMzI5LDIzICsyODUsMTggQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0
aCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiB7Ci0g
ICAgaWYgKCFtX3BhZ2UpCisgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBv
biBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQYWdlID0gIW1faXNQcm9maWxpbmdQ
YWdlOwogfQogCi1ib29sIFdlYkluc3BlY3RvclByb3h5Ojppc0luc3BlY3RvclBhZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBXZWJJbnNwZWN0b3JQYWdlR3JvdXBzOjpzaW5n
bGV0b24oKS5pc0luc3BlY3RvclBhZ2VHcm91cChwYWdlLnBhZ2VHcm91cCgpKTsKLX0KLQogV2Vi
UHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9jZXNzUG9vbCgpCiB7
CiAgICAgLy8gSGF2aW5nIG91ciBvd24gcHJvY2VzcyBwb29sIHJlbW92ZXMgdXMgZnJvbSB0aGUg
bWFpbiBwcm9jZXNzIHBvb2wgYW5kCkBAIC0zNTksNiArMzEwLDExIEBAIFdlYlByb2Nlc3NQb29s
JiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUHJvY2Vzc1Bvb2woKQogICAgIHJldHVybiAq
cHJvY2Vzc1Bvb2w7CiB9CiAKK2Jvb2wgV2ViSW5zcGVjdG9yUHJveHk6OmlzSW5zcGVjdG9yUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIHBhZ2VMZXZlbE1hcCgpLmNv
bnRhaW5zKCZ3ZWJQYWdlKTsKK30KKwogc3RhdGljIGJvb2wgaXNNYWluT3JUZXN0SW5zcGVjdG9y
UGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0UmVmKQogewogICAgIFVSTCByZXF1ZXN0VVJMKFVSTCgpLCB0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKQEAgLTQwOSw3ICszNjUsNyBA
QCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiBmcmFtZVJlZiwgV0tGcgogICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPmlnbm9y
ZSgpOwogCiAgICAgLy8gQW5kIGluc3RlYWQgbG9hZCBpdCBpbiB0aGUgaW5zcGVjdGVkIHBhZ2Uu
Ci0gICAgd2ViSW5zcGVjdG9yUHJveHktPnBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgd2ViSW5zcGVjdG9yUHJveHktPmluc3Bl
Y3RlZFBhZ2UoKS0+bG9hZFJlcXVlc3QodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVl
c3QoKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKQEAgLTQyMSwxNyArMzc3
LDE3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVG
cm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5k
Q29ubmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpyZW1vdGVGcm9udGVuZERpc2Nvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZERp
c2Nvbm5lY3RlZCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29u
bmVjdGVkKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogfQogI2VuZGlmCiAKQEAgLTQ0NSw2ICs0MDEsOCBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjplYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHBhZ2VMZXZlbE1hcCgpLnNldChtX2luc3Bl
Y3RvclBhZ2UsIGluc3BlY3RvckxldmVsKCkpOworCiAgICAgV0tQYWdlUG9saWN5Q2xpZW50VjEg
cG9saWN5Q2xpZW50ID0gewogICAgICAgICB7IDEsIHRoaXMgfSwKICAgICAgICAgbnVsbHB0ciwg
Ly8gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
CkBAIC01MDEsMTQgKzQ1OSwxNCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjplYWdlcmx5Q3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudCh0b0FQSSht
X2luc3BlY3RvclBhZ2UpLCAmcG9saWN5Q2xpZW50LmJhc2UpOwogICAgIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQodG9BUEkobV9pbnNwZWN0b3JQYWdlKSwgJmxvYWRlckNsaWVudC5iYXNlKTsK
IAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5w
YWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoaW5zcGVjdG9yQmFzZVVS
TCgpKTsKIH0KIAogLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclByb3h5IG1lc3NhZ2VzCiB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKElQQzo6QXR0YWNobWVudCBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQogewot
ICAgIGlmICghbV9wYWdlKQorICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1
cm47CiAKICAgICBlYWdlcmx5Q3JlYXRlSW5zcGVjdG9yUGFnZSgpOwpAQCAtNTIwLDIyICs0Nzgs
MjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUGFnZShJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVz
dDsKICAgICBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbklkZW50aWZpZXI7CiAK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2Nvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpFc3RhYmxpc2hDb25uZWN0aW9uKG1fY29ubmVjdGlvbklkZW50aWZpZXIsIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CiAKICAgICBpZiAoIW1fdW5kZXJUZXN0KSB7CiAgICAgICAgIG1fY2FuQXR0YWNoID0gY2FuQXR0
YWNoOwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAg
ICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFj
aGVkKG1faXNBdHRhY2hlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVk
KG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewotICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKICAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0
b20oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKKyAgICAgICAgICAgIGNh
c2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgogICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNTYxLDcgKzUxOSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmRpZENsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogICAgIG1faW5zcGVjdG9yUGFnZSA9IG51
bGxwdHI7CiAKICAgICBtX2lzVmlzaWJsZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCAyZDgyMmY1MmEyOTE2ZDRiOGRmYjUxYTNh
NTlhNjIwMjEwYzBjNWYyLi4wNzE3ZGQzYWMwMjc3N2EzZGQyNmE5MmI4YTEwYmVlYWI0NTE3NWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaApAQCAt
NjQsMTYgKzY0LDE2IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2Vz
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKLWVudW0gQXR0YWNobWVudFNpZGUgewotICAgIEF0
dGFjaG1lbnRTaWRlQm90dG9tLAotICAgIEF0dGFjaG1lbnRTaWRlUmlnaHQKK2VudW0gY2xhc3Mg
QXR0YWNobWVudFNpZGUgeworICAgIEJvdHRvbSwKKyAgICBSaWdodAogfTsKIAogY2xhc3MgV2Vi
SW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3I+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkluc3BlY3RvclByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yUHJveHk+IGNyZWF0ZShXZWJQYWdl
UHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkluc3BlY3RvclByb3h5KHBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViSW5zcGVjdG9yUHJveHkoaW5zcGVjdGVkUGFnZSkpOwogICAgIH0KIAogICAgIH5XZWJJbnNw
ZWN0b3JQcm94eSgpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCk7CiAKICAgICAvLyBQdWJsaWMgQVBJcwotICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQogCiAgICAgYm9vbCBpc0Nvbm5lY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9CiAgICAgYm9vbCBpc1Zpc2li
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7
IH0KICAgICB2b2lkIGF0dGFjaFJpZ2h0KCk7CiAgICAgdm9pZCBhdHRhY2hCb3R0b20oKTsKLSAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlQm90dG9tKTsKKyAg
ICB2b2lkIGF0dGFjaChBdHRhY2htZW50U2lkZSA9IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwog
ICAgIHZvaWQgZGV0YWNoKCk7CiAKICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkKTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Byb2ZpbGlu
Z1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvZmlsaW5nUGFnZTsgfQogICAgIHZvaWQgdG9n
Z2xlUGFnZVByb2ZpbGluZygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNJbnNwZWN0b3JQYWdlKFdl
YlBhZ2VQcm94eSYpOwogICAgIHN0YXRpYyBXZWJQcm9jZXNzUG9vbCYgaW5zcGVjdG9yUHJvY2Vz
c1Bvb2woKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luc3BlY3RvclBhZ2UoV2ViUGFnZVByb3h5Jik7
CiAKICAgICAvLyBQcm92aWRlZCBieSBwbGF0Zm9ybSBXZWJJbnNwZWN0b3JQcm94eSBpbXBsZW1l
bnRhdGlvbnMuCiAgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKSBjb25zdDsKQEAgLTE5Miw5
ICsxOTIsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgb3BlbigpOwogCi0gICAgLy8gRklYTUU6
IHRoaXMgc2hvdWxkIHJldHVybiB0aGUgcGFnZSBncm91cCBpZGVudGlmaWVyLCBub3QgYW4gaW5z
dGFuY2UuIFRoZSBNYWMgcG9ydCBjYW5ub3QKLSAgICAvLyBkaXJlY3RseSBwcm92aWRlIGEgcGFn
ZSBncm91cCBpbnN0YW5jZSwgYW5kIGluc3RhbmNlcyBhcmUgbm90IG5lY2Vzc2FyeSB0byBjb21w
dXRlIGxldmVscy4KLSAgICBXZWJQYWdlR3JvdXAqIGluc3BlY3RvclBhZ2VHcm91cCgpIGNvbnN0
OworICAgIC8vIFRoZSBpbnNwZWN0b3IgbGV2ZWwgaXMgdXNlZCB0byBnaXZlIGRpZmZlcmVudCBw
cmVmZXJlbmNlcyB0byBlYWNoIGluc3BlY3RvcgorICAgIC8vIGxldmVsIGJ5IHNldHRpbmcgYSBw
ZXItbGV2ZWwgcGFnZSBncm91cCBpZGVudGlmaWVyLgorICAgIHVuc2lnbmVkIGluc3BlY3Rvckxl
dmVsKCkgY29uc3Q7CisgICAgU3RyaW5nIGluc3BlY3RvclBhZ2VHcm91cElkZW50aWZpZXIoKSBj
b25zdDsKICAgICBXZWJQcmVmZXJlbmNlcyYgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29u
c3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKQEAgLTIxMiw3ICsyMTMs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbml0aWFsV2luZG93V2lk
dGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluaXRpYWxXaW5kb3dIZWlnaHQ7CiAKLSAg
ICBXZWJQYWdlUHJveHkqIG1fcGFnZSB7bnVsbHB0cn07CisgICAgV2ViUGFnZVByb3h5KiBtX2lu
c3BlY3RlZFBhZ2Uge251bGxwdHJ9OwogICAgIFdlYlBhZ2VQcm94eSogbV9pbnNwZWN0b3JQYWdl
IHtudWxscHRyfTsKIAogICAgIGJvb2wgbV91bmRlclRlc3Qge2ZhbHNlfTsKQEAgLTIyMywxNCAr
MjI0LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd01lc3NhZ2VTZW50IHtmYWxzZX07CiAg
ICAgYm9vbCBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250IHtmYWxzZX07CiAKLSAgICAvLyBUaGUg
ZGVidWdnZXIgc3RvcHMgYWxsIHRoZSBwYWdlcyBpbiB0aGUgc2FtZSBQYWdlR3JvdXAuIEhhdmlu
ZwotICAgIC8vIGFsbCB0aGUgaW5zcGVjdG9ycyBpbiB0aGUgc2FtZSBncm91cCB3aWxsIG1ha2Ug
aXQgaW1wb3NzaWJsZSB0byBkZWJ1ZwotICAgIC8vIHRoZSBpbnNwZWN0b3IgY29kZSwgc28gd2Ug
dXNlIHRoZSBsZXZlbCB0byBtYWtlIGRpZmZlcmVudCBwYWdlIGdyb3Vwcy4KLSAgICB1bnNpZ25l
ZCBtX2xldmVsOwotICAgIAogICAgIElQQzo6QXR0YWNobWVudCBtX2Nvbm5lY3Rpb25JZGVudGlm
aWVyOwogCi0gICAgQXR0YWNobWVudFNpZGUgbV9hdHRhY2htZW50U2lkZSB7QXR0YWNobWVudFNp
ZGVCb3R0b219OworICAgIEF0dGFjaG1lbnRTaWRlIG1fYXR0YWNobWVudFNpZGUge0F0dGFjaG1l
bnRTaWRlOjpCb3R0b219OwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAog
ICAgIFJldGFpblB0cjxXS1dlYkluc3BlY3RvcldLV2ViVmlldz4gbV9pbnNwZWN0b3JWaWV3Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5
RWZsLmNwcAppbmRleCBiZGQxMGEzOTM4OTM3NTgxNGFjYWJhNTMwOWM4YjYzMmE5M2VjOGVjLi44
MzBlYjRjYTdkYTRjODA1OGU4ZDg1ODZjYzg1NzUxZWIyMDllZDZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAt
ODksNyArODksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JXaW5k
b3coKQogCiBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUlu
c3BlY3RvclBhZ2UoKQogewotICAgIEFTU0VSVChtX3BhZ2UpOworICAgIEFTU0VSVChtX2luc3Bl
Y3RlZFBhZ2UpOwogCiAjaWZkZWYgSEFWRV9FQ09SRV9YCiAgICAgY29uc3QgY2hhciogZW5naW5l
ID0gIm9wZW5nbF94MTEiOwpAQCAtMTAzLDcgKzEwMyw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgV0tDb250ZXh0UmVmIHdrQ29udGV4dCA9IHRvQVBJKCZpbnNwZWN0b3JQcm9j
ZXNzUG9vbCgpKTsKLSAgICBXS1BhZ2VHcm91cFJlZiB3a1BhZ2VHcm91cCA9IHRvQVBJKGluc3Bl
Y3RvclBhZ2VHcm91cCgpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tHcm91cElk
ZW50aWZpZXIgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGluc3BlY3Rv
clBhZ2VHcm91cElkZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tQYWdlR3JvdXBS
ZWYgd2tQYWdlR3JvdXAgPSBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKHdrR3JvdXBJ
ZGVudGlmaWVyLmdldCgpKTsKIAogICAgIG1faW5zcGVjdG9yVmlldyA9IEVXS1ZpZXdDcmVhdGUo
d2tDb250ZXh0LCB3a1BhZ2VHcm91cCwgZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cp
LCAvKiBzbWFydCAqLyAwKTsKICAgICBXS1ZpZXdSZWYgd2tWaWV3ID0gRVdLVmlld0dldFdLVmll
dyhtX2luc3BlY3RvclZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJJbnNwZWN0b3JQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYkluc3BlY3RvclByb3h5R3RrLmNwcAppbmRleCBlZTY3MjcxMmQ4YjU2YmFhOWM1NzA0
NDNhMzA2NDJlMWZiODczMjA5Li5jNDQ2ZjQxNzkyZTY5Mzc3ODc2ODNlM2UwMjNlMGIwMDdlOTQ5
MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3BlY3Rv
clByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkluc3Bl
Y3RvclByb3h5R3RrLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKKyNpbmNs
dWRlICJXZWJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGll
cy5oPgpAQCAtNTgsOSArNTksMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbGl6
ZUluc3BlY3RvckNsaWVudEd0ayhjb25zdCBXS0luc3BlY3RvckNsaWVudEd0a0IKIAogV2ViUGFn
ZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkK
IHsKLSAgICBBU1NFUlQobV9wYWdlKTsKKyAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAg
ICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7Ci0gICAgbV9pbnNwZWN0b3JWaWV3ID0gR1RLX1dJ
REdFVCh3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZSgmaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSwgbnVs
bHB0ciwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICBSZWZQ
dHI8V2ViUGFnZUdyb3VwPiBwYWdlR3JvdXAgPSBXZWJQYWdlR3JvdXA6OmNyZWF0ZShpbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyKCksIGZhbHNlLCBmYWxzZSkubGVha1JlZigpOworICAgIG1f
aW5zcGVjdG9yVmlldyA9IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2VDcmVhdGUoJmluc3Bl
Y3RvclByb2Nlc3NQb29sKCksIG51bGxwdHIsIHBhZ2VHcm91cC5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cikpOwogICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QobV9pbnNwZWN0
b3JWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX2luc3BlY3RvclZpZXcpKTsKICAg
ICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1f
aW5zcGVjdG9yVmlldykpOwogfQpAQCAtNjgsOSArNzAsOSBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UoKQogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6ZG9ja0J1dHRvbkNsaWNrZWQoR3RrV2lkZ2V0KiBidXR0b24sIFdlYkluc3Bl
Y3RvclByb3h5KiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKGJ1dHRvbiA9PSBpbnNwZWN0b3ItPm1f
ZG9ja0JvdHRvbUJ1dHRvbikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNp
ZGVCb3R0b20pOworICAgICAgICBpbnNwZWN0b3ItPmF0dGFjaChBdHRhY2htZW50U2lkZTo6Qm90
dG9tKTsKICAgICBlbHNlIGlmIChidXR0b24gPT0gaW5zcGVjdG9yLT5tX2RvY2tSaWdodEJ1dHRv
bikKLSAgICAgICAgaW5zcGVjdG9yLT5hdHRhY2goQXR0YWNobWVudFNpZGVSaWdodCk7CisgICAg
ICAgIGluc3BlY3Rvci0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTgzLDcgKzg1LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yV2luZG93KTsKICAgICBtX2luc3BlY3RvcldpbmRvdyA9IGd0a193aW5kb3dfbmV3
KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogCi0gICAgR3RrV2lkZ2V0KiBpbnNwZWN0ZWRWaWV3UGFy
ZW50ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwobV9wYWdlLT52aWV3V2lkZ2V0KCkpOworICAg
IEd0a1dpZGdldCogaW5zcGVjdGVkVmlld1BhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVs
KGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKTsKICAgICBpZiAoV2ViQ29yZTo6d2lkZ2V0
SXNPbnNjcmVlblRvcGxldmVsV2luZG93KGluc3BlY3RlZFZpZXdQYXJlbnQpKQogICAgICAgICBn
dGtfd2luZG93X3NldF90cmFuc2llbnRfZm9yKEdUS19XSU5ET1cobV9pbnNwZWN0b3JXaW5kb3cp
LCBHVEtfV0lORE9XKGluc3BlY3RlZFZpZXdQYXJlbnQpKTsKIApAQCAtMjE5LDEyICsyMjEsMTIg
QEAgU3RyaW5nIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkgY29uc3QKIAog
dW5zaWduZWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSW5zcGVjdGVkV2luZG93SGVpZ2h0
KCkKIHsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodChtX3BhZ2Ut
PnZpZXdXaWRnZXQoKSk7CisgICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF9oZWln
aHQoaW5zcGVjdGVkUGFnZSgpLT52aWV3V2lkZ2V0KCkpOwogfQogCiB1bnNpZ25lZCBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Ci0gICAgcmV0dXJu
IGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChtX3BhZ2UtPnZpZXdXaWRnZXQoKSk7Cisg
ICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChpbnNwZWN0ZWRQYWdlKCkt
PnZpZXdXaWRnZXQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0
YWNoKCkKQEAgLTI0MSw3ICsyNDMsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUF0dGFjaCgpCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1BdHRhY2hlZFdpZHRo
ID0gNzUwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtaW5pbXVtQXR0YWNoZWRIZWlnaHQg
PSAyNTA7CiAKLSAgICBpZiAobV9hdHRhY2htZW50U2lkZSA9PSBBdHRhY2htZW50U2lkZUJvdHRv
bSkgeworICAgIGlmIChtX2F0dGFjaG1lbnRTaWRlID09IEF0dGFjaG1lbnRTaWRlOjpCb3R0b20p
IHsKICAgICAgICAgdW5zaWduZWQgbWF4aW11bUF0dGFjaGVkSGVpZ2h0ID0gcGxhdGZvcm1JbnNw
ZWN0ZWRXaW5kb3dIZWlnaHQoKSAqIDMgLyA0OwogICAgICAgICBwbGF0Zm9ybVNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHN0ZDo6bWF4KG1pbmltdW1BdHRhY2hlZEhlaWdodCwgc3RkOjptaW4oZGVm
YXVsdEF0dGFjaGVkU2l6ZSwgbWF4aW11bUF0dGFjaGVkSGVpZ2h0KSkpOwogICAgIH0gZWxzZSB7
CkBAIC0yNTIsMTMgKzI1NCwxMyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0
dGFjaCgpCiAgICAgaWYgKG1fY2xpZW50LmF0dGFjaCh0aGlzKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCBtX2luc3BlY3RvclZpZXcsIG1fYXR0YWNobWVudFNp
ZGUpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdFQktJVF9XRUJfVklF
V19CQVNFKGluc3BlY3RlZFBhZ2UoKS0+dmlld1dpZGdldCgpKSwgbV9pbnNwZWN0b3JWaWV3LCBt
X2F0dGFjaG1lbnRTaWRlKTsKICAgICBndGtfd2lkZ2V0X3Nob3cobV9pbnNwZWN0b3JWaWV3KTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1EZXRhY2goKQogewotICAgIGlm
ICghbV9wYWdlLT5pc1ZhbGlkKCkpCisgICAgaWYgKCFpbnNwZWN0ZWRQYWdlKCktPmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR1JlZlB0cjxHdGtXaWRnZXQ+IGluc3BlY3RvclZp
ZXcgPSBtX2luc3BlY3RvclZpZXc7CkBAIC0yODAsNyArMjgyLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkSGVpZ2h0
KHRoaXMsIGhlaWdodCk7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3BhZ2UtPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7Cisg
ICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJRVdf
QkFTRShpbnNwZWN0ZWRQYWdlKCktPnZpZXdXaWRnZXQoKSksIGhlaWdodCk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCB3aWR0aCkKQEAgLTI4OSw3ICsyOTEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybVNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgd2lkdGgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fY2xpZW50LmRpZENoYW5nZUF0dGFjaGVkV2lkdGgodGhpcywgd2lkdGgpOwot
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9yVmlld1NpemUoV0VCS0lUX1dFQl9WSUVX
X0JBU0UobV9wYWdlLT52aWV3V2lkZ2V0KCkpLCB3aWR0aCk7CisgICAgd2Via2l0V2ViVmlld0Jh
c2VTZXRJbnNwZWN0b3JWaWV3U2l6ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRShpbnNwZWN0ZWRQYWdl
KCktPnZpZXdXaWRnZXQoKSksIHdpZHRoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1TZXRUb29sYmFySGVpZ2h0KHVuc2lnbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMDUxMjM3N2I1
ZmQ2Y2I1MTFhNWI5NGRkN2E0MzI1NzkyYzU3ZTVhMi4uY2JlYWZlM2M5MTRiM2RhNjQxZWQyYzNh
NjJlNzg2YzU2NjQwMTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xMTQsMTIgKzExNCwxMiBAQCAtIChpZClp
bml0V2l0aFdlYkluc3BlY3RvclByb3h5OihXZWJJbnNwZWN0b3JQcm94eSopaW5zcGVjdG9yUHJv
eHkKIAogLSAoSUJBY3Rpb24pYXR0YWNoUmlnaHQ6KGlkKXNlbmRlcgogewotICAgIHN0YXRpY19j
YXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1l
bnRTaWRlUmlnaHQpOworICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3Bl
Y3RvclByb3h5KS0+YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpSaWdodCk7CiB9CiAKIC0gKElCQWN0
aW9uKWF0dGFjaEJvdHRvbTooaWQpc2VuZGVyCiB7Ci0gICAgc3RhdGljX2Nhc3Q8V2ViSW5zcGVj
dG9yUHJveHkqPihfaW5zcGVjdG9yUHJveHkpLT5hdHRhY2goQXR0YWNobWVudFNpZGVCb3R0b20p
OworICAgIHN0YXRpY19jYXN0PFdlYkluc3BlY3RvclByb3h5Kj4oX2luc3BlY3RvclByb3h5KS0+
YXR0YWNoKEF0dGFjaG1lbnRTaWRlOjpCb3R0b20pOwogfQogCiAtICh2b2lkKWNsb3NlCkBAIC0y
ODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcnVuT3BlblBhbmVsKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnMKICAgICAgICAgICAgIFdLUmVs
ZWFzZShmaWxlVVJMcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0tPcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lckNhbmNlbChsaXN0ZW5lcik7Ci0gICAgICAgIAorCiAgICAgICAgIFdLUmVs
ZWFzZShsaXN0ZW5lcik7CiAgICAgfV07CiB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yV2luZG93KCkKICAgICBOU1JlY3Qgd2luZG93
RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIGluaXRpYWxXaW5kb3dXaWR0aCwgaW5pdGlhbFdpbmRv
d0hlaWdodCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSBzYXZlZCB3aW5kb3cgZnJhbWUsIGlmIHRo
ZXJlIHdhcyBvbmUuCi0gICAgTlNTdHJpbmcgKnNhdmVkV2luZG93RnJhbWVTdHJpbmcgPSBwYWdl
KCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2luZG93RnJhbWUoKTsKKyAg
ICBOU1N0cmluZyAqc2F2ZWRXaW5kb3dGcmFtZVN0cmluZyA9IGluc3BlY3RlZFBhZ2UoKS0+cGFn
ZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JXaW5kb3dGcmFtZSgpOwogICAgIE5TUmVj
dCBzYXZlZFdpbmRvd0ZyYW1lID0gTlNSZWN0RnJvbVN0cmluZyhzYXZlZFdpbmRvd0ZyYW1lU3Ry
aW5nKTsKICAgICBpZiAoIU5TSXNFbXB0eVJlY3Qoc2F2ZWRXaW5kb3dGcmFtZSkpCiAgICAgICAg
IHdpbmRvd0ZyYW1lID0gc2F2ZWRXaW5kb3dGcmFtZTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5Ojp1cGRhdGVJbnNwZWN0b3JXaW5kb3dUaXRsZSgpIGNvbnN0CiAK
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9y
UGFnZSgpCiB7Ci0gICAgQVNTRVJUKG1fcGFnZSk7CisgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2Uo
KSk7CiAKICAgICBtX2Nsb3NlVGltZXIuc3RvcCgpOwogCkBAIC00NjEsMjAgKzQ2MSwyMCBAQCBX
ZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBh
Z2UoKQogCiAgICAgTlNSZWN0IGluaXRpYWxSZWN0OwogICAgIGlmIChtX2lzQXR0YWNoZWQpIHsK
LSAgICAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdGcmFtZSA9IG1fcGFnZS0+d2tWaWV3KCkuZnJh
bWU7CisgICAgICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBpbnNwZWN0ZWRQYWdlKCkt
PndrVmlldygpLmZyYW1lOwogCiAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewot
ICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOgorICAgICAgICBjYXNlIEF0dGFjaG1l
bnRTaWRlOjpCb3R0b206CiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IE5TTWFrZVJlY3QoMCwg
MCwgTlNXaWR0aChpbnNwZWN0ZWRWaWV3RnJhbWUpLCBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMo
KS5pbnNwZWN0b3JBdHRhY2hlZEhlaWdodCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlUmlnaHQ6CisgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6
OlJpZ2h0OgogICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIGluc3Bl
Y3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkV2lkdGgoKSwgTlNIZWlnaHQo
aW5zcGVjdGVkVmlld0ZyYW1lKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIGluaXRpYWxSZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBpbml0aWFs
V2luZG93V2lkdGgsIGluaXRpYWxXaW5kb3dIZWlnaHQpOwogCi0gICAgICAgIE5TU3RyaW5nICp3
aW5kb3dGcmFtZVN0cmluZyA9IHBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5pbnNw
ZWN0b3JXaW5kb3dGcmFtZSgpOworICAgICAgICBOU1N0cmluZyAqd2luZG93RnJhbWVTdHJpbmcg
PSBpbnNwZWN0ZWRQYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkuaW5zcGVjdG9yV2lu
ZG93RnJhbWUoKTsKICAgICAgICAgTlNSZWN0IHdpbmRvd0ZyYW1lID0gTlNSZWN0RnJvbVN0cmlu
Zyh3aW5kb3dGcmFtZVN0cmluZyk7CiAgICAgICAgIGlmICghTlNJc0VtcHR5UmVjdCh3aW5kb3dG
cmFtZSkpCiAgICAgICAgICAgICBpbml0aWFsUmVjdCA9IFtOU1dpbmRvdyBjb250ZW50UmVjdEZv
ckZyYW1lUmVjdDp3aW5kb3dGcmFtZSBzdHlsZU1hc2s6d2luZG93U3R5bGVNYXNrXTsKQEAgLTQ4
OSw3ICs0ODksNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogI2VuZGlmCiAgICAgcHJlZmVyZW5jZXMuX2FsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsKICAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9v
bDogOjpXZWJLaXQ6OndyYXBwZXIoaW5zcGVjdG9yUHJvY2Vzc1Bvb2woKSldOwotICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwKCktPmlkZW50
aWZpZXIoKV07CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEdyb3VwSWRlbnRpZmllcjppbnNwZWN0
b3JQYWdlR3JvdXBJZGVudGlmaWVyKCldOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViSW5zcGVjdG9yV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxS
ZWN0IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEFTU0VSVChtX2lu
c3BlY3RvclZpZXcpOwpAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQnJpbmdUb0Zyb250KCkKICAgICAvLyBJZiB0aGUgV2ViIEluc3BlY3RvciBpcyBu
byBsb25nZXIgaW4gdGhlIHNhbWUgd2luZG93IGFzIHRoZSBpbnNwZWN0ZWQgdmlldywKICAgICAv
LyB0aGVuIHdlIG5lZWQgdG8gcmVvcGVuIHRoZSBJbnNwZWN0b3IgdG8gZ2V0IGl0IGF0dGFjaGVk
IHRvIHRoZSByaWdodCB3aW5kb3cuCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIHdoZW4gZHJhZ2dp
bmcgdGFicyB0byBhbm90aGVyIHdpbmRvdyBpbiBTYWZhcmkuCi0gICAgaWYgKG1faXNBdHRhY2hl
ZCAmJiBtX2luc3BlY3RvclZpZXcuZ2V0KCkud2luZG93ICE9IG1fcGFnZS0+d2tWaWV3KCkud2lu
ZG93KSB7CisgICAgaWYgKG1faXNBdHRhY2hlZCAmJiBtX2luc3BlY3RvclZpZXcuZ2V0KCkud2lu
ZG93ICE9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCkud2luZG93KSB7CiAgICAgICAgIHBsYXRm
b3JtT3BlbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzE5LDcgKzcxOSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgTlNTdHJpbmcgKmZyYW1lU3RyaW5nID0gTlNTdHJpbmdGcm9tUmVjdChbbV9p
bnNwZWN0b3JXaW5kb3cgZnJhbWVdKTsKLSAgICBwYWdlKCktPnBhZ2VHcm91cCgpLnByZWZlcmVu
Y2VzKCkuc2V0SW5zcGVjdG9yV2luZG93RnJhbWUoZnJhbWVTdHJpbmcpOworICAgIGluc3BlY3Rl
ZFBhZ2UoKS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JXaW5kb3dGcmFt
ZShmcmFtZVN0cmluZyk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RlZFZp
ZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCkBAIC03MjcsNDAgKzcy
Nyw0MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFu
Z2UoQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9uKQogICAgIGlmICghbV9pc0F0dGFjaGVkIHx8ICFt
X2lzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3
ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0
ZWRQYWdlKCktPndrVmlldygpOwogICAgIE5TUmVjdCBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBbaW5z
cGVjdGVkVmlldyBmcmFtZV07CiAgICAgTlNSZWN0IGluc3BlY3RvckZyYW1lID0gTlNaZXJvUmVj
dDsKICAgICBOU1JlY3QgcGFyZW50Qm91bmRzID0gW1tpbnNwZWN0ZWRWaWV3IHN1cGVydmlld10g
Ym91bmRzXTsKICAgICBDR0Zsb2F0IGluc3BlY3RlZFZpZXdUb3AgPSBOU01heFkoaW5zcGVjdGVk
Vmlld0ZyYW1lKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewotICAgICAgICBj
YXNlIEF0dGFjaG1lbnRTaWRlQm90dG9tOiB7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnREaW1l
bnNpb24pCi0gICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TSGVpZ2h0KFttX2lu
c3BlY3RvclZpZXcgZnJhbWVdKTsKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206IHsK
KyAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQorICAgICAgICAgICAgY3VycmVudERpbWVu
c2lvbiA9IE5TSGVpZ2h0KFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAotICAgICAgICAgICAg
Q0dGbG9hdCBwYXJlbnRIZWlnaHQgPSBOU0hlaWdodChwYXJlbnRCb3VuZHMpOwotICAgICAgICAg
ICAgQ0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
Ojpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJlbnREaW1lbnNpb24sIHBhcmVu
dEhlaWdodCk7CisgICAgICAgIENHRmxvYXQgcGFyZW50SGVpZ2h0ID0gTlNIZWlnaHQocGFyZW50
Qm91bmRzKTsKKyAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JIZWlnaHQgPSBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGN1cnJlbnRE
aW1lbnNpb24sIHBhcmVudEhlaWdodCk7CiAKLSAgICAgICAgICAgIC8vIFByZXNlcnZlIHRoZSB0
b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0
aWxsIHdvcmsuCi0gICAgICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAs
IGluc3BlY3RvckhlaWdodCwgTlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9w
IC0gaW5zcGVjdG9ySGVpZ2h0KTsKLSAgICAgICAgICAgIGluc3BlY3RvckZyYW1lID0gTlNNYWtl
UmVjdCgwLCAwLCBOU1dpZHRoKGluc3BlY3RlZFZpZXdGcmFtZSksIGluc3BlY3RvckhlaWdodCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUg
dG9wIHBvc2l0aW9uIG9mIHRoZSBpbnNwZWN0ZWQgdmlldyBzbyBiYW5uZXJzIGluIFNhZmFyaSBz
dGlsbCB3b3JrLgorICAgICAgICBpbnNwZWN0ZWRWaWV3RnJhbWUgPSBOU01ha2VSZWN0KDAsIGlu
c3BlY3RvckhlaWdodCwgTlNXaWR0aChwYXJlbnRCb3VuZHMpLCBpbnNwZWN0ZWRWaWV3VG9wIC0g
aW5zcGVjdG9ySGVpZ2h0KTsKKyAgICAgICAgaW5zcGVjdG9yRnJhbWUgPSBOU01ha2VSZWN0KDAs
IDAsIE5TV2lkdGgoaW5zcGVjdGVkVmlld0ZyYW1lKSwgaW5zcGVjdG9ySGVpZ2h0KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDogewot
ICAgICAgICAgICAgaWYgKCFjdXJyZW50RGltZW5zaW9uKQotICAgICAgICAgICAgICAgIGN1cnJl
bnREaW1lbnNpb24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKKyAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlOjpSaWdodDogeworICAgICAgICBpZiAoIWN1cnJlbnREaW1lbnNpb24p
CisgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNXaWR0aChbbV9pbnNwZWN0b3JWaWV3
IGZyYW1lXSk7CiAKLSAgICAgICAgICAgIENHRmxvYXQgcGFyZW50V2lkdGggPSBOU1dpZHRoKHBh
cmVudEJvdW5kcyk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGluc3BlY3RvcldpZHRoID0gSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29uc3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoKGN1
cnJlbnREaW1lbnNpb24sIHBhcmVudFdpZHRoKTsKKyAgICAgICAgQ0dGbG9hdCBwYXJlbnRXaWR0
aCA9IE5TV2lkdGgocGFyZW50Qm91bmRzKTsKKyAgICAgICAgQ0dGbG9hdCBpbnNwZWN0b3JXaWR0
aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNvbnN0cmFpbmVkQXR0YWNoZWRXaW5k
b3dXaWR0aChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRXaWR0aCk7CiAKLSAgICAgICAgICAgIC8v
IFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5l
cnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuIEJ1dCBkb24ndCB1c2UgdGhhdAotICAgICAgICAgICAg
Ly8gdG9wIHBvc2l0aW9uIGZvciB0aGUgaW5zcGVjdG9yIHZpZXcgc2luY2UgdGhlIGJhbm5lcnMg
b25seSBzdHJldGNoIGFzIHdpZGUgYXMgdGhlIHRoZSBpbnNwZWN0ZWQgdmlldy4KLSAgICAgICAg
ICAgIGluc3BlY3RlZFZpZXdGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgcGFyZW50V2lkdGggLSBp
bnNwZWN0b3JXaWR0aCwgaW5zcGVjdGVkVmlld1RvcCk7Ci0gICAgICAgICAgICBDR0Zsb2F0IGlu
c2V0RXhjbHVkaW5nQmFubmVycyA9IGluc3BlY3RlZFZpZXcuX3RvcENvbnRlbnRJbnNldCAtIGlu
c3BlY3RlZFZpZXcuX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOwotICAgICAgICAgICAgaW5zcGVjdG9y
RnJhbWUgPSBOU01ha2VSZWN0KHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIDAsIGluc3Bl
Y3RvcldpZHRoLCBOU0hlaWdodChwYXJlbnRCb3VuZHMpIC0gaW5zZXRFeGNsdWRpbmdCYW5uZXJz
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIC8vIFByZXNlcnZlIHRo
ZSB0b3AgcG9zaXRpb24gb2YgdGhlIGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJp
IHN0aWxsIHdvcmsuIEJ1dCBkb24ndCB1c2UgdGhhdAorICAgICAgICAvLyB0b3AgcG9zaXRpb24g
Zm9yIHRoZSBpbnNwZWN0b3IgdmlldyBzaW5jZSB0aGUgYmFubmVycyBvbmx5IHN0cmV0Y2ggYXMg
d2lkZSBhcyB0aGUgdGhlIGluc3BlY3RlZCB2aWV3LgorICAgICAgICBpbnNwZWN0ZWRWaWV3RnJh
bWUgPSBOU01ha2VSZWN0KDAsIDAsIHBhcmVudFdpZHRoIC0gaW5zcGVjdG9yV2lkdGgsIGluc3Bl
Y3RlZFZpZXdUb3ApOworICAgICAgICBDR0Zsb2F0IGluc2V0RXhjbHVkaW5nQmFubmVycyA9IGlu
c3BlY3RlZFZpZXcuX3RvcENvbnRlbnRJbnNldCAtIGluc3BlY3RlZFZpZXcuX3RvdGFsSGVpZ2h0
T2ZCYW5uZXJzOworICAgICAgICBpbnNwZWN0b3JGcmFtZSA9IE5TTWFrZVJlY3QocGFyZW50V2lk
dGggLSBpbnNwZWN0b3JXaWR0aCwgMCwgaW5zcGVjdG9yV2lkdGgsIE5TSGVpZ2h0KHBhcmVudEJv
dW5kcykgLSBpbnNldEV4Y2x1ZGluZ0Jhbm5lcnMpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgfQogCiAgICAgaWYgKE5TRXF1YWxSZWN0cyhbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSwgaW5z
cGVjdG9yRnJhbWUpICYmIE5TRXF1YWxSZWN0cyhbaW5zcGVjdGVkVmlldyBmcmFtZV0sIGluc3Bl
Y3RlZFZpZXdGcmFtZSkpCkBAIC03NzcsMjEgKzc3NywyMSBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2UoQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9u
KQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dI
ZWlnaHQoKQogewotICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IG1fcGFnZS0+d2tWaWV3KCk7
CisgICAgV0tWaWV3ICppbnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT53a1ZpZXcoKTsK
ICAgICBOU1JlY3QgaW5zcGVjdGVkVmlld1JlY3QgPSBbaW5zcGVjdGVkVmlldyBmcmFtZV07CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnNwZWN0ZWRWaWV3UmVjdC5zaXplLmhl
aWdodCk7CiB9CiAKIHVuc2lnbmVkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUluc3BlY3Rl
ZFdpbmRvd1dpZHRoKCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndr
VmlldygpOworICAgIFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tW
aWV3KCk7CiAgICAgTlNSZWN0IGluc3BlY3RlZFZpZXdSZWN0ID0gW2luc3BlY3RlZFZpZXcgZnJh
bWVdOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5zcGVjdGVkVmlld1JlY3Qu
c2l6ZS53aWR0aCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNo
KCkKIHsKLSAgICBXS1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBtX3BhZ2UtPndrVmlldygpOworICAg
IFdLVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+d2tWaWV3KCk7CiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX2luc3Bl
Y3RvclByb3h5T2JqQ0FkYXB0ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RlZFZp
ZXdGcmFtZURpZENoYW5nZTopIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24g
b2JqZWN0Omluc3BlY3RlZFZpZXddOwogCiAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7CkBA
IC04MDUsMTEgKzgwNSwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUF0dGFj
aCgpCiAgICAgQ0dGbG9hdCBjdXJyZW50RGltZW5zaW9uOwogCiAgICAgc3dpdGNoIChtX2F0dGFj
aG1lbnRTaWRlKSB7Ci0gICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRvbToKKyAgICBjYXNlIEF0
dGFjaG1lbnRTaWRlOjpCb3R0b206CiAgICAgICAgIFttX2luc3BlY3RvclZpZXcgc2V0QXV0b3Jl
c2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNpemFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luXTsKICAgICAg
ICAgY3VycmVudERpbWVuc2lvbiA9IGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3Rv
ckF0dGFjaGVkSGVpZ2h0KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXR0YWNobWVudFNp
ZGVSaWdodDoKKyAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKICAgICAgICAgW21faW5z
cGVjdG9yVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOk5TVmlld0hlaWdodFNpemFibGUgfCBOU1Zp
ZXdNaW5YTWFyZ2luXTsKICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IGluc3BlY3RvclBhZ2VQ
cmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaGVkV2lkdGgoKTsKICAgICAgICAgYnJlYWs7CkBA
IC04MjQsNyArODI0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BdHRhY2go
KQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiB7Ci0gICAgV0tW
aWV3ICppbnNwZWN0ZWRWaWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKKyAgICBXS1ZpZXcgKmluc3Bl
Y3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPndrVmlldygpOwogICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9i
akNBZGFwdGVyLmdldCgpIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2Jq
ZWN0Omluc3BlY3RlZFZpZXddOwogCiAgICAgW21faW5zcGVjdG9yVmlldyByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>