<?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>70391</bug_id>
          
          <creation_ts>2011-10-18 17:47:42 -0700</creation_ts>
          <short_desc>[Qt] [WK2] Rename files and classes to follow conventions</short_desc>
          <delta_ts>2011-10-19 06:22:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>vestbo</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>486477</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-10-18 17:47:42 -0700</bug_when>
    <thetext>[Qt] [WK2] Rename files and classes to follow conventions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486478</commentid>
    <comment_count>1</comment_count>
      <attachid>111541</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-10-18 17:50:15 -0700</bug_when>
    <thetext>Created attachment 111541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486489</commentid>
    <comment_count>2</comment_count>
      <attachid>111541</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-10-18 18:12:38 -0700</bug_when>
    <thetext>Comment on attachment 111541
Patch

This seems to be in accordance with what was agreed on the mailing list. LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486722</commentid>
    <comment_count>3</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-10-19 06:22:08 -0700</bug_when>
    <thetext>Committed r97852: &lt;http://trac.webkit.org/changeset/97852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111541</attachid>
            <date>2011-10-18 17:50:15 -0700</date>
            <delta_ts>2011-10-18 18:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70391-20111018215036.patch</filename>
            <type>text/plain</type>
            <size>178051</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc3NzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhOWYyZDc3MTI0NjViZWM2
YTUyNTYzZjQzMTFmZmM4MmYwMTQwMzRhLi5iY2E5ZjA3MDIzODk0YWY4NDU5Y2Y0OGZmMjU3ZTZj
OTkwNDg0MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTk5IEBACisyMDExLTEwLTE4ICBDYWlv
IE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+
CisKKyAgICAgICAgW1F0XSBbV0syXSBSZW5hbWUgZmlsZXMgYW5kIGNsYXNzZXMgdG8gZm9sbG93
IGNvbnZlbnRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MDM5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSB0aGUgZmlsZXMgYW5kIGNsYXNzZXMgZm9sbG93aW5nIHRoZSBhZ3JlZWQgY29u
dmVudGlvbnMgb24KKyAgICAgICAgUXRXZWJLaXQgbWFpbGluZyBsaXN0IC0tIHdoaWNoIGFyZSBi
YXNlZCBvbiBleGlzdGluZyB1c2FnZSB3ZSBoYXZlLgorCisgICAgICAgIC0gUHVibGljIEFQSSBm
b2xsb3cgUXQgY29udmVudGlvbnM6IHFzb21ldGhpbmcuY3BwIHFzb21ldGhpbmcuaCB3aXRoIGNs
YXNzIG5hbWVkIFFTb21ldGhpbmcKKworICAgICAgICAtIFByaXZhdGUgY2xhc3NlcyBmb3IgcHVi
bGljIEFQSSBjbGFzc2VzIGZvbGxvdyBRdCBjb252ZW50aW9uczoKKyAgICAgICAgICBxc29tZXRo
aW5nX3AuaCBxc29tZXRoaW5nX3AuY3BwIChpZiBuZWVkZWQpLCB3aXRoIGNsYXNzIG5hbWVkIFFT
b21ldGhpbmdQcml2YXRlCisKKyAgICAgICAgLSBTdWJjbGFzc2VzIGFuZCBRdC1zcGVjaWZpYyBp
bXBsZW1lbnRhdGlvbnMgb2YgV2ViS2l0L1dlYkNvcmUgY2xhc3NlcyB1c2UgUXQgc3VmZml4Ogor
ICAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisKKyAgICAgICAgLSBPdGhlciBjbGFz
c2VzIGNyZWF0ZWQgZm9yIHVzaW5nIGluIG91ciBwb3J0IHVzZSBRdCBwcmVmaXg6IFF0RmlsZURv
d25sb2FkZXIsIFF0Vmlld0ludGVyZmFjZQorCisgICAgICAgIFRoaXMgaXMgZG9jdW1lbnRlZCBp
biBodHRwczovL3RyYWMud2Via2l0Lm9yZy93aWtpL1F0V2ViS2l0SGFja2luZworCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6Y2hvb3NlRmlsZXMpOgorICAgICAgICAodG9Qb2xpY3lBY3Rpb24p
OgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6bmF2aWdhdGlvblBvbGljeUZvclVS
TCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHA6CisgICAgICAgIChRVG91
Y2hXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAgICAgICAoUVRvdWNoV2ViUGFnZVByaXZh
dGU6OnNldFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFUb3VjaFdl
YlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnZpZXdfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVh
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
ICh0b1F0Vmlld0ludGVyZmFjZSk6CisgICAgICAgICh0b1F0UG9saWN5SW50ZXJmYWNlKToKKyAg
ICAgICAgKHF0X3drX3J1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAgIChxdF93a19ydW5KYXZh
U2NyaXB0Q29uZmlybSk6CisgICAgICAgIChxdF93a19ydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAg
ICAgICAgKHF0X3drX3NldFN0YXR1c1RleHQpOgorICAgICAgICAocXRfd2tfcnVuT3BlblBhbmVs
KToKKyAgICAgICAgKHF0X3drX21vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKHF0
X3drX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcC4KKyAgICAgICAgKGRyYWdP
cGVyYXRpb25Ub0Ryb3BBY3Rpb24pOgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpR
dERlc2t0b3BXZWJQYWdlUHJveHkpOgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5Ojpj
cmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6
cGFpbnRDb250ZW50KToKKyAgICAgICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6c2V0Vmlld3Bv
cnRBcmd1bWVudHMpOgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5Ojpkb25lV2l0aFRv
dWNoRXZlbnQpOgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpjcmVhdGVQb3B1cE1l
bnVQcm94eSk6CisgICAgICAgIChRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgor
ICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgor
ICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6
CisgICAgICAgIChRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tF
dmVudCk6CisgICAgICAgIChRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQp
OgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVIb3ZlckxlYXZlRXZlbnQp
OgorICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVIb3Zlck1vdmVFdmVudCk6
CisgICAgICAgIChRdERlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZURyYWdFbnRlckV2ZW50KToK
KyAgICAgICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlRHJhZ0xlYXZlRXZlbnQpOgor
ICAgICAgICAoUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVEcmFnTW92ZUV2ZW50KToKKyAg
ICAgICAgKFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlRHJvcEV2ZW50KToKKyAgICAgICAg
KFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmguCisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdEdlc3R1cmVS
ZWNvZ25pemVyOjpRdEdlc3R1cmVSZWNvZ25pemVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
UXRHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1
cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQYW5HZXN0dXJlUmVjb2duaXpl
cjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFu
R2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1
cmVSZWNvZ25pemVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRQaW5jaEdlc3R1cmVSZWNvZ25p
emVyOjpRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9R
dFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQb2xp
Y3lJbnRlcmZhY2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Q
b2xpY3lJbnRlcmZhY2UuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2RlLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9TR1RpbGVOb2RlLmNw
cC4KKyAgICAgICAgKFdlYktpdDo6UXRTR1RpbGVOb2RlOjpRdFNHVGlsZU5vZGUpOgorICAgICAg
ICAoV2ViS2l0OjpRdFNHVGlsZU5vZGU6OnNldEJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpRdFNHVGlsZU5vZGU6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9RdFNHVGlsZU5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9TR1RpbGVOb2RlLmguCisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1
ZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvU0dVcGRhdGVR
dWV1ZS5jcHAuCisgICAgICAgIChXZWJLaXQ6Ok5vZGVVcGRhdGVDcmVhdGVUaWxlOjpOb2RlVXBk
YXRlQ3JlYXRlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5vZGVVcGRhdGVSZW1vdmVUaWxlOjpO
b2RlVXBkYXRlUmVtb3ZlVGlsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5vZGVVcGRhdGVTZXRCYWNr
QnVmZmVyOjpOb2RlVXBkYXRlU2V0QmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5vZGVV
cGRhdGVTd2FwVGlsZUJ1ZmZlcnM6Ok5vZGVVcGRhdGVTd2FwVGlsZUJ1ZmZlcnMpOgorICAgICAg
ICAoV2ViS2l0OjpRdFNHVXBkYXRlUXVldWU6OlF0U0dVcGRhdGVRdWV1ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlF0U0dVcGRhdGVRdWV1ZTo6Y3JlYXRlVGlsZU5vZGUpOgorICAgICAgICAoV2ViS2l0
OjpRdFNHVXBkYXRlUXVldWU6OnJlbW92ZVRpbGVOb2RlKToKKyAgICAgICAgKFdlYktpdDo6UXRT
R1VwZGF0ZVF1ZXVlOjpzZXROb2RlQmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlF0U0dV
cGRhdGVRdWV1ZTo6c3dhcFRpbGVCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UXRTR1VwZGF0
ZVF1ZXVlOjphcHBseVVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpRdFNHVXBkYXRlUXVldWU6
OmdldFNjYWxlTm9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1NHVXBkYXRlUXVldWUu
aC4KKyAgICAgICAgKFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlOjppc1N3YXBQZW5kaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6Tm9kZVVwZGF0ZTo6Tm9kZVVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5vZGVVcGRhdGU6On5Ob2RlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRUb3Vj
aFZpZXdJbnRlcmZhY2UuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAuCisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3
SW50ZXJmYWNlOjpRdFRvdWNoVmlld0ludGVyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OlF0VG91
Y2hWaWV3SW50ZXJmYWNlOjpkaWRGaW5kWm9vbWFibGVBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
UXRUb3VjaFZpZXdJbnRlcmZhY2U6OnNjZW5lR3JhcGhVcGRhdGVRdWV1ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVhU2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6aXNBY3RpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6aGFzRm9jdXMpOgorICAgICAgICAoV2Vi
S2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
UXRUb3VjaFZpZXdJbnRlcmZhY2U6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OlF0VG91
Y2hWaWV3SW50ZXJmYWNlOjpkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAo
V2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVXJsKToKKyAgICAgICAgKFdl
YktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdl
YktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVRvb2xUaXApOgorICAgICAgICAo
V2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlU3RhdHVzVGV4dCk6CisgICAg
ICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VDdXJzb3IpOgorICAg
ICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZEJlZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRDb21taXQpOgorICAgICAg
ICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQpOgorICAgICAg
ICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZEZhaWwpOgorICAgICAgICAo
V2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OnNob3dDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNlOjpoaWRlQ29udGV4dE1lbnUpOgor
ICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6cnVuSmF2YVNjcmlwdEFsZXJ0
KToKKyAgICAgICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OnJ1bkphdmFTY3JpcHRD
b25maXJtKToKKyAgICAgICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OnJ1bkphdmFT
Y3JpcHRQcm9tcHQpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6cHJv
Y2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRp
ZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlF0VG91Y2hWaWV3SW50ZXJmYWNl
OjplbmdpbmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVy
ZmFjZS5oLgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6Y2hvb3NlRmls
ZXMpOgorICAgICAgICAoV2ViS2l0OjpRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkTW91c2VNb3Zl
T3ZlckVsZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xdG91Y2h3ZWJw
YWdlcHJveHkuY3BwLgorICAgICAgICAoUXRUb3VjaFdlYlBhZ2VQcm94eTo6UXRUb3VjaFdlYlBh
Z2VQcm94eSk6CisgICAgICAgIChRdFRvdWNoV2ViUGFnZVByb3h5OjpjcmVhdGVEcmF3aW5nQXJl
YVByb3h5KToKKyAgICAgICAgKFF0VG91Y2hXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6
CisgICAgICAgIChRdFRvdWNoV2ViUGFnZVByb3h5OjpwYWludENvbnRlbnQpOgorICAgICAgICAo
UXRUb3VjaFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKFF0VG91
Y2hXZWJQYWdlUHJveHk6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFF0VG91Y2hXZWJQYWdlUHJv
eHk6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKToKKyAgICAgICAgKFF0VG91Y2hXZWJQ
YWdlUHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IpOgorICAgICAg
ICAoUXRUb3VjaFdlYlBhZ2VQcm94eTo6c2V0UmVzaXplc1RvQ29udGVudHNVc2luZ0xheW91dFNp
emUpOgorICAgICAgICAoUXRUb3VjaFdlYlBhZ2VQcm94eTo6dG91Y2hFdmVudCk6CisgICAgICAg
IChRdFRvdWNoV2ViUGFnZVByb3h5OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorICAgICAg
ICAoUXRUb3VjaFdlYlBhZ2VQcm94eTo6cmVuZGVyTmV4dEZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvUXRUb3VjaFdlYlBhZ2VQcm94eS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oLgorICAgICAgICAoUXRUb3VjaFdl
YlBhZ2VQcm94eTo6dG91Y2hWaWV3SW50ZXJmYWNlKToKKyAgICAgICAgKFF0VG91Y2hXZWJQYWdl
UHJveHk6OmRyYXdpbmdBcmVhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRWaWV3SW50ZXJm
YWNlLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVy
ZmFjZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUuY3BwLgorICAgICAgICAoV2ViS2l0Ojp2aXNpYmxlUmVjdEluQ29u
dGVudENvb3JkaW5hdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb250ZW50UmVjdEluVmlld3BvcnRD
b29yZGluYXRlKToKKyAgICAgICAgKFdlYktpdDo6Vmlld3BvcnRVcGRhdGVHdWFyZDo6Vmlld3Bv
cnRVcGRhdGVHdWFyZCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdwb3J0VXBkYXRlR3VhcmQ6On5W
aWV3cG9ydFVwZGF0ZUd1YXJkKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpOgorICAgICAgICAoV2ViS2l0
OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6On5RdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
cGFuR2VzdHVyZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmU6OnBhbkdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6UXRW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlQ2FuY2VsbGVkKToKKyAgICAgICAg
KFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlRW5kZWQpOgor
ICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVy
ZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpjb250ZW50Vmlld3BvcnRDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OnVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50UG9zaXRpb25JZk5lZWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRJ
bnRvQm91bmRhcmllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFBvc2l0aW9uSW50b0JvdW5kYXJpZXNJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0
ZUNvbnRlbnRTY2FsZUludG9Cb3VuZGFyaWVzSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpR
dFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNjYWxlQ29udGVudCk6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaC4KKyAg
ICAgICAgKFdlYktpdDo6UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50czo6
Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdlUHJveHk6
OlF0V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRD
b21tYW5kKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJVbmRvQ29tbWFuZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5jcHAuCisgICAgICAgIChR
dFdlYlVuZG9Db21tYW5kOjpRdFdlYlVuZG9Db21tYW5kKToKKyAgICAgICAgKFF0V2ViVW5kb0Nv
bW1hbmQ6On5RdFdlYlVuZG9Db21tYW5kKToKKyAgICAgICAgKFF0V2ViVW5kb0NvbW1hbmQ6OnJl
ZG8pOgorICAgICAgICAoUXRXZWJVbmRvQ29tbWFuZDo6dW5kbyk6CisgICAgICAgICogVUlQcm9j
ZXNzL3F0L1F0V2ViVW5kb0NvbW1hbmQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmguCisgICAgICAgIChRdFdlYlVuZG9Db21tYW5k
OjppblVuZG9SZWRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVGlsZWREcmF3aW5nQXJlYVBy
b3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaWxlZERyYXdpbmdBcmVhUHJveHk6OnVwZGF0
ZVdlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVByb3h5UXQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5UXQ6OldlYkNvbnRleHRN
ZW51UHJveHlRdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHlRdDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViQ29udGV4dE1lbnVQcm94eVF0Lmg6Cisg
ICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIwMTEtMTAtMTggIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBbHdheXMgZW5hYmxlIEVOQUJMRShYUEFUSCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApp
bmRleCA5ZTEyN2JmZmZiNjExNDU1NmM2NmQ2ZjJhZTYzMGRlNTViMmYxODkzLi4xODZiOWQ3YmJj
MDgwOGU4MTVlN2EwZmU0NmY4M2E3MThkMDg5NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcg
QEAgUUpTRW5naW5lKiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjplbmdpbmUoKQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBz
ZWxlY3RlZEZpbGVOYW1lcywgVmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIHR5cGUpCit2
b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYgbGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVO
YW1lcywgUXRWaWV3SW50ZXJmYWNlOjpGaWxlQ2hvb3NlclR5cGUgdHlwZSkKIHsKICNpZm5kZWYg
UVRfTk9fRklMRURJQUxPRwogICAgIG9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbGlzdGVuZXJS
ZWY7CkBAIC01MDIsMTggKzUwMiwxOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRp
ZE1vdXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmIGxpbmtVUkwsIGNvbnN0CiAgICAgZW1p
dCBxLT5saW5rSG92ZXJlZChsYXN0SG92ZXJlZFVSTCwgbGFzdEhvdmVyZWRUaXRsZSk7CiB9CiAK
LXN0YXRpYyBQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiB0b1BvbGljeUFjdGlvbihRRGVz
a3RvcFdlYlZpZXc6Ok5hdmlnYXRpb25Qb2xpY3kgcG9saWN5KQorc3RhdGljIFF0UG9saWN5SW50
ZXJmYWNlOjpQb2xpY3lBY3Rpb24gdG9Qb2xpY3lBY3Rpb24oUURlc2t0b3BXZWJWaWV3OjpOYXZp
Z2F0aW9uUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2Ug
UURlc2t0b3BXZWJWaWV3OjpVc2VQb2xpY3k6Ci0gICAgICAgIHJldHVybiBQb2xpY3lJbnRlcmZh
Y2U6OlVzZTsKKyAgICAgICAgcmV0dXJuIFF0UG9saWN5SW50ZXJmYWNlOjpVc2U7CiAgICAgY2Fz
ZSBRRGVza3RvcFdlYlZpZXc6OkRvd25sb2FkUG9saWN5OgotICAgICAgICByZXR1cm4gUG9saWN5
SW50ZXJmYWNlOjpEb3dubG9hZDsKKyAgICAgICAgcmV0dXJuIFF0UG9saWN5SW50ZXJmYWNlOjpE
b3dubG9hZDsKICAgICBjYXNlIFFEZXNrdG9wV2ViVmlldzo6SWdub3JlUG9saWN5OgotICAgICAg
ICByZXR1cm4gUG9saWN5SW50ZXJmYWNlOjpJZ25vcmU7CisgICAgICAgIHJldHVybiBRdFBvbGlj
eUludGVyZmFjZTo6SWdub3JlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gUG9saWN5SW50ZXJmYWNlOjpJZ25vcmU7CisgICAgcmV0dXJuIFF0UG9saWN5SW50
ZXJmYWNlOjpJZ25vcmU7CiB9CiAKIHN0YXRpYyBib29sIGhhc01ldGFNZXRob2QoUU9iamVjdCog
b2JqZWN0LCBjb25zdCBjaGFyKiBtZXRob2ROYW1lKQpAQCAtNTMwLDE2ICs1MzAsMTcgQEAgc3Rh
dGljIGJvb2wgaGFzTWV0YU1ldGhvZChRT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIG1ldGhv
ZE5hbWUpCiAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gZGVjaWRlIHRoZSBwb2xpY3kgZm9yIGEg
bmF2aWdhdGlvbjogd2hldGhlciB0aGUgV2ViVmlldyBzaG91bGQgaWdub3JlIHRoZSBuYXZpZ2F0
aW9uLAogICAgIGNvbnRpbnVlIGl0IG9yIHN0YXJ0IGEgZG93bmxvYWQuIFRoZSByZXR1cm4gdmFs
dWUgbXVzdCBiZSBvbmUgb2YgdGhlIHBvbGljaWVzIGluIHRoZSBOYXZpZ2F0aW9uUG9saWN5IGVu
dW1lcmF0aW9uLgogKi8KLVBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6Om5hdmlnYXRpb25Qb2xpY3lGb3JVUkwoY29uc3QgUVVybCYgdXJsLCBRdDo6
TW91c2VCdXR0b24gYnV0dG9uLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzKQorUXRQ
b2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlvbiBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpuYXZp
Z2F0aW9uUG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmIHVybCwgUXQ6Ok1vdXNlQnV0dG9uIGJ1dHRv
biwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycykKIHsKICAgICAvLyBXZSBuZWVkIHRv
IGNoZWNrIHRoaXMgZmlyc3QgYmVjYXVzZSBpbnZva2VNZXRob2QoKSB3YXJucyBpZiB0aGUgbWV0
aG9kIGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBvYmplY3QuCiAgICAgaWYgKCFoYXNNZXRhTWV0aG9k
KHEsICJuYXZpZ2F0aW9uUG9saWN5Rm9yVXJsKFFWYXJpYW50LFFWYXJpYW50LFFWYXJpYW50KSIp
KQotICAgICAgICByZXR1cm4gUG9saWN5SW50ZXJmYWNlOjpVc2U7CisgICAgICAgIHJldHVybiBR
dFBvbGljeUludGVyZmFjZTo6VXNlOwogCiAgICAgUVZhcmlhbnQgcmV0OwogICAgIGlmIChRTWV0
YU9iamVjdDo6aW52b2tlTWV0aG9kKHEsICJuYXZpZ2F0aW9uUG9saWN5Rm9yVXJsIiwgUV9SRVRV
Uk5fQVJHKFFWYXJpYW50LCByZXQpLCBRX0FSRyhRVmFyaWFudCwgdXJsKSwgUV9BUkcoUVZhcmlh
bnQsIGJ1dHRvbiksIFFfQVJHKFFWYXJpYW50LCBRVmFyaWFudChtb2RpZmllcnMpKSkpCiAgICAg
ICAgIHJldHVybiB0b1BvbGljeUFjdGlvbihzdGF0aWNfY2FzdDxRRGVza3RvcFdlYlZpZXc6Ok5h
dmlnYXRpb25Qb2xpY3k+KHJldC50b0ludCgpKSk7Ci0gICAgcmV0dXJuIFBvbGljeUludGVyZmFj
ZTo6VXNlOworICAgIHJldHVybiBRdFBvbGljeUludGVyZmFjZTo6VXNlOwogfQogCiAjaW5jbHVk
ZSAibW9jX3FkZXNrdG9wd2Vidmlldy5jcHAiCisjaW5jbHVkZSAibW9jX3FkZXNrdG9wd2Vidmll
d19wLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRl
c2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0
b3B3ZWJ2aWV3X3AuaAppbmRleCBhN2ViMTU4ZGRkNWFhMjE1MjQ5Mzc1OTljNDg3ZTAwNzlhZjIw
MWM0Li5jMGM3MmZlZDgxMGYwNDJjY2MxZjE0NmY2MmQ1NTdhZTU4NGNiN2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCkBA
IC0yMSwxNiArMjEsMTYgQEAKICNpZm5kZWYgcWRlc2t0b3B3ZWJ2aWV3X3BfaAogI2RlZmluZSBx
ZGVza3RvcHdlYnZpZXdfcF9oCiAKLSNpbmNsdWRlICJxZGVza3RvcHdlYnBhZ2Vwcm94eS5oIgor
I2luY2x1ZGUgIlF0RGVza3RvcFdlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlF0Vmlld0ludGVy
ZmFjZS5oIgogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0aW9uY29udHJvbGxlci5oIgotI2luY2x1ZGUg
IlZpZXdJbnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgogCiBjbGFzcyBR
RGVza3RvcFdlYlZpZXc7CiBjbGFzcyBRRmlsZURpYWxvZzsKIAotY2xhc3MgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViS2l0OjpWaWV3SW50ZXJmYWNl
LCBwdWJsaWMgV2ViS2l0OjpQb2xpY3lJbnRlcmZhY2UKK2NsYXNzIFFEZXNrdG9wV2ViVmlld1By
aXZhdGUgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYktpdDo6UXRWaWV3SW50ZXJmYWNlLCBw
dWJsaWMgV2ViS2l0OjpRdFBvbGljeUludGVyZmFjZQogewogICAgIFFfT0JKRUNUCiBwdWJsaWM6
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVNb3VzZUV2ZW50cygp
OwogCiAgICAgUURlc2t0b3BXZWJWaWV3KiBxOwotICAgIFFEZXNrdG9wV2ViUGFnZVByb3h5IHBh
Z2U7CisgICAgUXREZXNrdG9wV2ViUGFnZVByb3h5IHBhZ2U7CiAKICAgICBib29sIGlzQ3Jhc2hl
ZDsKICAgICBRV2ViTmF2aWdhdGlvbkNvbnRyb2xsZXIqIG5hdmlnYXRpb25Db250cm9sbGVyOwpA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlIFFfU0xPVFM6CiAgICAgdm9pZCBvbk9wZW5QYW5lbEZp
bmlzaGVkKGludCByZXN1bHQpOwogCiBwcml2YXRlOgotICAgIC8qIEltcGxlbWVudGF0aW9uIG9m
IFZpZXdJbnRlcmZhY2UgKi8KKyAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBRdFZpZXdJbnRlcmZh
Y2UuCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKTsK
IAogICAgIHZpcnR1YWwgUVNpemUgZHJhd2luZ0FyZWFTaXplKCk7CkBAIC04OSwxMiArODksMTIg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBjaG9vc2VGaWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25z
dCBRU3RyaW5nTGlzdCYgc2VsZWN0ZWRGaWxlTmFtZXMsIFZpZXdJbnRlcmZhY2U6OkZpbGVDaG9v
c2VyVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGNob29zZUZpbGVzKFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJSZWYsIGNvbnN0IFFTdHJpbmdMaXN0JiBzZWxlY3RlZEZpbGVOYW1lcywgUXRWaWV3
SW50ZXJmYWNlOjpGaWxlQ2hvb3NlclR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdXNl
TW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJik7CiAKLSAgICAvLyBQ
b2xpY3lJbnRlcmZhY2UuCi0gICAgdmlydHVhbCBQb2xpY3lJbnRlcmZhY2U6OlBvbGljeUFjdGlv
biBuYXZpZ2F0aW9uUG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmLCBRdDo6TW91c2VCdXR0b24sIFF0
OjpLZXlib2FyZE1vZGlmaWVycyk7CisgICAgLy8gUXRQb2xpY3lJbnRlcmZhY2UuCisgICAgdmly
dHVhbCBRdFBvbGljeUludGVyZmFjZTo6UG9saWN5QWN0aW9uIG5hdmlnYXRpb25Qb2xpY3lGb3JV
UkwoY29uc3QgUVVybCYsIFF0OjpNb3VzZUJ1dHRvbiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzKTsK
IAogICAgIFFTaGFyZWRQb2ludGVyPFFNZW51PiBhY3RpdmVNZW51OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcAppbmRleCAwMWY0MDk5
MjI1Y2M0ZjNkM2E3OGIxYzNlNzIxYzMxN2U2YTdlNGExLi44YWE2OTNhODBjMWQ1NGViY2U3YjVi
MzJmMzJmNzA3MGJjZDYxNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2VicGFnZS5jcHAKQEAgLTIwLDkgKzIwLDkgQEAKIAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKLSNpbmNsdWRlICJxdG91Y2h3ZWJw
YWdlX3AuaCIKIAotI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2Vwcm94eS5oIgorI2luY2x1ZGUgIlF0
VG91Y2hXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJxdG91Y2h3ZWJwYWdlX3AuaCIKICNpbmNs
dWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Pgog
I2luY2x1ZGUgPFFQYWludGVyPgpAQCAtNzMsNyArNzMsNyBAQCBRU0dOb2RlKiBRVG91Y2hXZWJQ
YWdlOjp1cGRhdGVQYWludE5vZGUoUVNHTm9kZSogb2xkTm9kZSwgVXBkYXRlUGFpbnROb2RlRGF0
YSopCiAgICAgaWYgKCFvbGROb2RlKQogICAgICAgICBvbGROb2RlID0gbmV3IFFTR05vZGU7CiAK
LSAgICAvLyBBIHN3YXAgaXMgb24gdGhlIHF1ZXVlLCBhbmQgU0dVcGRhdGVRdWV1ZTo6YXBwbHlV
cGRhdGVzIHdpbGwgZW1wdHkgdGhlIHF1ZXVlLCBzbyB3ZSBrbm93IHRoYXQKKyAgICAvLyBBIHN3
YXAgaXMgb24gdGhlIHF1ZXVlLCBhbmQgUXRTR1VwZGF0ZVF1ZXVlOjphcHBseVVwZGF0ZXMgd2ls
bCBlbXB0eSB0aGUgcXVldWUsIHNvIHdlIGtub3cgdGhhdAogICAgIC8vIHRoZSBvbGQgZnJhbWUn
cyBidWZmZXJzIHdvbid0IGJlIHVzZWQgYW55bW9yZSAoZm9yIGJ1ZmZlcnMgdXNlZCBhbGwgdGhl
IHdheSBmcm9tIHRoZSB3ZWIgcHJvY2VzcwogICAgIC8vIHRvIHRoZSBncmFwaGljIGNhcmQpLiBO
b3RpZnkgdGhlIHdlYiBwcm9jZXNzIHRoYXQgaXQgY2FuIHJlbmRlciB0aGUgbmV4dCBmcmFtZS4K
ICAgICBpZiAoZC0+c2dVcGRhdGVRdWV1ZS5pc1N3YXBQZW5kaW5nKCkpCkBAIC0xNTQsNyArMTU0
LDcgQEAgUVRvdWNoV2ViUGFnZVByaXZhdGU6OlFUb3VjaFdlYlBhZ2VQcml2YXRlKFFUb3VjaFdl
YlBhZ2UqIHZpZXcpCiB7CiB9CiAKLXZvaWQgUVRvdWNoV2ViUGFnZVByaXZhdGU6OnNldFBhZ2Uo
UVRvdWNoV2ViUGFnZVByb3h5KiBwYWdlKQordm9pZCBRVG91Y2hXZWJQYWdlUHJpdmF0ZTo6c2V0
UGFnZShRdFRvdWNoV2ViUGFnZVByb3h5KiBwYWdlKQogewogICAgIEFTU0VSVCghdGhpcy0+cGFn
ZSk7CiAgICAgQVNTRVJUKHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCAwYWYwZGE1NzM5MTA1NTA5NTQ5NDUxZDA1MDU3MmM2
OTliMzFmY2FmLi5iOGQ2ZWE1ODAxYTg5MTE1OWUxMDY5MTNjMTJmNGRlNmVlMTYwMjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaApAQCAt
MjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSA8UVNoYXJlZFBvaW50ZXI+CiAKIGNsYXNzIFFUb3Vj
aFdlYlBhZ2VQcml2YXRlOwotY2xhc3MgUVRvdWNoV2ViUGFnZVByb3h5OworY2xhc3MgUXRUb3Vj
aFdlYlBhZ2VQcm94eTsKIGNsYXNzIFFXZWJOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFFX
ZWJQcmVmZXJlbmNlczsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgY2xhc3MgVG91Y2hWaWV3
SW50ZXJmYWNlOworY2xhc3MgUXRUb3VjaFZpZXdJbnRlcmZhY2U7CiB9CiAKIGNsYXNzIFFXRUJL
SVRfRVhQT1JUIFFUb3VjaFdlYlBhZ2UgOiBwdWJsaWMgUVNHSXRlbSB7CkBAIC05MSw3ICs5MSw3
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUVRvdWNoV2ViUGFnZVByaXZhdGUqIGQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFFUb3VjaFdlYlZpZXdQcml2YXRlOwotICAgIGZyaWVuZCBjbGFzcyBX
ZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTsKKyAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpRdFRv
dWNoVmlld0ludGVyZmFjZTsKIH07CiAKICNlbmRpZiAvKiBxdG91Y2h3ZWJwYWdlX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9w
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oCmlu
ZGV4IDAxZmE4ODE1YjUzY2Y5NmI1MDUzY2QxNjZmYmQ0ODc2NmJjMDc5Y2YuLmUyMmQ3MmZiMzMw
NzY5MGMzM2U1ZTgwZDhkYjZjZjhjMjk0Y2EzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlX3AuaApAQCAtMjEsNyArMjEsNyBAQAogI2lm
bmRlZiBxdG91Y2h3ZWJwYWdlX3BfaAogI2RlZmluZSBxdG91Y2h3ZWJwYWdlX3BfaAogCi0jaW5j
bHVkZSAiU0dVcGRhdGVRdWV1ZS5oIgorI2luY2x1ZGUgIlF0U0dVcGRhdGVRdWV1ZS5oIgogI2lu
Y2x1ZGUgInF0b3VjaHdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2VibmF2aWdhdGlvbmNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlIDxRTWVudT4KQEAgLTMwLDE4ICszMCwxOCBAQCBjbGFzcyBRUmVjdEY7
CiBjbGFzcyBRU0dOb2RlOwogY2xhc3MgUVN0cmluZzsKIGNsYXNzIFFUb3VjaFdlYlBhZ2U7Ci1j
bGFzcyBRVG91Y2hXZWJQYWdlUHJveHk7CitjbGFzcyBRdFRvdWNoV2ViUGFnZVByb3h5OwogCiBj
bGFzcyBRVG91Y2hXZWJQYWdlUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgUVRvdWNoV2ViUGFnZVBy
aXZhdGUoUVRvdWNoV2ViUGFnZSogdmlldyk7CiAKLSAgICB2b2lkIHNldFBhZ2UoUVRvdWNoV2Vi
UGFnZVByb3h5Kik7CisgICAgdm9pZCBzZXRQYWdlKFF0VG91Y2hXZWJQYWdlUHJveHkqKTsKIAog
ICAgIFFUb3VjaFdlYlBhZ2UqIGNvbnN0IHE7Ci0gICAgUVRvdWNoV2ViUGFnZVByb3h5KiBwYWdl
OworICAgIFF0VG91Y2hXZWJQYWdlUHJveHkqIHBhZ2U7CiAgICAgUVdlYk5hdmlnYXRpb25Db250
cm9sbGVyKiBuYXZpZ2F0aW9uQ29udHJvbGxlcjsKLSAgICBXZWJLaXQ6OlNHVXBkYXRlUXVldWUg
c2dVcGRhdGVRdWV1ZTsKKyAgICBXZWJLaXQ6OlF0U0dVcGRhdGVRdWV1ZSBzZ1VwZGF0ZVF1ZXVl
OwogfTsKIAogI2VuZGlmIC8qIHF0b3VjaHdlYnBhZ2VfcF9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA2ODkwNWU5YzRm
MzE2ZjRjNTU2NDdlZTRlNTRjODU1N2QxMDM4YzBmLi4zMjdiNWNkMzE0OWI1NTFhZDViNTQyZGYz
ZWUwZWMxMDgwMjc1OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXRvdWNod2Vidmlldy5jcHAKQEAgLTIwLDE0ICsyMCwxMyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgotI2luY2x1ZGUgInF0b3VjaHdlYnZp
ZXdfcC5oIgogCi0jaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAicXRv
dWNod2VicGFnZV9wLmgiCisjaW5jbHVkZSAiUXRUb3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJRdFdlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2VfcC5oIgorI2lu
Y2x1ZGUgInF0b3VjaHdlYnZpZXdfcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCi0jaW5jbHVkZSA8cWdyYXBoaWNzc2NlbmVldmVudC5o
PgogCiBRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6UVRvdWNoV2ViVmlld1ByaXZhdGUoUVRvdWNoV2Vi
VmlldyogcSkKICAgICA6IHEocSkKQEAgLTcyLDcgKzcxLDcgQEAgdm9pZCBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW50cygpCiAKICAgICBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMgYXR0ciA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMo
dmlld3BvcnRBcmd1bWVudHMsIHdrUHJlZnMtPmxheW91dEZhbGxiYWNrV2lkdGgoKSwgd2tQcmVm
cy0+ZGV2aWNlV2lkdGgoKSwgd2tQcmVmcy0+ZGV2aWNlSGVpZ2h0KCksIHdrUHJlZnMtPmRldmlj
ZURQSSgpLCBhdmFpbGFibGVTaXplKTsKIAotICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OkNvbnN0cmFpbnRzIG5ld0NvbnN0cmFpbnRzOworICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6Q29uc3RyYWludHMgbmV3Q29uc3RyYWludHM7CiAgICAgbmV3Q29uc3RyYWludHMuaW5p
dGlhbFNjYWxlID0gYXR0ci5pbml0aWFsU2NhbGU7CiAgICAgbmV3Q29uc3RyYWludHMubWluaW11
bVNjYWxlID0gYXR0ci5taW5pbXVtU2NhbGU7CiAgICAgbmV3Q29uc3RyYWludHMubWF4aW11bVNj
YWxlID0gYXR0ci5tYXhpbXVtU2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5oCmluZGV4IGJkNTU1ZTg2ZTM0MjBhMDQ5ZWEwMzgxNTE3YTRl
MzFkZmVkMTg0N2YuLjA1OTQyNmUwZGVlYzVkYTA4MDcwYjA5MTVlZjNlYWQ0YWViMGQ2MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5oCkBA
IC0yOSw3ICsyOSw3IEBAIGNsYXNzIFFUb3VjaFdlYlBhZ2U7CiBjbGFzcyBRVG91Y2hXZWJWaWV3
UHJpdmF0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBUb3VjaFZpZXdJbnRlcmZhY2U7
CitjbGFzcyBRdFRvdWNoVmlld0ludGVyZmFjZTsKIH0KIAogY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVRvdWNoV2ViVmlldyA6IHB1YmxpYyBRU0dJdGVtCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6
CiAgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV92aWV3cG9ydFVwZGF0ZWQoKSk7CiAgICAg
UV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2Vk
KGNvbnN0IFFQb2ludEYmKSk7CiAKLSAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpUb3VjaFZpZXdJ
bnRlcmZhY2U7CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UXRUb3VjaFZpZXdJbnRlcmZhY2U7
CiAgICAgUVRvdWNoV2ViVmlld1ByaXZhdGUgKmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXdfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaAppbmRleCAwNjU5ZTVlYzBmZTQx
OWU3NDc2YjBlOWRhYTAzMGRhYTUwYTE2NDg3Li44ZWQ5ZTBjMmI5MjgyY2YzYjIwODg0YzAzYjkx
NTFjODZkMmQxNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2Vidmlld19wLmgKQEAgLTIxLDEwICsyMSwxMCBAQAogI2lmbmRlZiBxdG91Y2h3ZWJ2
aWV3X3BfaAogI2RlZmluZSBxdG91Y2h3ZWJ2aWV3X3BfaAogCisjaW5jbHVkZSAiUXRUb3VjaFZp
ZXdJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJRdFRvdWNoV2ViUGFnZVByb3h5LmgiCisjaW5jbHVk
ZSAiUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmgiCiAjaW5jbHVkZSA8UVNjb3BlZFBvaW50
ZXI+Ci0jaW5jbHVkZSAicXRvdWNod2VicGFnZXByb3h5LmgiCi0jaW5jbHVkZSAiVG91Y2hWaWV3
SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgogCiBj
bGFzcyBRVG91Y2hXZWJQYWdlOwogY2xhc3MgUVRvdWNoV2ViVmlldzsKQEAgLTQzLDkgKzQzLDkg
QEAgcHVibGljOgogCiAgICAgUVRvdWNoV2ViVmlldyogY29uc3QgcTsKICAgICBRU2NvcGVkUG9p
bnRlcjxRVG91Y2hXZWJQYWdlPiBwYWdlVmlldzsKLSAgICBXZWJLaXQ6OlRvdWNoVmlld0ludGVy
ZmFjZSB2aWV3SW50ZXJmYWNlOwotICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUgaW50ZXJh
Y3Rpb25FbmdpbmU7Ci0gICAgUVRvdWNoV2ViUGFnZVByb3h5IHBhZ2U7CisgICAgV2ViS2l0OjpR
dFRvdWNoVmlld0ludGVyZmFjZSB2aWV3SW50ZXJmYWNlOworICAgIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZSBpbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBRdFRvdWNoV2ViUGFnZVByb3h5IHBh
Z2U7CiAKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50czsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJl
YVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5
LmgKaW5kZXggYTY3Y2E3MmIwZjJkNGY0MmIzNjFkNWEyOTliMDZiZGFiMzY4MmQwYi4uOWY0NmM0
OTFlNDQ4NTAyMmYyY2M5NjJjOTBjYjkyMjkxYTQ5MzZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaApAQCAtNjAsOCArNjAsOCBAQCB0
eXBlZGVmIFdLVmlldyBQbGF0Zm9ybVdlYlZpZXc7CiBjbGFzcyBXZWJWaWV3OwogdHlwZWRlZiBX
ZWJWaWV3IFBsYXRmb3JtV2ViVmlldzsKICNlbGlmIFBMQVRGT1JNKFFUKQotY2xhc3MgVG91Y2hW
aWV3SW50ZXJmYWNlOwotdHlwZWRlZiBUb3VjaFZpZXdJbnRlcmZhY2UgUGxhdGZvcm1XZWJWaWV3
OworY2xhc3MgUXRUb3VjaFZpZXdJbnRlcmZhY2U7Cit0eXBlZGVmIFF0VG91Y2hWaWV3SW50ZXJm
YWNlIFBsYXRmb3JtV2ViVmlldzsKICNlbmRpZgogCiBjbGFzcyBUaWxlZERyYXdpbmdBcmVhUHJv
eHkgOiBwdWJsaWMgRHJhd2luZ0FyZWFQcm94eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggYzAwM2RmY2QxNjllYjFiMWFhMzBkMGMzYTU0ZTQyNjRi
OGEzYzBkYS4uOWNmOTc4YjlhNTJhZmZhNDBhMjg0ZTZlOWFkMTgxMTU0OTQ1OWRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApAQCAtMjYsOSArMjYsOSBA
QAogI2luY2x1ZGUgIldLVVJMUXQuaCIKICNpbmNsdWRlICJxd2ViZXJyb3IuaCIKICNpbmNsdWRl
ICJxd2ViZXJyb3JfcC5oIgotI2luY2x1ZGUgPFBvbGljeUludGVyZmFjZS5oPgorI2luY2x1ZGUg
PFF0UG9saWN5SW50ZXJmYWNlLmg+CisjaW5jbHVkZSA8UXRWaWV3SW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8UXRXZWJQYWdlUHJveHkuaD4KLSNpbmNsdWRlIDxWaWV3SW50ZXJmYWNlLmg+CiAjaW5j
bHVkZSA8V0tBcnJheS5oPgogI2luY2x1ZGUgPFdLRnJhbWUuaD4KICNpbmNsdWRlIDxXS0ZyYW1l
UG9saWN5TGlzdGVuZXIuaD4KQEAgLTQ3LDE2ICs0NywxNiBAQCBzdGF0aWMgUXRXZWJQYWdlUHJv
eHkqIHRvUXRXZWJQYWdlUHJveHkoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKICAgICByZXR1cm4g
MDsKIH0KIAotc3RhdGljIGlubGluZSBWaWV3SW50ZXJmYWNlKiB0b1ZpZXdJbnRlcmZhY2UoY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3N0YXRpYyBpbmxpbmUgUXRWaWV3SW50ZXJmYWNlKiB0b1F0
Vmlld0ludGVyZmFjZShjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEFTU0VSVChjbGll
bnRJbmZvKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWaWV3SW50ZXJmYWNlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFF0Vmlld0ludGVyZmFjZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKIH0KIAot
c3RhdGljIGlubGluZSBQb2xpY3lJbnRlcmZhY2UqIHRvUG9saWN5SW50ZXJmYWNlKGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCitzdGF0aWMgaW5saW5lIFF0UG9saWN5SW50ZXJmYWNlKiB0b1F0UG9s
aWN5SW50ZXJmYWNlKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgQVNTRVJUKGNsaWVu
dEluZm8pOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFBvbGljeUludGVyZmFjZSo+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxRdFBvbGljeUludGVyZmFjZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKIH0K
IAogc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0xNTMsMTMgKzE1MywxMyBAQCB2b2lkIHF0X3drX2Rp
ZEZpbmlzaFByb2dyZXNzKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
dm9pZCBxdF93a19ydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVm
IGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
ICAgICBRU3RyaW5nIHFBbGVydFRleHQgPSBXS1N0cmluZ0NvcHlRU3RyaW5nKGFsZXJ0VGV4dCk7
Ci0gICAgdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5ydW5KYXZhU2NyaXB0QWxlcnQocUFs
ZXJ0VGV4dCk7CisgICAgdG9RdFZpZXdJbnRlcmZhY2UoY2xpZW50SW5mbyktPnJ1bkphdmFTY3Jp
cHRBbGVydChxQWxlcnRUZXh0KTsKIH0KIAogYm9vbCBxdF93a19ydW5KYXZhU2NyaXB0Q29uZmly
bShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgUVN0cmluZyBxTWVzc2FnZSA9IFdLU3RyaW5nQ29weVFTdHJp
bmcobWVzc2FnZSk7Ci0gICAgcmV0dXJuIHRvVmlld0ludGVyZmFjZShjbGllbnRJbmZvKS0+cnVu
SmF2YVNjcmlwdENvbmZpcm0ocU1lc3NhZ2UpOworICAgIHJldHVybiB0b1F0Vmlld0ludGVyZmFj
ZShjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdENvbmZpcm0ocU1lc3NhZ2UpOwogfQogCiBzdGF0
aWMgaW5saW5lIFdLU3RyaW5nUmVmIGNyZWF0ZU51bGxXS1N0cmluZygpCkBAIC0xNzMsNyArMTcz
LDcgQEAgV0tTdHJpbmdSZWYgcXRfd2tfcnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmUKICAgICBRU3RyaW5nIHFNZXNzYWdlID0gV0tT
dHJpbmdDb3B5UVN0cmluZyhtZXNzYWdlKTsKICAgICBRU3RyaW5nIHFEZWZhdWx0VmFsdWUgPSBX
S1N0cmluZ0NvcHlRU3RyaW5nKGRlZmF1bHRWYWx1ZSk7CiAgICAgYm9vbCBvayA9IGZhbHNlOwot
ICAgIFFTdHJpbmcgcmVzdWx0ID0gdG9WaWV3SW50ZXJmYWNlKGNsaWVudEluZm8pLT5ydW5KYXZh
U2NyaXB0UHJvbXB0KHFNZXNzYWdlLCBxRGVmYXVsdFZhbHVlLCBvayk7CisgICAgUVN0cmluZyBy
ZXN1bHQgPSB0b1F0Vmlld0ludGVyZmFjZShjbGllbnRJbmZvKS0+cnVuSmF2YVNjcmlwdFByb21w
dChxTWVzc2FnZSwgcURlZmF1bHRWYWx1ZSwgb2spOwogICAgIGlmICghb2spCiAgICAgICAgIHJl
dHVybiBjcmVhdGVOdWxsV0tTdHJpbmcoKTsKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRo
UVN0cmluZyhyZXN1bHQpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIFdLU3RyaW5nUmVmIHF0X3drX3J1
bkphdmFTY3JpcHRQcm9tcHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmlu
Z1JlCiB2b2lkIHF0X3drX3NldFN0YXR1c1RleHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0ZXh0
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIFFTdHJpbmcgcVRleHQgPSBXS1N0cmlu
Z0NvcHlRU3RyaW5nKHRleHQpOwotICAgIHRvVmlld0ludGVyZmFjZShjbGllbnRJbmZvKS0+ZGlk
Q2hhbmdlU3RhdHVzVGV4dChxVGV4dCk7CisgICAgdG9RdFZpZXdJbnRlcmZhY2UoY2xpZW50SW5m
byktPmRpZENoYW5nZVN0YXR1c1RleHQocVRleHQpOwogfQogCiB2b2lkIHF0X3drX3J1bk9wZW5Q
YW5lbChXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZiBwYXJh
bWV0ZXJzLCBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIGxpc3RlbmVyLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQpAQCAtMTk0LDE1ICsxOTQsMTUgQEAgdm9pZCBxdF93a19ydW5PcGVuUGFu
ZWwoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNSZWYgcGFyYW1l
dGUKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgd2tTZWxlY3RlZEZpbGVOYW1lcy5zaXpl
KCk7ICsraSkKICAgICAgICAgICAgIHNlbGVjdGVkRmlsZU5hbWVzICs9IHdrU2VsZWN0ZWRGaWxl
TmFtZXMuYXQoaSk7CiAKLSAgICBWaWV3SW50ZXJmYWNlOjpGaWxlQ2hvb3NlclR5cGUgYWxsb3dN
dWx0aXBsZUZpbGVzID0gV0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxl
cyhwYXJhbWV0ZXJzKSA/IFZpZXdJbnRlcmZhY2U6Ok11bHRpcGxlRmlsZXNTZWxlY3Rpb24gOiBW
aWV3SW50ZXJmYWNlOjpTaW5nbGVGaWxlU2VsZWN0aW9uOwotICAgIHRvVmlld0ludGVyZmFjZShj
bGllbnRJbmZvKS0+Y2hvb3NlRmlsZXMobGlzdGVuZXIsIHNlbGVjdGVkRmlsZU5hbWVzLCBhbGxv
d011bHRpcGxlRmlsZXMpOworICAgIFF0Vmlld0ludGVyZmFjZTo6RmlsZUNob29zZXJUeXBlIGFs
bG93TXVsdGlwbGVGaWxlcyA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc0dldEFsbG93c011bHRpcGxl
RmlsZXMocGFyYW1ldGVycykgPyBRdFZpZXdJbnRlcmZhY2U6Ok11bHRpcGxlRmlsZXNTZWxlY3Rp
b24gOiBRdFZpZXdJbnRlcmZhY2U6OlNpbmdsZUZpbGVTZWxlY3Rpb247CisgICAgdG9RdFZpZXdJ
bnRlcmZhY2UoY2xpZW50SW5mbyktPmNob29zZUZpbGVzKGxpc3RlbmVyLCBzZWxlY3RlZEZpbGVO
YW1lcywgYWxsb3dNdWx0aXBsZUZpbGVzKTsKIH0KIAogdm9pZCBxdF93a19tb3VzZURpZE1vdmVP
dmVyRWxlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1
bHQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgY29uc3QgUVVybCBhYnNvbHV0ZUxpbmtVcmwgPSBX
S1VSTENvcHlRVXJsKFdLSGl0VGVzdFJlc3VsdENvcHlBYnNvbHV0ZUxpbmtVUkwoaGl0VGVzdFJl
c3VsdCkpOwogICAgIGNvbnN0IFFTdHJpbmcgbGlua1RpdGxlID0gV0tTdHJpbmdDb3B5UVN0cmlu
ZyhXS0hpdFRlc3RSZXN1bHRDb3B5TGlua1RpdGxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICB0b1Zp
ZXdJbnRlcmZhY2UoY2xpZW50SW5mbyktPmRpZE1vdXNlTW92ZU92ZXJFbGVtZW50KGFic29sdXRl
TGlua1VybCwgbGlua1RpdGxlKTsKKyAgICB0b1F0Vmlld0ludGVyZmFjZShjbGllbnRJbmZvKS0+
ZGlkTW91c2VNb3ZlT3ZlckVsZW1lbnQoYWJzb2x1dGVMaW5rVXJsLCBsaW5rVGl0bGUpOwogfQog
CiBzdGF0aWMgUXQ6Ok1vdXNlQnV0dG9uIHRvUXRNb3VzZUJ1dHRvbihXS0V2ZW50TW91c2VCdXR0
b24gYnV0dG9uKQpAQCAtMjM0LDIwICsyMzQsMjAgQEAgc3RhdGljIFF0OjpLZXlib2FyZE1vZGlm
aWVycyB0b1F0S2V5Ym9hcmRNb2RpZmllcnMoV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiAK
IHZvaWQgcXRfd2tfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBl
LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0
dG9uLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxp
c3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0g
ICAgUG9saWN5SW50ZXJmYWNlKiBwb2xpY3lJbnRlcmZhY2UgPSB0b1BvbGljeUludGVyZmFjZShj
bGllbnRJbmZvKTsKKyAgICBRdFBvbGljeUludGVyZmFjZSogcG9saWN5SW50ZXJmYWNlID0gdG9R
dFBvbGljeUludGVyZmFjZShjbGllbnRJbmZvKTsKICAgICBXS1VSTFJlZiByZXF1ZXN0VVJMID0g
V0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0KTsKICAgICBRVXJsIHFVcmwgPSBXS1VSTENvcHlR
VXJsKHJlcXVlc3RVUkwpOwogICAgIFdLUmVsZWFzZShyZXF1ZXN0VVJMKTsKIAotICAgIFBvbGlj
eUludGVyZmFjZTo6UG9saWN5QWN0aW9uIGFjdGlvbiA9IHBvbGljeUludGVyZmFjZS0+bmF2aWdh
dGlvblBvbGljeUZvclVSTChxVXJsLCB0b1F0TW91c2VCdXR0b24obW91c2VCdXR0b24pLCB0b1F0
S2V5Ym9hcmRNb2RpZmllcnMobW9kaWZpZXJzKSk7CisgICAgUXRQb2xpY3lJbnRlcmZhY2U6OlBv
bGljeUFjdGlvbiBhY3Rpb24gPSBwb2xpY3lJbnRlcmZhY2UtPm5hdmlnYXRpb25Qb2xpY3lGb3JV
UkwocVVybCwgdG9RdE1vdXNlQnV0dG9uKG1vdXNlQnV0dG9uKSwgdG9RdEtleWJvYXJkTW9kaWZp
ZXJzKG1vZGlmaWVycykpOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7Ci0gICAgY2FzZSBQb2xpY3lJ
bnRlcmZhY2U6OlVzZToKKyAgICBjYXNlIFF0UG9saWN5SW50ZXJmYWNlOjpVc2U6CiAgICAgICAg
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUG9saWN5SW50ZXJmYWNlOjpEb3dubG9hZDoKKyAgICBjYXNlIFF0UG9saWN5SW50ZXJm
YWNlOjpEb3dubG9hZDoKICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQobGlz
dGVuZXIpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBvbGljeUludGVyZmFjZTo6SWdub3Jl
OgorICAgIGNhc2UgUXRQb2xpY3lJbnRlcmZhY2U6Oklnbm9yZToKICAgICAgICAgV0tGcmFtZVBv
bGljeUxpc3RlbmVySWdub3JlKGxpc3RlbmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BvbGljeUludGVyZmFjZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BvbGljeUludGVyZmFjZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYzBiNDdhYWQ5Zjg5ZTUwNGE2ZDU3ZDY1MzhjNTMxYTQ4ZTlj
MjFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Qb2xpY3lJbnRlcmZhY2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFBvbGljeUludGVyZmFj
ZV9oCi0jZGVmaW5lIFBvbGljeUludGVyZmFjZV9oCi0KLSNpbmNsdWRlIDxRdENvcmUvUVVybD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFBvbGljeUludGVyZmFjZSB7Ci1wdWJsaWM6
Ci0gICAgZW51bSBQb2xpY3lBY3Rpb24gewotICAgICAgICBVc2UsCi0gICAgICAgIERvd25sb2Fk
LAotICAgICAgICBJZ25vcmUKLSAgICB9OwotCi0gICAgdmlydHVhbCBQb2xpY3lBY3Rpb24gbmF2
aWdhdGlvblBvbGljeUZvclVSTChjb25zdCBRVXJsJiwgUXQ6Ok1vdXNlQnV0dG9uLCBRdDo6S2V5
Ym9hcmRNb2RpZmllcnMpID0gMDsKLX07Ci0KLX0KLQotI2VuZGlmIC8qIFBvbGljeUludGVyZmFj
ZV9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXREZXNrdG9w
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdERlc2t0b3BX
ZWJQYWdlUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MDVkZDM4Yzg4ZTA3ZThiNTVhYjQ2NDBjYmI5
MzYwN2UzZjllZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXREZXNrdG9wV2ViUGFnZVByb3h5LmNwcApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdERlc2t0b3BX
ZWJQYWdlUHJveHkuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCisjaW5j
bHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZl
bnQuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eVF0RGVza3RvcC5oIgorI2luY2x1ZGUg
InFkZXNrdG9wd2Vidmlldy5oIgorI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCisjaW5j
bHVkZSA8UUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFFdmVudD4KKyNpbmNsdWRlIDxRR3JhcGhp
Y3NTY2VuZURyYWdEcm9wRXZlbnQ+CisjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1
ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRp
YyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbih1bnNpZ25l
ZCBkcmFnT3BlcmF0aW9uKQoreworICAgIFF0OjpEcm9wQWN0aW9uIHJlc3VsdCA9IFF0OjpJZ25v
cmVBY3Rpb247CisgICAgaWYgKGRyYWdPcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAg
ICAgICAgcmVzdWx0ID0gUXQ6OkNvcHlBY3Rpb247CisgICAgZWxzZSBpZiAoZHJhZ09wZXJhdGlv
biAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQgPSBRdDo6TW92ZUFjdGlvbjsK
KyAgICBlbHNlIGlmIChkcmFnT3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAg
ICAgIHJlc3VsdCA9IFF0OjpNb3ZlQWN0aW9uOworICAgIGVsc2UgaWYgKGRyYWdPcGVyYXRpb24g
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gUXQ6OkxpbmtBY3Rpb247Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworUXREZXNrdG9wV2ViUGFnZVByb3h5OjpRdERlc2t0b3BX
ZWJQYWdlUHJveHkoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSogZGVza3RvcFdlYlZpZXcsIFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApCisgICAgOiBRdFdlYlBh
Z2VQcm94eShkZXNrdG9wV2ViVmlldywgZGVza3RvcFdlYlZpZXcsIGNvbnRleHQsIHBhZ2VHcm91
cCkKK3sKKyAgICBpbml0KCk7Cit9CisKK1Bhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gUXRE
ZXNrdG9wV2ViUGFnZVByb3h5OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKK3sKKyAgICByZXR1
cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5nZXQoKSk7Cit9
CisKK3ZvaWQgUXREZXNrdG9wV2ViUGFnZVByb3h5OjpwYWludENvbnRlbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFSZWN0JiBhcmVhKQoreworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcg
d2l0aCB0aGUgdW5wYWludGVkIHJlZ2lvbj8KKyAgICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVk
UmVnaW9uOworICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4obV93ZWJQYWdl
UHJveHktPmRyYXdpbmdBcmVhKCkpLT5wYWludChwYWludGVyLCBhcmVhLCB1bnBhaW50ZWRSZWdp
b24pOworfQorCit2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRBcmd1bWVu
dHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKQoreworICAgIC8vIFdlIGlnbm9y
ZSB0aGUgdmlld3BvcnQgZGVmaW5pdGlvbiBvbiB0aGUgRGVza3RvcC4KK30KKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCit2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICAvLyBXZSBkbyBub3QgaGFuZGxlIHRvdWNoIG9uIERlc2t0b3AgZm9yIG5vdywgdGhl
IGV2ZW50cyBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgV2ViUHJvY2Vz
cy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKyNlbmRpZgorCitQYXNzUmVmUHRyPFdl
YlBvcHVwTWVudVByb3h5PiBRdERlc2t0b3BXZWJQYWdlUHJveHk6OmNyZWF0ZVBvcHVwTWVudVBy
b3h5KFdlYlBhZ2VQcm94eSopCit7CisgICAgUVNHSXRlbSogd2ViVmlld0l0ZW0gPSBzdGF0aWNf
Y2FzdDxRRGVza3RvcFdlYlZpZXdQcml2YXRlKj4obV92aWV3SW50ZXJmYWNlKS0+cTsKKyAgICBy
ZXR1cm4gV2ViUG9wdXBNZW51UHJveHlRdERlc2t0b3A6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5n
ZXQoKSwgd2ViVmlld0l0ZW0pOworfQorCitib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFu
ZGxlRXZlbnQoUUV2ZW50KiBldikKK3sKKyAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBj
YXNlIFFFdmVudDo6TW91c2VNb3ZlOgorICAgICAgICByZXR1cm4gaGFuZGxlTW91c2VNb3ZlRXZl
bnQocmVpbnRlcnByZXRfY2FzdDxRTW91c2VFdmVudCo+KGV2KSk7CisgICAgY2FzZSBRRXZlbnQ6
Ok1vdXNlQnV0dG9uUHJlc3M6CisgICAgICAgIHJldHVybiBoYW5kbGVNb3VzZVByZXNzRXZlbnQo
cmVpbnRlcnByZXRfY2FzdDxRTW91c2VFdmVudCo+KGV2KSk7CisgICAgY2FzZSBRRXZlbnQ6Ok1v
dXNlQnV0dG9uUmVsZWFzZToKKyAgICAgICAgcmV0dXJuIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KHJlaW50ZXJwcmV0X2Nhc3Q8UU1vdXNlRXZlbnQqPihldikpOworICAgIGNhc2UgUUV2ZW50OjpN
b3VzZUJ1dHRvbkRibENsaWNrOgorICAgICAgICByZXR1cm4gaGFuZGxlTW91c2VEb3VibGVDbGlj
a0V2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UU1vdXNlRXZlbnQqPihldikpOworICAgIGNhc2UgUUV2
ZW50OjpXaGVlbDoKKyAgICAgICAgcmV0dXJuIGhhbmRsZVdoZWVsRXZlbnQocmVpbnRlcnByZXRf
Y2FzdDxRV2hlZWxFdmVudCo+KGV2KSk7CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyTGVhdmU6Cisg
ICAgICAgIHJldHVybiBoYW5kbGVIb3ZlckxlYXZlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxRSG92
ZXJFdmVudCo+KGV2KSk7CisgICAgY2FzZSBRRXZlbnQ6OkhvdmVyRW50ZXI6IC8vIEZhbGwtdGhy
b3VnaCwgZm9yIFdlYktpdCB0aGUgZGlzdGluY3Rpb24gZG9lc24ndCBtYXR0ZXIuCisgICAgY2Fz
ZSBRRXZlbnQ6OkhvdmVyTW92ZToKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvdmVyTW92ZUV2ZW50
KHJlaW50ZXJwcmV0X2Nhc3Q8UUhvdmVyRXZlbnQqPihldikpOworICAgIGNhc2UgUUV2ZW50OjpE
cmFnRW50ZXI6CisgICAgICAgIHJldHVybiBoYW5kbGVEcmFnRW50ZXJFdmVudChyZWludGVycHJl
dF9jYXN0PFFEcmFnRW50ZXJFdmVudCo+KGV2KSk7CisgICAgY2FzZSBRRXZlbnQ6OkRyYWdMZWF2
ZToKKyAgICAgICAgcmV0dXJuIGhhbmRsZURyYWdMZWF2ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
UURyYWdMZWF2ZUV2ZW50Kj4oZXYpKTsKKyAgICBjYXNlIFFFdmVudDo6RHJhZ01vdmU6CisgICAg
ICAgIHJldHVybiBoYW5kbGVEcmFnTW92ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UURyYWdNb3Zl
RXZlbnQqPihldikpOworICAgIGNhc2UgUUV2ZW50OjpEcm9wOgorICAgICAgICByZXR1cm4gaGFu
ZGxlRHJvcEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UURyb3BFdmVudCo+KGV2KSk7CisgICAgfQor
ICAgIHJldHVybiBRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRXZlbnQoZXYpOworfQorCitib29sIFF0
RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2
KQoreworICAgIC8vIEZvciBzb21lIHJlYXNvbiBtb3VzZSBwcmVzcyByZXN1bHRzIGluIG1vdXNl
IGhvdmVyICh3aGljaCBpcworICAgIC8vIGNvbnZlcnRlZCB0byBtb3VzZSBtb3ZlIGZvciBXZWJL
aXQpLiBXZSBpZ25vcmUgdGhlc2UgaG92ZXIKKyAgICAvLyBldmVudHMgYnkgY29tcGFyaW5nIGxh
c3RQb3Mgd2l0aCBuZXdQb3MuCisgICAgLy8gTk9URTogbGFzdFBvcyBmcm9tIHRoZSBldmVudCBh
bHdheXMgY29tZXMgZW1wdHksIHNvIHdlIHdvcmsKKyAgICAvLyBhcm91bmQgdGhhdCBoZXJlLgor
ICAgIHN0YXRpYyBRUG9pbnRGIGxhc3RQb3MgPSBRUG9pbnRGKCk7CisgICAgaWYgKGxhc3RQb3Mg
PT0gZXYtPnBvcygpKQorICAgICAgICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKKyAgICBsYXN0
UG9zID0gZXYtPnBvcygpOworCisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudChldiwgLypldmVudENsaWNrQ291bnQ9Ki8wKSk7CisKKyAgICBy
ZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKK30KKworYm9vbCBRdERlc2t0b3BXZWJQYWdlUHJveHk6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCogZXYpCit7CisgICAgaWYgKG1fdHJp
cGxlQ2xpY2tUaW1lci5pc0FjdGl2ZSgpICYmIChldi0+cG9zKCkgLSBtX3RyaXBsZUNsaWNrKS5t
YW5oYXR0YW5MZW5ndGgoKSA8IFFBcHBsaWNhdGlvbjo6c3RhcnREcmFnRGlzdGFuY2UoKSkgewor
ICAgICAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KGV2LCAvKmV2ZW50Q2xpY2tDb3VudD0qLzMpKTsKKyAgICAgICAgcmV0dXJuIGV2LT5pc0Fj
Y2VwdGVkKCk7CisgICAgfQorCisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudChldiwgLypldmVudENsaWNrQ291bnQ9Ki8xKSk7CisgICAgcmV0
dXJuIGV2LT5pc0FjY2VwdGVkKCk7Cit9CisKK2Jvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5Ojpo
YW5kbGVNb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXYpCit7CisgICAgbV93ZWJQYWdl
UHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgLypldmVudENs
aWNrQ291bnQ9Ki8wKSk7CisgICAgcmV0dXJuIGV2LT5pc0FjY2VwdGVkKCk7Cit9CisKK2Jvb2wg
UXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNl
RXZlbnQqIGV2KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2
ZVdlYk1vdXNlRXZlbnQoZXYsIC8qZXZlbnRDbGlja0NvdW50PSovMikpOworCisgICAgbV90cmlw
bGVDbGlja1RpbWVyLnN0YXJ0KFFBcHBsaWNhdGlvbjo6ZG91YmxlQ2xpY2tJbnRlcnZhbCgpLCB0
aGlzKTsKKyAgICBtX3RyaXBsZUNsaWNrID0gZXYtPmxvY2FsUG9zKCkudG9Qb2ludCgpOworICAg
IHJldHVybiBldi0+aXNBY2NlcHRlZCgpOworfQorCitib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94
eTo6aGFuZGxlV2hlZWxFdmVudChRV2hlZWxFdmVudCogZXYpCit7CisgICAgbV93ZWJQYWdlUHJv
eHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldikpOworICAgIHJldHVy
biBldi0+aXNBY2NlcHRlZCgpOworfQorCitib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFu
ZGxlSG92ZXJMZWF2ZUV2ZW50KFFIb3ZlckV2ZW50KiBldikKK3sKKyAgICAvLyBUbyBnZXQgdGhl
IGNvcnJlY3QgYmVoYXZpb3Igb2YgbW91c2VvdXQsIHdlIG5lZWQgdG8gdHVybiB0aGUgTGVhdmUg
ZXZlbnQgb2Ygb3VyIHdlYnZpZXcgaW50byBhIG1vdXNlIG1vdmUKKyAgICAvLyB0byBhIHZlcnkg
ZmFyIHJlZ2lvbi4KKyAgICBRSG92ZXJFdmVudCBmYWtlRXZlbnQoUUV2ZW50OjpIb3Zlck1vdmUs
IFFQb2ludChJTlRfTUlOLCBJTlRfTUlOKSwgZXYtPm9sZFBvcygpKTsKKyAgICByZXR1cm4gaGFu
ZGxlSG92ZXJNb3ZlRXZlbnQoJmZha2VFdmVudCk7Cit9CisKK2Jvb2wgUXREZXNrdG9wV2ViUGFn
ZVByb3h5OjpoYW5kbGVIb3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXYpCit7CisgICAgUU1v
dXNlRXZlbnQgbWUoUUV2ZW50OjpNb3VzZU1vdmUsIGV2LT5wb3MoKSwgUXQ6Ok5vQnV0dG9uLCBR
dDo6Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKKyAgICBtZS5zZXRBY2NlcHRlZChldi0+aXNB
Y2NlcHRlZCgpKTsKKworICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudCgmbWUpOworfQor
Citib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlRHJhZ0VudGVyRXZlbnQoUURyYWdF
bnRlckV2ZW50KiBldikKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+cmVzZXREcmFnT3BlcmF0aW9u
KCk7CisgICAgLy8gRklYTUU6IFNob3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCisgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9zKCks
IGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZXYtPnBvc3NpYmxlQWN0aW9ucygpKSk7CisgICAg
bV93ZWJQYWdlUHJveHktPmRyYWdFbnRlcmVkKCZkcmFnRGF0YSk7CisgICAgZXYtPmFjY2VwdFBy
b3Bvc2VkQWN0aW9uKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUXREZXNrdG9wV2Vi
UGFnZVByb3h5OjpoYW5kbGVEcmFnTGVhdmVFdmVudChRRHJhZ0xlYXZlRXZlbnQqIGV2KQorewor
ICAgIGJvb2wgYWNjZXB0ZWQgPSBldi0+aXNBY2NlcHRlZCgpOworCisgICAgLy8gRklYTUU6IFNo
b3VsZCBub3QgdXNlIFFDdXJzb3I6OnBvcygpCisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoMCwgSW50
UG9pbnQoKSwgUUN1cnNvcjo6cG9zKCksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBtX3dlYlBh
Z2VQcm94eS0+ZHJhZ0V4aXRlZCgmZHJhZ0RhdGEpOworICAgIG1fd2ViUGFnZVByb3h5LT5yZXNl
dERyYWdPcGVyYXRpb24oKTsKKworICAgIGV2LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7CisgICAg
cmV0dXJuIGFjY2VwdGVkOworfQorCitib29sIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxl
RHJhZ01vdmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCit7CisgICAgYm9vbCBhY2NlcHRlZCA9
IGV2LT5pc0FjY2VwdGVkKCk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNv
cjo6cG9zKCkKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygp
LCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVB
Y3Rpb25zKCkpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKTsK
KyAgICBldi0+c2V0RHJvcEFjdGlvbihkcmFnT3BlcmF0aW9uVG9Ecm9wQWN0aW9uKG1fd2ViUGFn
ZVByb3h5LT5kcmFnT3BlcmF0aW9uKCkpKTsKKyAgICBpZiAobV93ZWJQYWdlUHJveHktPmRyYWdP
cGVyYXRpb24oKSAhPSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICAgICAgZXYtPmFjY2VwdCgpOwor
CisgICAgZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKKyAgICByZXR1cm4gYWNjZXB0ZWQ7Cit9
CisKK2Jvb2wgUXREZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVEcm9wRXZlbnQoUURyb3BFdmVu
dCogZXYpCit7CisgICAgYm9vbCBhY2NlcHRlZCA9IGV2LT5pc0FjY2VwdGVkKCk7CisKKyAgICAv
LyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKKyAgICBEcmFnRGF0YSBkcmFn
RGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlv
blRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOworICAgIG1fd2ViUGFnZVByb3h5LT5wZXJmb3JtRHJhZygm
ZHJhZ0RhdGEsIFN0cmluZygpLCBoYW5kbGUpOworICAgIGV2LT5zZXREcm9wQWN0aW9uKGRyYWdP
cGVyYXRpb25Ub0Ryb3BBY3Rpb24obV93ZWJQYWdlUHJveHktPmRyYWdPcGVyYXRpb24oKSkpOwor
ICAgIGV2LT5hY2NlcHQoKTsKKworICAgIGV2LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7CisgICAg
cmV0dXJuIGFjY2VwdGVkOworfQorCit2b2lkIFF0RGVza3RvcFdlYlBhZ2VQcm94eTo6dGltZXJF
dmVudChRVGltZXJFdmVudCogZXYpCit7CisgICAgaW50IHRpbWVySWQgPSBldi0+dGltZXJJZCgp
OworICAgIGlmICh0aW1lcklkID09IG1fdHJpcGxlQ2xpY2tUaW1lci50aW1lcklkKCkpCisgICAg
ICAgIG1fdHJpcGxlQ2xpY2tUaW1lci5zdG9wKCk7CisgICAgZWxzZQorICAgICAgICBRT2JqZWN0
Ojp0aW1lckV2ZW50KGV2KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDdkMDVlZjQzOTA3NzEzY2Nk
MWIyZTQ4YTBmYWIxOThlODE0ODQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0RGVza3RvcFdlYlBhZ2VQcm94eS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0RGVza3RvcFdlYlBhZ2VQcm94eV9oCisj
ZGVmaW5lIFF0RGVza3RvcFdlYlBhZ2VQcm94eV9oCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5LmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCitjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOworCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCitjbGFzcyBRdERlc2t0b3BXZWJQYWdlUHJveHkgOiBwdWJsaWMgUXRXZWJQ
YWdlUHJveHkgeworcHVibGljOgorICAgIFF0RGVza3RvcFdlYlBhZ2VQcm94eShRRGVza3RvcFdl
YlZpZXdQcml2YXRlKiwgV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOworCisgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOworCitwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBwYWludENvbnRlbnQoUVBhaW50ZXIqLCBjb25zdCBRUmVjdCYgYXJlYSk7CisKK3ByaXZhdGU6
CisgICAgLyogUGFnZUNsaWVudCBvdmVycmlkZXMuICovCisgICAgdmlydHVhbCBQYXNzT3duUHRy
PERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVu
dHMmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5k
bGVkKTsKKyNlbmRpZgorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Kik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCopOworCisgICAgYm9vbCBo
YW5kbGVNb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCopOworICAgIGJvb2wgaGFuZGxlTW91c2VQ
cmVzc0V2ZW50KFFNb3VzZUV2ZW50Kik7CisgICAgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChRTW91c2VFdmVudCopOworICAgIGJvb2wgaGFuZGxlTW91c2VEb3VibGVDbGlja0V2ZW50KFFN
b3VzZUV2ZW50Kik7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7Cisg
ICAgYm9vbCBoYW5kbGVIb3ZlckxlYXZlRXZlbnQoUUhvdmVyRXZlbnQqKTsKKyAgICBib29sIGhh
bmRsZUhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgYm9vbCBoYW5kbGVEcmFnRW50
ZXJFdmVudChRRHJhZ0VudGVyRXZlbnQqKTsKKyAgICBib29sIGhhbmRsZURyYWdMZWF2ZUV2ZW50
KFFEcmFnTGVhdmVFdmVudCopOworICAgIGJvb2wgaGFuZGxlRHJhZ01vdmVFdmVudChRRHJhZ01v
dmVFdmVudCopOworICAgIGJvb2wgaGFuZGxlRHJvcEV2ZW50KFFEcm9wRXZlbnQqKTsKKworICAg
IFFQb2ludCBtX3RyaXBsZUNsaWNrOworICAgIFFCYXNpY1RpbWVyIG1fdHJpcGxlQ2xpY2tUaW1l
cjsKK307CisKKyNlbmRpZiAvLyBRdERlc2t0b3BXZWJQYWdlUHJveHlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDFm
NzM3NWE2MDNhZTYyYTNhMTUwNDhlM2I2YWVmYjI2ZWMzYTViMjguLmJmMzBiMWVhZTVkNDc3Y2I0
OTY2OTRhNGFhZDk4YTJiOTdkMTI2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVF0R2VzdHVyZVJlY29nbml6ZXI6OlF0R2VzdHVyZVJlY29nbml6
ZXIoVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkK
K1F0R2VzdHVyZVJlY29nbml6ZXI6OlF0R2VzdHVyZVJlY29nbml6ZXIoUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQogICAgIDogbV92aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCiAgICAgLCBtX3N0
YXRlKE5vR2VzdHVyZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRH
ZXN0dXJlUmVjb2duaXplci5oCmluZGV4IGI1NTA2OGRhZWM2MTkwOGMzMTA3ZDZjMTJlNDkwMTZh
ZTY2Njg3NzMuLjA5OTRjNDY2YjM4ZmIwYjE2YTE3OTI3MzUwMjYxMTM3MTY2ZmMyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0R2VzdHVyZVJlY29nbml6ZXIuaApA
QCAtMjgsMTQgKzI4LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOworY2xhc3MgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOwog
CiBjbGFzcyBRdEdlc3R1cmVSZWNvZ25pemVyIHsKIHByb3RlY3RlZDoKLSAgICBRdEdlc3R1cmVS
ZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqKTsKKyAgICBRdEdlc3R1cmVSZWNv
Z25pemVyKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSopOwogICAgIHZvaWQgcmVzZXQoKTsK
IAotICAgIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGNvbnN0IG1fdmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZTsKKyAgICBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGNvbnN0IG1fdmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgTm9HZXN0
dXJlLAogICAgICAgICBHZXN0dXJlUmVjb2duaXRpb25TdGFydGVkLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4
IDFmYmQ4Y2NiM2U5NzgzOTcyMzM2NmUwNzE3YjY4YmQwNTNmOWJlNWEuLjRlOGIxZmM3MmIxNzUz
Nzg3NWQzNGJjNjRiNTBmYmVjNTY0Y2U3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5jcHAKQEAgLTI2LDEyICsyNiwx
MiBAQAogCiAjaW5jbHVkZSAiUXRQYW5HZXN0dXJlUmVjb2duaXplci5oIgogCi0jaW5jbHVkZSAi
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgorI2luY2x1ZGUgIlF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZS5oIgogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUXRQYW5HZXN0dXJlUmVjb2duaXplcjo6UXRQYW5HZXN0dXJlUmVjb2duaXplcihWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkKK1F0UGFuR2VzdHVyZVJl
Y29nbml6ZXI6OlF0UGFuR2VzdHVyZVJlY29nbml6ZXIoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lKiBpbnRlcmFjdGlvbkVuZ2luZSkKICAgICA6IFF0R2VzdHVyZVJlY29nbml6ZXIoaW50ZXJh
Y3Rpb25FbmdpbmUpCiB7CiAgICAgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFBhbkdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDc0YmI3OWZhMmE2ZTU0
MTA2NDBlZTM2NWVjNGJkODA1NGI4NjRkZDAuLmYxNDQ2MmVmMzAxZDNhYTJhOGM5MThkNzZmOGIw
YmMyMWZhMGNmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBh
bkdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
UGFuR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBxcmVhbCBwYW5u
aW5nSW5pdGlhbFRyaWdnZXJEaXN0YW5jZVRocmVzaG9sZCA9IDUuOwogCiBjbGFzcyBRdFBhbkdl
c3R1cmVSZWNvZ25pemVyIDogcHJpdmF0ZSBRdEdlc3R1cmVSZWNvZ25pemVyIHsKIHB1YmxpYzoK
LSAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVyKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqKTsK
KyAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVyKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSop
OwogICAgIGJvb2wgcmVjb2duaXplKGNvbnN0IFFUb3VjaEV2ZW50Kik7CiAgICAgdm9pZCByZXNl
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNo
R2VzdHVyZVJlY29nbml6ZXIuY3BwCmluZGV4IDNhZmU3OTM5MTNmNTcyYWIxNTllMjk5MzI2ZmRk
YWQ3ZjdiMzMwY2MuLmYzOWRmYWFiZmFlZDM0ZmQ3ZTg0OTg1NjVlM2YwMDM5MWE5YmU1YzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVyZVJlY29n
bml6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmgiCiAKLSNpbmNsdWRlICJWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lLmgiCisjaW5jbHVkZSAiUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLmgiCiAjaW5jbHVkZSA8UXRDb3JlL1FMaW5lRj4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00OSw3ICs0OSw3IEBAIHN0YXRpYyBpbmxpbmUgUVBvaW50RiBjb21wdXRlVG91Y2hDZW50ZXIo
Y29uc3QgUVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50MSwKICAgICByZXR1cm4gKHBvaW50
MS5wb3MoKSArIHBvaW50Mi5wb3MoKSkgLyAyLjBmOwogfQogCi1RdFBpbmNoR2VzdHVyZVJlY29n
bml6ZXI6OlF0UGluY2hHZXN0dXJlUmVjb2duaXplcihWaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KiBpbnRlcmFjdGlvbkVuZ2luZSkKK1F0UGluY2hHZXN0dXJlUmVjb2duaXplcjo6UXRQaW5jaEdl
c3R1cmVSZWNvZ25pemVyKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25F
bmdpbmUpCiAgICAgOiBRdEdlc3R1cmVSZWNvZ25pemVyKGludGVyYWN0aW9uRW5naW5lKQogewog
ICAgIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
aW5jaEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQ
aW5jaEdlc3R1cmVSZWNvZ25pemVyLmgKaW5kZXggZmFjNzBlOGY3ZGE4MTZiNzc4ZDcxOWY1MTEw
MWFjMDA2N2VhYzNmNC4uNGNlYzhhYWZmNzM5OTBkZWUzMjhhMDlmMjY1OTIzMGRkMGFiYjJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGluY2hHZXN0dXJlUmVj
b2duaXplci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBpbmNoR2VzdHVy
ZVJlY29nbml6ZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFFQb2ludEYg
aW5pdGlhbFBvc2l0aW9uOwogICAgIH07CiAKLSAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIo
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSopOworICAgIFF0UGluY2hHZXN0dXJlUmVjb2duaXpl
cihRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqKTsKICAgICBib29sIHJlY29nbml6ZShjb25z
dCBRVG91Y2hFdmVudCopOwogICAgIHZvaWQgcmVzZXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UG9saWN5SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRQb2xpY3lJbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YThiMTNlMjI5
M2ExOTQ3MjdjYTRjMDQ5MDAwMWI3ZGY0NDk1NzY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UG9saWN5SW50ZXJmYWNlLmgKQEAgLTAsMCArMSw0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRQb2xpY3lJbnRlcmZhY2VfaAorI2RlZmlu
ZSBRdFBvbGljeUludGVyZmFjZV9oCisKKyNpbmNsdWRlIDxRdENvcmUvUVVybD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFF0UG9saWN5SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBl
bnVtIFBvbGljeUFjdGlvbiB7CisgICAgICAgIFVzZSwKKyAgICAgICAgRG93bmxvYWQsCisgICAg
ICAgIElnbm9yZQorICAgIH07CisKKyAgICB2aXJ0dWFsIFBvbGljeUFjdGlvbiBuYXZpZ2F0aW9u
UG9saWN5Rm9yVVJMKGNvbnN0IFFVcmwmLCBRdDo6TW91c2VCdXR0b24sIFF0OjpLZXlib2FyZE1v
ZGlmaWVycykgPSAwOworfTsKKworfQorCisjZW5kaWYgLy8gUXRQb2xpY3lJbnRlcmZhY2VfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2RlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNTFjNTA0M2U0NGM0OWY3ZTFiNTMxZDhmZGVmN2I0NjEyMWU1MGMzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5jcHAKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJRdFNHVGlsZU5vZGUuaCIKKworI2luY2x1ZGUgPFFTR0VuZ2luZT4KKyNpbmNs
dWRlIDxRU0dGbGF0Q29sb3JNYXRlcmlhbD4KKyNpbmNsdWRlIDxRU0dUZXh0dXJlPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUXRTR1RpbGVOb2RlOjpRdFNHVGlsZU5vZGUoUVNHRW5naW5lKiBl
bmdpbmUpCisgICAgOiBtX2VuZ2luZShlbmdpbmUpCisgICAgLCBtX2dlb21ldHJ5KFFTR0dlb21l
dHJ5OjpkZWZhdWx0QXR0cmlidXRlc19UZXh0dXJlZFBvaW50MkQoKSwgNCkKKyAgICAsIG1fdGV4
dHVyZU1hdGVyaWFsc0NyZWF0ZWQoZmFsc2UpCit7CisgICAgc2V0RmxhZ3MoT3duc01hdGVyaWFs
IHwgT3duc09wYXF1ZU1hdGVyaWFsKTsKKyAgICBzZXRHZW9tZXRyeSgmbV9nZW9tZXRyeSk7Cisg
ICAgc2V0TWF0ZXJpYWwobmV3IFFTR0ZsYXRDb2xvck1hdGVyaWFsKTsKKyAgICBzZXRPcGFxdWVN
YXRlcmlhbChuZXcgUVNHRmxhdENvbG9yTWF0ZXJpYWwpOworfQorCit2b2lkIFF0U0dUaWxlTm9k
ZTo6c2V0QmFja0J1ZmZlcihjb25zdCBRSW1hZ2UmIGJhY2tCdWZmZXIsIGNvbnN0IFFSZWN0RiYg
c291cmNlUmVjdCwgY29uc3QgUVJlY3RGJiB0YXJnZXRSZWN0KQoreworICAgIG1fYmFja0J1ZmZl
clRleHR1cmUucmVzZXQobV9lbmdpbmUtPmNyZWF0ZVRleHR1cmVGcm9tSW1hZ2UoYmFja0J1ZmZl
cikpOworICAgIG1fYmFja0J1ZmZlclRhcmdldFJlY3QgPSB0YXJnZXRSZWN0OworICAgIG1fYmFj
a0J1ZmZlclNvdXJjZVJlY3QgPSBtX2JhY2tCdWZmZXJUZXh0dXJlLT5jb252ZXJ0VG9Ob3JtYWxp
emVkU291cmNlUmVjdChzb3VyY2VSZWN0KTsKKworICAgIC8vIEZvcmNlIHRoZSB0ZXh0dXJlIHVw
bG9hZC4KKyAgICBtX2JhY2tCdWZmZXJUZXh0dXJlLT5iaW5kKCk7Cit9CisKK3ZvaWQgUXRTR1Rp
bGVOb2RlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fYmFja0J1ZmZlclRl
eHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV90ZXh0dXJlTWF0ZXJpYWxzQ3Jl
YXRlZCkgeworICAgICAgICBzZXRNYXRlcmlhbChuZXcgUVNHVGV4dHVyZU1hdGVyaWFsKTsKKyAg
ICAgICAgc2V0T3BhcXVlTWF0ZXJpYWwobmV3IFFTR09wYXF1ZVRleHR1cmVNYXRlcmlhbCk7Cisg
ICAgICAgIG1fdGV4dHVyZU1hdGVyaWFsc0NyZWF0ZWQgPSB0cnVlOworICAgIH0KKworICAgIHN0
YXRpY19jYXN0PFFTR1RleHR1cmVNYXRlcmlhbCo+KG1hdGVyaWFsKCkpLT5zZXRUZXh0dXJlKG1f
YmFja0J1ZmZlclRleHR1cmUuZGF0YSgpKTsKKyAgICBzdGF0aWNfY2FzdDxRU0dPcGFxdWVUZXh0
dXJlTWF0ZXJpYWwqPihvcGFxdWVNYXRlcmlhbCgpKS0+c2V0VGV4dHVyZShtX2JhY2tCdWZmZXJU
ZXh0dXJlLmRhdGEoKSk7CisgICAgbWFya0RpcnR5KERpcnR5TWF0ZXJpYWwpOworCisgICAgUVNH
R2VvbWV0cnk6OnVwZGF0ZVRleHR1cmVkUmVjdEdlb21ldHJ5KCZtX2dlb21ldHJ5LCBtX2JhY2tC
dWZmZXJUYXJnZXRSZWN0LCBtX2JhY2tCdWZmZXJTb3VyY2VSZWN0KTsKKyAgICBtYXJrRGlydHko
RGlydHlHZW9tZXRyeSk7CisKKyAgICBtX2Zyb250QnVmZmVyVGV4dHVyZS5zd2FwKG1fYmFja0J1
ZmZlclRleHR1cmUpOworICAgIG1fYmFja0J1ZmZlclRleHR1cmUucmVzZXQoKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhm
MzhiMWFjNDE5ZGNjYWM3ODM4N2RhMTVhZmVkZjg4ZDIzZDFmMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRTR1RpbGVOb2RlLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRTR1RpbGVOb2RlX2gKKyNkZWZpbmUg
UXRTR1RpbGVOb2RlX2gKKworI2luY2x1ZGUgPFFTR0dlb21ldHJ5Tm9kZT4KKyNpbmNsdWRlIDxR
U0dPcGFxdWVUZXh0dXJlTWF0ZXJpYWw+CisjaW5jbHVkZSA8UVNHVGV4dHVyZU1hdGVyaWFsPgor
CitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFTR0VuZ2luZTsKK2NsYXNzIFFTR1RleHR1cmU7
CitRVF9FTkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBRdFNHVGls
ZU5vZGUgOiBwdWJsaWMgUVNHR2VvbWV0cnlOb2RlIHsKK3B1YmxpYzoKKyAgICBRdFNHVGlsZU5v
ZGUoUVNHRW5naW5lKik7CisgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFFJbWFnZSYsIGNv
bnN0IFFSZWN0RiYgc291cmNlUmVjdCwgY29uc3QgUVJlY3RGJiB0YXJnZXRSZWN0KTsKKyAgICB2
b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKKworcHJpdmF0ZToKKyAgICBRU0dFbmdpbmUqIG1f
ZW5naW5lOworICAgIFFTR0dlb21ldHJ5IG1fZ2VvbWV0cnk7CisgICAgUVNjb3BlZFBvaW50ZXI8
UVNHVGV4dHVyZT4gbV9mcm9udEJ1ZmZlclRleHR1cmU7CisgICAgUVNjb3BlZFBvaW50ZXI8UVNH
VGV4dHVyZT4gbV9iYWNrQnVmZmVyVGV4dHVyZTsKKyAgICBib29sIG1fdGV4dHVyZU1hdGVyaWFs
c0NyZWF0ZWQ7CisKKyAgICBRUmVjdEYgbV9iYWNrQnVmZmVyVGFyZ2V0UmVjdDsKKyAgICBRUmVj
dEYgbV9iYWNrQnVmZmVyU291cmNlUmVjdDsKK307CisKK30KKworI2VuZGlmIC8vIFF0U0dUaWxl
Tm9kZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRTR1VwZGF0
ZVF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFNHVXBkYXRlUXVldWUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM4MmI0NDcxZTU5MTgxYzE2MjY5MzVhZWVmZTNjZjdkMWJkN2Y2ODQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRTR1VwZGF0
ZVF1ZXVlLmNwcApAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdFNHVXBkYXRlUXVldWUuaCIKKworI2luY2x1
ZGUgIlBhc3NPd25QdHIuaCIKKyNpbmNsdWRlICJRdFNHVGlsZU5vZGUuaCIKKyNpbmNsdWRlIDxR
U0dJdGVtPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IE5vZGVVcGRhdGVDcmVhdGVU
aWxlIDogcHVibGljIE5vZGVVcGRhdGUgeworICAgIE5vZGVVcGRhdGVDcmVhdGVUaWxlKGludCBu
b2RlSUQsIGZsb2F0IHNjYWxlKQorICAgICAgICA6IE5vZGVVcGRhdGUoQ3JlYXRlVGlsZSkKKyAg
ICAgICAgLCBub2RlSUQobm9kZUlEKQorICAgICAgICAsIHNjYWxlKHNjYWxlKQorICAgIHsgfQor
ICAgIGludCBub2RlSUQ7CisgICAgZmxvYXQgc2NhbGU7Cit9OworCitzdHJ1Y3QgTm9kZVVwZGF0
ZVJlbW92ZVRpbGUgOiBwdWJsaWMgTm9kZVVwZGF0ZSB7CisgICAgTm9kZVVwZGF0ZVJlbW92ZVRp
bGUoaW50IG5vZGVJRCkKKyAgICAgICAgOiBOb2RlVXBkYXRlKFJlbW92ZVRpbGUpCisgICAgICAg
ICwgbm9kZUlEKG5vZGVJRCkKKyAgICB7IH0KKyAgICBpbnQgbm9kZUlEOworfTsKKworc3RydWN0
IE5vZGVVcGRhdGVTZXRCYWNrQnVmZmVyIDogcHVibGljIE5vZGVVcGRhdGUgeworICAgIE5vZGVV
cGRhdGVTZXRCYWNrQnVmZmVyKGludCBub2RlSUQsIGNvbnN0IFFJbWFnZSYgYmFja0J1ZmZlciwg
Y29uc3QgUVJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IFFSZWN0JiB0YXJnZXRSZWN0KQorICAgICAg
ICA6IE5vZGVVcGRhdGUoU2V0QmFja0J1ZmZlcikKKyAgICAgICAgLCBub2RlSUQobm9kZUlEKQor
ICAgICAgICAsIGJhY2tCdWZmZXIoYmFja0J1ZmZlcikKKyAgICAgICAgLCBzb3VyY2VSZWN0KHNv
dXJjZVJlY3QpCisgICAgICAgICwgdGFyZ2V0UmVjdCh0YXJnZXRSZWN0KQorICAgIHsgfQorICAg
IGludCBub2RlSUQ7CisgICAgUUltYWdlIGJhY2tCdWZmZXI7CisgICAgUVJlY3Qgc291cmNlUmVj
dDsKKyAgICBRUmVjdCB0YXJnZXRSZWN0OworfTsKKworc3RydWN0IE5vZGVVcGRhdGVTd2FwVGls
ZUJ1ZmZlcnMgOiBwdWJsaWMgTm9kZVVwZGF0ZSB7CisgICAgTm9kZVVwZGF0ZVN3YXBUaWxlQnVm
ZmVycygpCisgICAgICAgIDogTm9kZVVwZGF0ZShTd2FwVGlsZUJ1ZmZlcnMpCisgICAgeyB9Cit9
OworCitRdFNHVXBkYXRlUXVldWU6OlF0U0dVcGRhdGVRdWV1ZShRU0dJdGVtKiBpdGVtKQorICAg
IDogaXRlbShpdGVtKQorICAgICwgbGFzdFNjYWxlKDApCisgICAgLCBsYXN0U2NhbGVOb2RlKDAp
CisgICAgLCBuZXh0Tm9kZUlEKDEpCisgICAgLCBtX2lzU3dhcFBlbmRpbmcoZmFsc2UpCit7Cit9
CisKK2ludCBRdFNHVXBkYXRlUXVldWU6OmNyZWF0ZVRpbGVOb2RlKGZsb2F0IHNjYWxlKQorewor
ICAgIGludCBub2RlSUQgPSBuZXh0Tm9kZUlEKys7CisgICAgbm9kZVVwZGF0ZVF1ZXVlLmFwcGVu
ZChhZG9wdFB0cihuZXcgTm9kZVVwZGF0ZUNyZWF0ZVRpbGUobm9kZUlELCBzY2FsZSkpKTsKKyAg
ICBpdGVtLT51cGRhdGUoKTsKKyAgICByZXR1cm4gbm9kZUlEOworfQorCit2b2lkIFF0U0dVcGRh
dGVRdWV1ZTo6cmVtb3ZlVGlsZU5vZGUoaW50IG5vZGVJRCkKK3sKKyAgICBub2RlVXBkYXRlUXVl
dWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBOb2RlVXBkYXRlUmVtb3ZlVGlsZShub2RlSUQpKSk7Cisg
ICAgaXRlbS0+dXBkYXRlKCk7Cit9CisKK3ZvaWQgUXRTR1VwZGF0ZVF1ZXVlOjpzZXROb2RlQmFj
a0J1ZmZlcihpbnQgbm9kZUlELCBjb25zdCBRSW1hZ2UmIGJhY2tCdWZmZXIsIGNvbnN0IFFSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBRUmVjdCYgdGFyZ2V0UmVjdCkKK3sKKyAgICBub2RlVXBkYXRl
UXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBOb2RlVXBkYXRlU2V0QmFja0J1ZmZlcihub2RlSUQs
IGJhY2tCdWZmZXIsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QpKSk7CisgICAgaXRlbS0+dXBkYXRl
KCk7Cit9CisKK3ZvaWQgUXRTR1VwZGF0ZVF1ZXVlOjpzd2FwVGlsZUJ1ZmZlcnMoKQoreworICAg
IG5vZGVVcGRhdGVRdWV1ZS5hcHBlbmQoYWRvcHRQdHIobmV3IE5vZGVVcGRhdGVTd2FwVGlsZUJ1
ZmZlcnMoKSkpOworICAgIG1faXNTd2FwUGVuZGluZyA9IHRydWU7CisgICAgaXRlbS0+dXBkYXRl
KCk7Cit9CisKK3ZvaWQgUXRTR1VwZGF0ZVF1ZXVlOjphcHBseVVwZGF0ZXMoUVNHTm9kZSogaXRl
bU5vZGUpCit7CisgICAgd2hpbGUgKCFub2RlVXBkYXRlUXVldWUuaXNFbXB0eSgpKSB7CisgICAg
ICAgIE93blB0cjxOb2RlVXBkYXRlPiBub2RlVXBkYXRlKG5vZGVVcGRhdGVRdWV1ZS50YWtlRmly
c3QoKSk7CisgICAgICAgIHN3aXRjaCAobm9kZVVwZGF0ZS0+dHlwZSkgeworICAgICAgICBjYXNl
IE5vZGVVcGRhdGU6OkNyZWF0ZVRpbGU6IHsKKyAgICAgICAgICAgIE5vZGVVcGRhdGVDcmVhdGVU
aWxlKiBjcmVhdGVUaWxlVXBkYXRlID0gc3RhdGljX2Nhc3Q8Tm9kZVVwZGF0ZUNyZWF0ZVRpbGUq
Pihub2RlVXBkYXRlLmdldCgpKTsKKyAgICAgICAgICAgIFF0U0dUaWxlTm9kZSogdGlsZU5vZGUg
PSBuZXcgUXRTR1RpbGVOb2RlKGl0ZW0tPnNjZW5lR3JhcGhFbmdpbmUoKSk7CisgICAgICAgICAg
ICBnZXRTY2FsZU5vZGUoY3JlYXRlVGlsZVVwZGF0ZS0+c2NhbGUsIGl0ZW1Ob2RlKS0+cHJlcGVu
ZENoaWxkTm9kZSh0aWxlTm9kZSk7CisgICAgICAgICAgICBub2Rlcy5zZXQoY3JlYXRlVGlsZVVw
ZGF0ZS0+bm9kZUlELCB0aWxlTm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIE5vZGVVcGRhdGU6OlJlbW92ZVRpbGU6IHsKKyAgICAgICAgICAgIE5vZGVV
cGRhdGVSZW1vdmVUaWxlKiByZW1vdmVVcGRhdGUgPSBzdGF0aWNfY2FzdDxOb2RlVXBkYXRlUmVt
b3ZlVGlsZSo+KG5vZGVVcGRhdGUuZ2V0KCkpOworICAgICAgICAgICAgUVNHTm9kZSogbm9kZSA9
IG5vZGVzLnRha2UocmVtb3ZlVXBkYXRlLT5ub2RlSUQpOworICAgICAgICAgICAgUVNHTm9kZSog
c2NhbGVOb2RlID0gbm9kZS0+cGFyZW50KCk7CisKKyAgICAgICAgICAgIHNjYWxlTm9kZS0+cmVt
b3ZlQ2hpbGROb2RlKG5vZGUpOworICAgICAgICAgICAgaWYgKCFzY2FsZU5vZGUtPmNoaWxkQ291
bnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChzY2FsZU5vZGUgPT0gbGFzdFNjYWxlTm9kZSkg
eworICAgICAgICAgICAgICAgICAgICBsYXN0U2NhbGUgPSAwOworICAgICAgICAgICAgICAgICAg
ICBsYXN0U2NhbGVOb2RlID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZGVsZXRlIHNjYWxlTm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBub2Rl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBOb2RlVXBkYXRl
OjpTZXRCYWNrQnVmZmVyOiB7CisgICAgICAgICAgICBOb2RlVXBkYXRlU2V0QmFja0J1ZmZlciog
c2V0QmFja0J1ZmZlclVwZGF0ZSA9IHN0YXRpY19jYXN0PE5vZGVVcGRhdGVTZXRCYWNrQnVmZmVy
Kj4obm9kZVVwZGF0ZS5nZXQoKSk7CisgICAgICAgICAgICBRdFNHVGlsZU5vZGUqIHRpbGVOb2Rl
ID0gbm9kZXMuZ2V0KHNldEJhY2tCdWZmZXJVcGRhdGUtPm5vZGVJRCk7CisgICAgICAgICAgICB0
aWxlTm9kZS0+c2V0QmFja0J1ZmZlcihzZXRCYWNrQnVmZmVyVXBkYXRlLT5iYWNrQnVmZmVyLCBz
ZXRCYWNrQnVmZmVyVXBkYXRlLT5zb3VyY2VSZWN0LCBzZXRCYWNrQnVmZmVyVXBkYXRlLT50YXJn
ZXRSZWN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTm9k
ZVVwZGF0ZTo6U3dhcFRpbGVCdWZmZXJzOiB7CisgICAgICAgICAgICBIYXNoTWFwPGludCwgUXRT
R1RpbGVOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IG5vZGVzLmVuZCgpOworICAgICAgICAgICAgZm9y
IChIYXNoTWFwPGludCwgUXRTR1RpbGVOb2RlKj46Oml0ZXJhdG9yIGl0ID0gbm9kZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnN3YXBCdWZm
ZXJzSWZOZWVkZWQoKTsKKyAgICAgICAgICAgIG1faXNTd2FwUGVuZGluZyA9IGZhbHNlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCitRU0dOb2RlKiBR
dFNHVXBkYXRlUXVldWU6OmdldFNjYWxlTm9kZShmbG9hdCBzY2FsZSwgUVNHTm9kZSogaXRlbU5v
ZGUpCit7CisgICAgaWYgKHNjYWxlID09IGxhc3RTY2FsZSkKKyAgICAgICAgcmV0dXJuIGxhc3RT
Y2FsZU5vZGU7CisKKyAgICBRU0dUcmFuc2Zvcm1Ob2RlKiBzY2FsZU5vZGUgPSBuZXcgUVNHVHJh
bnNmb3JtTm9kZTsKKyAgICBRTWF0cml4NHg0IHNjYWxlTWF0cml4OworICAgIC8vIFVzZSBzY2Fs
ZShmbG9hdCxmbG9hdCkgdG8gcHJldmVudCBzY2FsaW5nIHRoZSBaIGNvbXBvbmVudC4KKyAgICAv
LyBSZXZlcnNlIHRoZSBpdGVtJ3MgdHJhbnNmb3JtIHNjYWxlIHNpbmNlIG91ciB0aWxlcyB3ZXJl
IGdlbmVyYXRlZCBmb3IgdGhpcyBzcGVjaWZpYyBzY2FsZS4KKyAgICBzY2FsZU1hdHJpeC5zY2Fs
ZSgxIC8gc2NhbGUsIDEgLyBzY2FsZSk7CisgICAgc2NhbGVOb2RlLT5zZXRNYXRyaXgoc2NhbGVN
YXRyaXgpOworICAgIC8vIFByZXBlbmQgaW5zdGVhZCBvZiBhcHBlbmQgdG8gcGFpbnQgdGhlIG5l
dywgaW5jb21wbGV0ZSwgc2NhbGUgYmVmb3JlL2JlaGluZCB0aGUgcHJldmlvdXMgb25lLgorICAg
IGl0ZW1Ob2RlLT5wcmVwZW5kQ2hpbGROb2RlKHNjYWxlTm9kZSk7CisKKyAgICBsYXN0U2NhbGUg
PSBzY2FsZTsKKyAgICBsYXN0U2NhbGVOb2RlID0gc2NhbGVOb2RlOworICAgIHJldHVybiBsYXN0
U2NhbGVOb2RlOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRTR1VwZGF0ZVF1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRTR1Vw
ZGF0ZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg5MDUyNTRhNmFiY2ZmZjJkZDk1NzQ3YzdhODIzYjkx
ZWY2YWUzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFNHVXBkYXRlUXVldWUuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBRdFNHVXBkYXRlUXVldWVfaAorI2RlZmluZSBRdFNHVXBkYXRlUXVldWVfaAorCisjaW5j
bHVkZSAiRGVxdWUuaCIKKyNpbmNsdWRlICJIYXNoTWFwLmgiCisjaW5jbHVkZSAiT3duUHRyLmgi
CisKK2NsYXNzIFFJbWFnZTsKK2NsYXNzIFFSZWN0OworY2xhc3MgUVNHSXRlbTsKK2NsYXNzIFFT
R05vZGU7CitjbGFzcyBRU2l6ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5vZGVV
cGRhdGU7CitjbGFzcyBQYWdlTm9kZTsKK2NsYXNzIFF0U0dUaWxlTm9kZTsKKworLy8gVGFrZXMg
Y2FyZSBvZiB0YWtpbmcgdXBkYXRlIHJlcXVlc3RzIHRoZW4gZnVsZmlsbGluZyB0aGVtIGFzeW5j
aHJvbm91c2x5IG9uIHRoZSBzY2VuZSBncmFwaCB0aHJlYWQuCitjbGFzcyBRdFNHVXBkYXRlUXVl
dWUgeworcHVibGljOgorICAgIFF0U0dVcGRhdGVRdWV1ZShRU0dJdGVtKik7CisKKyAgICBpbnQg
Y3JlYXRlVGlsZU5vZGUoZmxvYXQgc2NhbGUpOworICAgIHZvaWQgcmVtb3ZlVGlsZU5vZGUoaW50
IG5vZGVJRCk7CisgICAgdm9pZCBzZXROb2RlQmFja0J1ZmZlcihpbnQgbm9kZUlELCBjb25zdCBR
SW1hZ2UmIHRleHR1cmUsIGNvbnN0IFFSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBRUmVjdCYgdGFy
Z2V0UmVjdCk7CisgICAgdm9pZCBzd2FwVGlsZUJ1ZmZlcnMoKTsKKworICAgIC8vIENhbGxlZCBi
eSB0aGUgUVNHSXRlbS4KKyAgICB2b2lkIGFwcGx5VXBkYXRlcyhRU0dOb2RlKiBpdGVtTm9kZSk7
CisgICAgYm9vbCBpc1N3YXBQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1N3YXBQZW5kaW5n
OyB9CisKK3ByaXZhdGU6CisgICAgUVNHTm9kZSogZ2V0U2NhbGVOb2RlKGZsb2F0IHNjYWxlLCBR
U0dOb2RlKiBpdGVtTm9kZSk7CisKKyAgICBRU0dJdGVtKiBpdGVtOworICAgIERlcXVlPE93blB0
cjxOb2RlVXBkYXRlPiA+IG5vZGVVcGRhdGVRdWV1ZTsKKyAgICBIYXNoTWFwPGludCwgUXRTR1Rp
bGVOb2RlKj4gbm9kZXM7CisgICAgZmxvYXQgbGFzdFNjYWxlOworICAgIFFTR05vZGUqIGxhc3RT
Y2FsZU5vZGU7CisgICAgaW50IG5leHROb2RlSUQ7CisgICAgYm9vbCBtX2lzU3dhcFBlbmRpbmc7
Cit9OworCitzdHJ1Y3QgTm9kZVVwZGF0ZSB7CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgQ3Jl
YXRlVGlsZSwKKyAgICAgICAgUmVtb3ZlVGlsZSwKKyAgICAgICAgU2V0QmFja0J1ZmZlciwKKyAg
ICAgICAgU3dhcFRpbGVCdWZmZXJzCisgICAgfTsKKyAgICBOb2RlVXBkYXRlKFR5cGUgdHlwZSkK
KyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgeyB9CisgICAgdmlydHVhbCB+Tm9kZVVwZGF0ZSgp
IHsgfQorICAgIFR5cGUgdHlwZTsKK307CisKK30KKworI2VuZGlmIC8vIFF0U0dVcGRhdGVRdWV1
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50
ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWQyMzg4NzlhMjhkYzM0YzBhNGNlMDY4MjZjYjBkODdk
MTIzMzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
VG91Y2hWaWV3SW50ZXJmYWNlLmNwcApAQCAtMCwwICsxLDE5MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdFRvdWNoVmlld0ludGVyZmFjZS5o
IgorCisjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgorI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2Vf
cC5oIgorI2luY2x1ZGUgInF0b3VjaHdlYnZpZXcuaCIKKyNpbmNsdWRlICJxdG91Y2h3ZWJ2aWV3
X3AuaCIKKyNpbmNsdWRlICJxd2ViZXJyb3IuaCIKKworI2luY2x1ZGUgPFFEZWNsYXJhdGl2ZUVu
Z2luZT4KKyNpbmNsdWRlIDxRU0dWaWV3PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUXRUb3Vj
aFZpZXdJbnRlcmZhY2U6OlF0VG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdw
b3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpCisgICAgOiBtX3ZpZXdwb3J0Vmlldyh2
aWV3cG9ydFZpZXcpCisgICAgLCBtX3BhZ2VWaWV3KHBhZ2VWaWV3KQoreworICAgIFFfQVNTRVJU
KG1fdmlld3BvcnRWaWV3KTsKKyAgICBRX0FTU0VSVChtX3BhZ2VWaWV3KTsKK30KKwordm9pZCBR
dFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBRUG9pbnQmLCBj
b25zdCBRUmVjdCYpCit7Cit9CisKK1F0U0dVcGRhdGVRdWV1ZSogUXRUb3VjaFZpZXdJbnRlcmZh
Y2U6OnNjZW5lR3JhcGhVcGRhdGVRdWV1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZtX3BhZ2VW
aWV3LT5kLT5zZ1VwZGF0ZVF1ZXVlOworfQorCit2b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpz
ZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikKK3sKK30KKworUVNpemUgUXRUb3VjaFZp
ZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVhU2l6ZSgpCit7CisgICAgcmV0dXJuIFFTaXplKG1fcGFn
ZVZpZXctPndpZHRoKCksIG1fcGFnZVZpZXctPmhlaWdodCgpKTsKK30KKwordm9pZCBRdFRvdWNo
Vmlld0ludGVyZmFjZTo6Y29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJiBuZXdTaXplKQor
eworICAgIG1fcGFnZVZpZXctPnNldFdpZHRoKG5ld1NpemUud2lkdGgoKSk7CisgICAgbV9wYWdl
Vmlldy0+c2V0SGVpZ2h0KG5ld1NpemUuaGVpZ2h0KCkpOworICAgIG1fdmlld3BvcnRWaWV3LT5k
LT51cGRhdGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7Cit9CisKK2Jvb2wgUXRUb3VjaFZpZXdJbnRl
cmZhY2U6OmlzQWN0aXZlKCkKK3sKKyAgICAvLyBGSVhNRTogVGhlIHNjZW5lIGdyYXBoIGRvZXMg
bm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYmVpbmcgYWN0aXZlIG9yIG5vdCB3aGVuIHRoaXMgd2Fz
IHdyaXR0ZW4uCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUXRUb3VjaFZpZXdJbnRlcmZh
Y2U6Omhhc0ZvY3VzKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlVmlldy0+aGFzRm9jdXMoKTsKK30K
KworYm9vbCBRdFRvdWNoVmlld0ludGVyZmFjZTo6aXNWaXNpYmxlKCkKK3sKKyAgICByZXR1cm4g
bV92aWV3cG9ydFZpZXctPmlzVmlzaWJsZSgpICYmIG1fcGFnZVZpZXctPmlzVmlzaWJsZSgpOwor
fQorCit2b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25z
IHN1cHBvcnRlZERyb3BBY3Rpb25zLCBjb25zdCBRSW1hZ2UmIGRyYWdJbWFnZSwgUU1pbWVEYXRh
KiBkYXRhLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBRUG9pbnQqIGdsb2JhbFBvc2l0aW9uLCBR
dDo6RHJvcEFjdGlvbiogZHJvcEFjdGlvbikKK3sKKyAgICAvLyBRVG91Y2hXZWJWaWV3IGRvZXMg
bm90IHN1cHBvcnQgZHJhZyBhbmQgZHJvcC4KKyAgICBRX0FTU0VSVChmYWxzZSk7Cit9CisKK3Zv
aWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZFJlY2VpdmVWaWV3cG9ydEFyZ3VtZW50cyhjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBtX3ZpZXdwb3J0Vmll
dy0+ZC0+c2V0Vmlld3BvcnRBcmd1bWVudHMoYXJncyk7Cit9CisKK3ZvaWQgUXRUb3VjaFZpZXdJ
bnRlcmZhY2U6OmRpZENoYW5nZVVybChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgZW1pdCBtX3Bh
Z2VWaWV3LT51cmxDaGFuZ2VkKHVybCk7Cit9CisKK3ZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6
OmRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKQoreworICAgIGVtaXQgbV9w
YWdlVmlldy0+dGl0bGVDaGFuZ2VkKG5ld1RpdGxlKTsKK30KKwordm9pZCBRdFRvdWNoVmlld0lu
dGVyZmFjZTo6ZGlkQ2hhbmdlVG9vbFRpcChjb25zdCBRU3RyaW5nJikKK3sKKyAgICAvLyBUaGVy
ZSBpcyBub3QgeWV0IGFueSBVSSBkZWZpbmVkIGZvciB0aGUgdG9vbHRpcHMgZm9yIG1vYmlsZSBz
byB3ZSBpZ25vcmUgdGhlIGNoYW5nZS4KK30KKwordm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6
ZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJikKK3sKKyAgICAvLyBUaGVyZSBpcyBu
b3QgeWV0IGFueSBVSSBkZWZpbmVkIGZvciBzdGF0dXMgdGV4dCBzbyB3ZSBpZ25vcmUgdGhlIGNh
bGwuCit9CisKK3ZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZUN1cnNvcihjb25z
dCBRQ3Vyc29yJikKK3sKKyAgICAvLyBUaGUgY3Vyc29yIGlzIG5vdCB2aXNpYmxlIG9uIG1vYmls
ZSwganVzdCBpZ25vcmUgdGhpcyBtZXNzYWdlLgorfQorCit2b2lkIFF0VG91Y2hWaWV3SW50ZXJm
YWNlOjpsb2FkRGlkQmVnaW4oKQoreworICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZFN0YXJ0ZWQo
KTsKK30KKwordm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZENvbW1pdCgpCit7Cisg
ICAgbV92aWV3cG9ydFZpZXctPmQtPmxvYWREaWRDb21taXQoKTsKK30KKwordm9pZCBRdFRvdWNo
Vmlld0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQoKQoreworICAgIGVtaXQgbV9wYWdlVmlldy0+
bG9hZFN1Y2NlZWRlZCgpOworfQorCit2b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIGVtaXQgbV9wYWdlVmlldy0+bG9h
ZEZhaWxlZChzdGF0aWNfY2FzdDxRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGU+KGVycm9yLnR5cGUo
KSksIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci51cmwoKSk7Cit9CisKK3ZvaWQgUXRUb3VjaFZp
ZXdJbnRlcmZhY2U6OmRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQgcGVyY2VudGFnZUxvYWRlZCkK
K3sKKyAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRQcm9ncmVzc0NoYW5nZWQocGVyY2VudGFnZUxv
YWRlZCk7Cit9CisKK3ZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OnNob3dDb250ZXh0TWVudShR
U2hhcmVkUG9pbnRlcjxRTWVudT4pCit7CisgICAgLy8gRklYTUUKK30KKwordm9pZCBRdFRvdWNo
Vmlld0ludGVyZmFjZTo6aGlkZUNvbnRleHRNZW51KCkKK3sKKyAgICAvLyBGSVhNRQorfQorCit2
b2lkIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmlu
ZyYpCit7CisgICAgLy8gRklYTUUuCit9CisKK2Jvb2wgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OnJ1
bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFFTdHJpbmcmKQoreworICAgIC8vIEZJWE1FLgorICAg
IHJldHVybiB0cnVlOworfQorCitRU3RyaW5nIFF0VG91Y2hWaWV3SW50ZXJmYWNlOjpydW5KYXZh
U2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUs
IGJvb2wmKQoreworICAgIC8vIEZJWE1FLgorICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Cit9CisK
K3ZvaWQgUXRUb3VjaFZpZXdJbnRlcmZhY2U6OnByb2Nlc3NEaWRDcmFzaCgpCit7CisgICAgLy8g
RklYTUUKK30KKwordm9pZCBRdFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkUmVsYXVuY2hQcm9jZXNz
KCkKK3sKKyAgICAvLyBGSVhNRQorfQorCitRSlNFbmdpbmUqIFF0VG91Y2hWaWV3SW50ZXJmYWNl
OjplbmdpbmUoKQoreworICAgIFFTR1ZpZXcqIHZpZXcgPSBxb2JqZWN0X2Nhc3Q8UVNHVmlldyo+
KG1fcGFnZVZpZXctPmNhbnZhcygpKTsKKyAgICBpZiAodmlldykKKyAgICAgICAgcmV0dXJuIHZp
ZXctPmVuZ2luZSgpOworICAgIHJldHVybiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNjkw
MTg4ZGM2ODc1OWJjOGZjNGY0OGY5NjdiNzFhZWJkMGRiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRUb3VjaFZpZXdJbnRlcmZhY2UuaApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdFRvdWNoVmlld0ludGVyZmFj
ZV9oCisjZGVmaW5lIFF0VG91Y2hWaWV3SW50ZXJmYWNlX2gKKworI2luY2x1ZGUgIlF0Vmlld0lu
dGVyZmFjZS5oIgorCitjbGFzcyBRUG9pbnRGOworY2xhc3MgUVRvdWNoV2ViUGFnZTsKK2NsYXNz
IFFUb3VjaFdlYlZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZXdwb3J0QXJn
dW1lbnRzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXRTR1VwZGF0ZVF1ZXVl
OworCitjbGFzcyBRdFRvdWNoVmlld0ludGVyZmFjZSA6IHB1YmxpYyBRdFZpZXdJbnRlcmZhY2Ug
eworcHVibGljOgorICAgIFF0VG91Y2hWaWV3SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdw
b3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFnZVZpZXcpOworCisgICAgUXRTR1VwZGF0ZVF1ZXVl
KiBzY2VuZUdyYXBoVXBkYXRlUXVldWUoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBJbXBs
ZW1lbnRhdGlvbiBvZiBRdFZpZXdJbnRlcmZhY2UuCisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKTsKKworICAgIHZpcnR1YWwgUVNpemUgZHJhd2luZ0Fy
ZWFTaXplKCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6
ZSYpOworCisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCk7CisgICAgdmlydHVhbCBib29sIGhh
c0ZvY3VzKCk7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpOworCisgICAgdmlydHVhbCB2
b2lkIHN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0
IFFJbWFnZSYgZHJhZ0ltYWdlLCBRTWltZURhdGEqLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBR
UG9pbnQqIGdsb2JhbFBvc2l0aW9uLCBRdDo6RHJvcEFjdGlvbiopOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHMmKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQ
b2ludCYsIGNvbnN0IFFSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVXJsKGNv
bnN0IFFVcmwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgUVN0cmlu
ZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUb29sVGlwKGNvbnN0IFFTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNvcihjb25zdCBRQ3Vyc29yJik7CisgICAgdmly
dHVhbCB2b2lkIGxvYWREaWRCZWdpbigpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0
KCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdWNjZWVkKCk7CisgICAgdmlydHVhbCB2b2lk
IGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VMb2FkUHJvZ3Jlc3MoaW50KTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUo
UVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRleHRNZW51
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYp
OworICAgIHZpcnR1YWwgUVN0cmluZyBydW5KYXZhU2NyaXB0UHJvbXB0KGNvbnN0IFFTdHJpbmcm
LCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUsIGJvb2wmIG9rKTsKKworICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9j
ZXNzKCk7CisKKyAgICB2aXJ0dWFsIFFKU0VuZ2luZSogZW5naW5lKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0
cmluZ0xpc3QmLCBGaWxlQ2hvb3NlclR5cGUpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZE1v
dXNlTW92ZU92ZXJFbGVtZW50KGNvbnN0IFFVcmwmLCBjb25zdCBRU3RyaW5nJikgeyB9CisKK3By
aXZhdGU6CisgICAgUVRvdWNoV2ViVmlldyogY29uc3QgbV92aWV3cG9ydFZpZXc7CisgICAgUVRv
dWNoV2ViUGFnZSogY29uc3QgbV9wYWdlVmlldzsKK307CisKK30KKworI2VuZGlmIC8vIFF0VG91
Y2hWaWV3SW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UXRUb3VjaFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRU
b3VjaFdlYlBhZ2VQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUxNDUzODg1YWZmNzBhM2Y0YjE1ODg0
NWNiMWI5MTg1ZjAyODJiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmNwcApAQCAtMCwwICsxLDExNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdFRvdWNo
V2ViUGFnZVByb3h5LmgiCisKKyNpbmNsdWRlIDxJbnRSZWN0Lmg+CisjaW5jbHVkZSA8TmF0aXZl
V2ViVG91Y2hFdmVudC5oPgorI2luY2x1ZGUgPFdlYkV2ZW50RmFjdG9yeVF0Lmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitRdFRvdWNoV2ViUGFnZVByb3h5OjpRdFRvdWNoV2ViUGFn
ZVByb3h5KFF0VG91Y2hWaWV3SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUqIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCisgICAgOiBRdFdlYlBh
Z2VQcm94eSh2aWV3SW50ZXJmYWNlLCAwKQorICAgICwgbV9wYW5HZXN0dXJlUmVjb2duaXplcih2
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQorICAgICwgbV9waW5jaEdlc3R1cmVSZWNvZ25pemVy
KHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUpCit7CisgICAgaW5pdCgpOworfQorCitQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IFF0VG91Y2hXZWJQYWdlUHJveHk6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkoKQoreworICAgIHJldHVybiBUaWxlZERyYXdpbmdBcmVhUHJveHk6OmNyZWF0ZSh0
b3VjaFZpZXdJbnRlcmZhY2UoKSwgbV93ZWJQYWdlUHJveHkuZ2V0KCkpOworfQorCit2b2lkIFF0
VG91Y2hXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCit7CisgICAgUXRXZWJQYWdlUHJv
eHk6OnByb2Nlc3NEaWRDcmFzaCgpOworICAgIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIucmVzZXQo
KTsKKyAgICBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIucmVzZXQoKTsKK30KKwordm9pZCBRdFRv
dWNoV2ViUGFnZVByb3h5OjpwYWludENvbnRlbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFS
ZWN0JiBhcmVhKQoreworfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUXRUb3Vj
aFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZl
bnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBpZiAod2FzRXZlbnRIYW5k
bGVkKSB7CisgICAgICAgIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIucmVzZXQoKTsKKyAgICAgICAg
bV9waW5jaEdlc3R1cmVSZWNvZ25pemVyLnJlc2V0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9wYW5HZXN0dXJlUmVjb2duaXplci5yZWNvZ25pemUoZXZlbnQubmF0aXZlRXZlbnQoKSk7Cisg
ICAgICAgIG1fcGluY2hHZXN0dXJlUmVjb2duaXplci5yZWNvZ25pemUoZXZlbnQubmF0aXZlRXZl
bnQoKSk7CisgICAgfQorfQorI2VuZGlmCisKK2Jvb2wgUXRUb3VjaFdlYlBhZ2VQcm94eTo6aGFu
ZGxlRXZlbnQoUUV2ZW50KiBldikKK3sKKyAgICBzd2l0Y2ggKGV2LT50eXBlKCkpIHsKKyAgICBj
YXNlIFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hFbmQ6CisgICAg
Y2FzZSBRRXZlbnQ6OlRvdWNoVXBkYXRlOgorICAgICAgICB0b3VjaEV2ZW50KHN0YXRpY19jYXN0
PFFUb3VjaEV2ZW50Kj4oZXYpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBRdFdlYlBhZ2VQcm94eTo6aGFuZGxlRXZlbnQoZXYpOworfQorCit2b2lkIFF0VG91Y2hX
ZWJQYWdlUHJveHk6OnNldFZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKGNvbnN0IFFSZWN0RiYg
dmlzaWJsZUNvbnRlbnRSZWN0LCBmbG9hdCBzY2FsZSkKK3sKKyAgICBRUmVjdCBhbGlnbmVkVmlz
aWJsZUNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0LnRvQWxpZ25lZFJlY3QoKTsKKyAg
ICBkcmF3aW5nQXJlYSgpLT5zZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShhbGlnbmVkVmlz
aWJsZUNvbnRlbnRSZWN0LCBzY2FsZSk7CisKKyAgICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0
IHN1c3BlbmQgYW5kIHJlc3VtZSwgdGhpcyBzaG91bGQgYmUgZGVsYXllZCB1bnRpbCB0aGUgcGFn
ZSBpcyBhY3RpdmUgaWYgdGhlIHBhZ2UgaXMgc3VzcGVuZGVkLgorICAgIG1fd2ViUGFnZVByb3h5
LT5zZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChhbGlnbmVkVmlzaWJsZUNvbnRlbnRSZWN0KTsK
K30KKwordm9pZCBRdFRvdWNoV2ViUGFnZVByb3h5OjpzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFq
ZWN0b3J5VmVjdG9yKGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnlWZWN0b3IpCit7CisgICAgZHJh
d2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcih0cmFqZWN0
b3J5VmVjdG9yKTsKK30KKwordm9pZCBRdFRvdWNoV2ViUGFnZVByb3h5OjpzZXRSZXNpemVzVG9D
b250ZW50c1VzaW5nTGF5b3V0U2l6ZShjb25zdCBRU2l6ZSYgdGFyZ2V0TGF5b3V0U2l6ZSkKK3sK
KyAgICBtX3dlYlBhZ2VQcm94eS0+c2V0UmVzaXplc1RvQ29udGVudHNVc2luZ0xheW91dFNpemUo
dGFyZ2V0TGF5b3V0U2l6ZSk7Cit9CisKK3ZvaWQgUXRUb3VjaFdlYlBhZ2VQcm94eTo6dG91Y2hF
dmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2
ZW50KSk7CisgICAgZXZlbnQtPmFjY2VwdCgpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBldi0+aWdub3JlKCk7CisjZW5kaWYKK30KKwordm9pZCBRdFRvdWNoV2ViUGFn
ZVByb3h5OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgUVBvaW50JiBwb2ludCkKK3sK
KyAgICBtX3dlYlBhZ2VQcm94eS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KHBvaW50KTsKK30K
Kwordm9pZCBRdFRvdWNoV2ViUGFnZVByb3h5OjpyZW5kZXJOZXh0RnJhbWUoKQoreworICAgIGRy
YXdpbmdBcmVhKCktPnJlbmRlck5leHRGcmFtZSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0VG91Y2hXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ0ZTllYTkw
ZjQ4ZTI4NTJjOTZkMzkwM2ExMzlkN2Q4YjgxNGYxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFRvdWNoV2ViUGFnZVByb3h5LmgKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUXRUb3VjaFdlYlBhZ2VQcm94
eV9oCisjZGVmaW5lIFF0VG91Y2hXZWJQYWdlUHJveHlfaAorCisKKyNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5LmgiCisjaW5jbHVkZSAiUXRQYW5HZXN0dXJlUmVjb2duaXplci5oIgorI2luY2x1
ZGUgIlF0UGluY2hHZXN0dXJlUmVjb2duaXplci5oIgorI2luY2x1ZGUgIlF0VG91Y2hWaWV3SW50
ZXJmYWNlLmgiCisjaW5jbHVkZSAiUXRXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJUaWxlZERy
YXdpbmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKK30KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworY2xhc3MgUXRUb3VjaFdlYlBhZ2VQcm94eSA6IHB1Ymxp
YyBRdFdlYlBhZ2VQcm94eSB7CitwdWJsaWM6CisgICAgUXRUb3VjaFdlYlBhZ2VQcm94eShRdFRv
dWNoVmlld0ludGVyZmFjZSosIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSopOworCisgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFFFdmVudCopOworCisgICAgdm9pZCBzZXRWaXNpYmxl
Q29udGVudFJlY3RBbmRTY2FsZShjb25zdCBRUmVjdEYmLCBmbG9hdCk7CisgICAgdm9pZCBzZXRW
aXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IFFQb2ludEYmKTsKKyAgICB2
b2lkIHNldFJlc2l6ZXNUb0NvbnRlbnRzVXNpbmdMYXlvdXRTaXplKGNvbnN0IFFTaXplJiB0YXJn
ZXRMYXlvdXRTaXplKTsKKyAgICB2b2lkIGZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBR
UG9pbnQmKTsKKyAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOworCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudChRUGFpbnRlciosIGNvbnN0IFFSZWN0JiBhcmVhKTsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSgpOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
KTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVk
KTsKKyNlbmRpZgorCisgICAgUXRUb3VjaFZpZXdJbnRlcmZhY2UqIHRvdWNoVmlld0ludGVyZmFj
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFF0VG91Y2hWaWV3SW50ZXJmYWNlKj4obV92
aWV3SW50ZXJmYWNlKTsgfQorICAgIFRpbGVkRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OlRpbGVkRHJhd2luZ0FyZWFQcm94
eSo+KG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKTsgfQorCisgICAgdm9pZCB0b3VjaEV2
ZW50KFFUb3VjaEV2ZW50Kik7CisKKyAgICBRdFBhbkdlc3R1cmVSZWNvZ25pemVyIG1fcGFuR2Vz
dHVyZVJlY29nbml6ZXI7CisgICAgUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyIG1fcGluY2hHZXN0
dXJlUmVjb2duaXplcjsKK307CisKKyNlbmRpZiAvLyBRdFRvdWNoV2ViUGFnZVByb3h5X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNmQ4YjNiZDU2MDRiMzcxYzRiYThkMjIxODEwZmQ1ZDY5NzFjNGNkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld0ludGVyZmFjZS5oCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBRdFZpZXdJbnRlcmZhY2Vf
aAorI2RlZmluZSBRdFZpZXdJbnRlcmZhY2VfaAorCisjaW5jbHVkZSA8UU1lbnU+CisjaW5jbHVk
ZSA8UXRDb3JlL1FTaGFyZWRQb2ludGVyPgorI2luY2x1ZGUgPFF0Q29yZS9RU2l6ZT4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCitjbGFzcyBRV2ViRXJyb3I7CisKK1FUX0JFR0lOX05B
TUVTUEFDRQorY2xhc3MgUUN1cnNvcjsKK2NsYXNzIFFHcmFwaGljc1dpZGdldDsKK2NsYXNzIFFJ
bWFnZTsKK2NsYXNzIFFKU0VuZ2luZTsKK2NsYXNzIFFNaW1lRGF0YTsKK2NsYXNzIFFQb2ludDsK
K2NsYXNzIFFSZWN0OworY2xhc3MgUVVybDsKK2NsYXNzIFFXaWRnZXQ7CitRVF9FTkRfTkFNRVNQ
QUNFCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZXdwb3J0QXJndW1lbnRzOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUXRWaWV3SW50ZXJmYWNlIHsKK3B1YmxpYzoK
KyAgICBlbnVtIEZpbGVDaG9vc2VyVHlwZSB7CisgICAgICAgIFNpbmdsZUZpbGVTZWxlY3Rpb24s
CisgICAgICAgIE11bHRpcGxlRmlsZXNTZWxlY3Rpb24KKyAgICB9OworCisgICAgdmlydHVhbCB2
b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFs
IFFTaXplIGRyYXdpbmdBcmVhU2l6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudFNp
emVDaGFuZ2VkKGNvbnN0IFFTaXplJikgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzQWN0aXZl
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNGb2N1cygpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNWaXNpYmxlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhRdDo6RHJv
cEFjdGlvbnMgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0IFFJbWFnZSYgZHJhZ0ltYWdlLCBR
TWltZURhdGEqLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBRUG9pbnQqIGdsb2JhbFBvc2l0aW9u
LCBRdDo6RHJvcEFjdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVZpZXdw
b3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgUVBvaW50JiwgY29uc3Qg
UVJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVXJsKGNvbnN0IFFVcmwm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRvb2xUaXAoY29uc3QgUVN0cmluZyYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQ29tbWl0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcmKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFFTdHJpbmcmKSA9IDA7CisgICAgdmly
dHVhbCBRU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFT
dHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzRGlkQ3Jhc2goKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2Vz
cygpID0gMDsKKworICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiwgY29u
c3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBGaWxlQ2hvb3NlclR5cGUpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxlbWVudChjb25zdCBRVXJsJiwg
Y29uc3QgUVN0cmluZyYpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFF0Vmlld0ludGVyZmFj
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MWI2M2ZjNzRlMzk4MjRkYTc0
OWUwNDgyNmFhNWQ0NzczMWY5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcApAQCAtMCwwICsxLDMw
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1p
bkB3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0Vmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZS5oIgorCisjaW5jbHVkZSAiUGFzc093blB0ci5oIgorI2luY2x1
ZGUgPFFQb2ludEY+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dpdGVtLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgaW5saW5lIFFSZWN0RiB2aXNpYmxlUmVjdEluQ29udGVu
dENvb3JkaW5hdGUoY29uc3QgUVNHSXRlbSogY29udGVudCwgY29uc3QgUVNHSXRlbSogdmlld3Bv
cnQpCit7CisgICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0SW5Db250ZW50Q29vcmRpbmF0ZSA9IGNv
bnRlbnQtPm1hcFJlY3RGcm9tSXRlbSh2aWV3cG9ydCwgdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgp
KTsKKyAgICBjb25zdCBRUmVjdEYgdmlzaWJsZUFyZWEgPSBjb250ZW50LT5ib3VuZGluZ1JlY3Qo
KS5pbnRlcnNlY3RlZCh2aWV3cG9ydEluQ29udGVudENvb3JkaW5hdGUpOworICAgIHJldHVybiB2
aXNpYmxlQXJlYTsKK30KKworc3RhdGljIGlubGluZSBRUmVjdEYgY29udGVudFJlY3RJblZpZXdw
b3J0Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBjb250ZW50LCBjb25zdCBRU0dJdGVtKiB2aWV3
cG9ydCkKK3sKKyAgICByZXR1cm4gdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShjb250ZW50LCBj
b250ZW50LT5ib3VuZGluZ1JlY3QoKSk7Cit9CisKKy8vIFVwZGF0aW5nIGNvbnRlbnQgcHJvcGVy
dGllcyBjYXVzZSB0aGUgbm90aWZ5IHNpZ25hbHMgdG8gYmUgc2VudCBieSB0aGUgY29udGVudCBp
dGVtIGl0c2VsZi4KKy8vIFNpbmNlIHdlIG1hbmFnZSB0aG9zZSBkaWZmZXJlbnRseSwgd2UgZG8g
bm90IHdhbnQgdG8gcmVzcG9uZAorLy8gdG8gdGhlbSB3aGVuIHdlIGFyZSB0aGUgb25lIGNoYW5n
aW5nIHRoZSBjb250ZW50LgorLy8KKy8vIFRoZSBndWFyZCBtYWtlIHN1cmUgdGhlIHNpZ25hbCB2
aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpIGlzIHNlbnQgaWYgbmVjZXNzYXJ5LgorLy8gV2hlbiBt
dWx0aXBsZSBndWFyZHMgYXJlIGFsaXZlLCB0aGVpciBsaWZldGltZSBtdXN0IGJlIHBlcmZlY3Rs
eSBpbWJyaWNhdGVkIChlLmcuIGlmIHVzZWQgb3VzaWRlIHN0YWNrIGZyYW1lcykuCisvLyBXZSBy
ZWx5IG9uIHRoZSBmaXJzdCBvbmUgdG8gdHJpZ2dlciB0aGUgdXBkYXRlIGF0IHRoZSBlbmQgc2lu
Y2UgaXQgb25seSB1c2VzIG9uZSBib29sIGludGVybmFsbHkuCisvLworLy8gVGhlIHB1YmxpYyBt
ZXRob2RzIHNob3VsZCBjcmVhdGUgdGhlIGd1YXJkIGlmIHRoZXkgbWlnaHQgdXBkYXRlIGNvbnRl
bnQuCitjbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkIHsKK3B1YmxpYzoKKyAgICBWaWV3cG9ydFVw
ZGF0ZUd1YXJkKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogdmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZSkKKyAgICAgICAgOiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUpCisgICAgICAgICwgd2FzVXBkYXRpbmdDb250ZW50KHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQpCisgICAgICAgICwgcHJldmlvdXNQ
b3NpdGlvbih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPnBvcygpKQorICAg
ICAgICAsIHByZXZpb3VzU2l6ZSh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQt
PndpZHRoKCksIHZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+aGVpZ2h0KCkp
CisgICAgICAgICwgcHJldmlvdXNTY2FsZSh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2Nv
bnRlbnQtPnNjYWxlKCkpCisgICAgeworICAgICAgICB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5l
LT5tX2lzVXBkYXRpbmdDb250ZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAgICB+Vmlld3BvcnRVcGRh
dGVHdWFyZCgpCisgICAgeworICAgICAgICBpZiAoIXdhc1VwZGF0aW5nQ29udGVudCkgeworICAg
ICAgICAgICAgaWYgKHByZXZpb3VzUG9zaXRpb24gIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS0+bV9jb250ZW50LT5wb3MoKQorICAgICAgICAgICAgICAgICAgICB8fCBwcmV2aW91c1NpemUu
d2lkdGgoKSAhPSB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPndpZHRoKCkK
KyAgICAgICAgICAgICAgICAgICAgfHwgcHJldmlvdXNTaXplLmhlaWdodCgpICE9IHZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+aGVpZ2h0KCkKKyAgICAgICAgICAgICAgICAg
ICAgfHwgcHJldmlvdXNTY2FsZSAhPSB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRl
bnQtPnNjYWxlKCkpCisgICAgICAgICAgICAgICAgZW1pdCB2aWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lLT52aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpOworICAgICAgICB9CisgICAgICAgIHZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUtPm1faXNVcGRhdGluZ0NvbnRlbnQgPSB3YXNVcGRhdGluZ0Nv
bnRlbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSogY29uc3Qgdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBjb25zdCBib29sIHdhc1Vw
ZGF0aW5nQ29udGVudDsKKyAgICBjb25zdCBRUG9pbnRGIHByZXZpb3VzUG9zaXRpb247CisgICAg
Y29uc3QgUVNpemVGIHByZXZpb3VzU2l6ZTsKKyAgICBjb25zdCBxcmVhbCBwcmV2aW91c1NjYWxl
OworfTsKKworUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUoY29uc3QgUVNHSXRlbSogdmlld3BvcnQsIFFTR0l0ZW0qIGNvbnRlbnQpCisgICAg
OiBtX3ZpZXdwb3J0KHZpZXdwb3J0KQorICAgICwgbV9jb250ZW50KGNvbnRlbnQpCisgICAgLCBt
X2lzVXBkYXRpbmdDb250ZW50KGZhbHNlKQorICAgICwgbV9waW5jaFN0YXJ0U2NhbGUoMS5mKQor
eworICAgIHJlc2V0KCk7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh4Q2hhbmdlZCgp
KSwgdGhpcywgU0xPVChjb250ZW50Vmlld3BvcnRDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVj
dGlvbik7CisgICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh5Q2hhbmdlZCgpKSwgdGhpcywg
U0xPVChjb250ZW50Vmlld3BvcnRDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cisg
ICAgY29ubmVjdChtX2NvbnRlbnQsIFNJR05BTCh3aWR0aENoYW5nZWQoKSksIHRoaXMsIFNMT1Qo
Y29udGVudFZpZXdwb3J0Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgIGNv
bm5lY3QobV9jb250ZW50LCBTSUdOQUwoaGVpZ2h0Q2hhbmdlZCgpKSwgdGhpcywgU0xPVChjb250
ZW50Vmlld3BvcnRDaGFuZ2VkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgY29ubmVj
dChtX2NvbnRlbnQsIFNJR05BTChzY2FsZUNoYW5nZWQoKSksIHRoaXMsIFNMT1QoY29udGVudFZp
ZXdwb3J0Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworfQorCitRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6On5RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKQoreworfQor
Cit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cmVzZXQoKQoreworICAgIFZpZXdw
b3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyA9
IFVzZXJIYXNOb3RJbnRlcmFjdGVkV2l0aENvbnRlbnQ7CisgICAgc2V0Q29uc3RyYWludHMoQ29u
c3RyYWludHMoKSk7Cit9CisKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzZXRD
b25zdHJhaW50cyhjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMpCit7CisgICAgaWYgKG1f
Y29uc3RyYWludHMgPT0gY29uc3RyYWludHMpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBpZiBhIHBpbmNoIGdlc3R1cmUgaXMgb25nb2luZywgd2UgaGF2ZSB0bzoKKyAgICAvLyAt
Y2FuY2VsIHRoZSBnZXN0dXJlIGlmIGlzVXNlclNjYWxhYmxlIGJlY29tZXMgdHJ1ZQorICAgIC8v
IC11cGRhdGUgdGhlIHBhZ2Ugb24gdGhlIGZseSB3aXRob3V0IG1vZGlmeWluZyBpdHMgcG9zaXRp
b24KKworICAgIC8vIEZJWE1FOiBpZiBhIHBhbiBnZXN0dXJlIGlzIG9uZ29pbmcsIHdlIGhhdmUg
dG8KKyAgICAvLyAtdXBkYXRlIHRoZSBwYWdlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBvc2l0aW9u
CisgICAgLy8gLWFuaW1hdGUgdGhlIHBhZ2UgYmFjayBpbiB2aWV3cG9ydCBpZiBuZWNlc3Nhcnkg
KGlmIHRoZSBwYWdlIGlzIGZ1bGx5IGluCisgICAgLy8gIHZpZXdwb3J0LCBpdCBkb2VzIG5vdCBw
YW4gaG9yaXpvbnRhbGx5IGFueW1vcmUpLgorCisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFy
ZCh0aGlzKTsKKyAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHM7CisgICAgdXBkYXRlQ29u
dGVudElmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpw
YW5HZXN0dXJlU3RhcnRlZCgpCit7CisgICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdp
bmUgKHN0b3AgYW5pbWF0ZWQgR0lGLCBldGMpLgorICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBo
eXNpY3MgZm9yIHBhbm5pbmcgKHN0b3AgYW5pbWF0aW9uLCBldGMpLgorICAgIG1fdXNlckludGVy
YWN0aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVudDsKK30KKwordm9pZCBRdFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVSZXF1ZXN0VXBkYXRlKHFyZWFsIGRlbHRhWCwg
cXJlYWwgZGVsdGFZKQoreworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7CisK
KyAgICBRUG9pbnRGIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyA9IG1fY29udGVudC0+bWFwRnJv
bUl0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIG1fY29udGVudC0+cG9zKCkpOworICAgIFFQ
b2ludEYgZGVzdEluVmlld3BvcnRDb29yZHMgPSBtX3ZpZXdwb3J0LT5tYXBGcm9tSXRlbShtX2Nv
bnRlbnQsIGl0ZW1Qb3NpdGlvbkluSXRlbUNvb3JkcyArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkp
KTsKKworICAgIG1fY29udGVudC0+c2V0UG9zKGRlc3RJblZpZXdwb3J0Q29vcmRzKTsKKyAgICAv
LyBUaGlzIG11c3QgYmUgZW1pdHRlZCBiZWZvcmUgdmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQgc28g
dGhhdCB0aGUgd2ViIHByb2Nlc3Mga25vd3Mgd2hlcmUgdG8gbG9vayBmb3IgdGlsZXMuCisgICAg
ZW1pdCB2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKFFQb2ludEYoLWRlbHRhWCwgLWRl
bHRhWSkpOworfQorCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGFuR2VzdHVy
ZUNhbmNlbGxlZCgpCit7CisgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAg
ICAvLyBGSVhNRTogcmVzZXQgcGh5c2ljcy4KKyAgICBwYW5HZXN0dXJlRW5kZWQoKTsKK30KKwor
dm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVFbmRlZCgpCit7Cisg
ICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICBhbmltYXRlQ29udGVudElu
dG9Cb3VuZGFyaWVzSWZOZWVkZWQoKTsKKyAgICAvLyBGSVhNRTogZW1pdCB2aWV3cG9ydFRyYWpl
Y3RvcnlWZWN0b3JDaGFuZ2VkKFFQb2ludEYoKSkgd2hlbiB0aGUgcGFuIHRocm93IGFuaW1hdGlv
biBlbmRzIGFuZCB0aGUgcGFnZSBzdG9wcyBtb3ZpbmcuCit9CisKK3ZvaWQgUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVTdGFydGVkKCkKK3sKKyAgICBpZiAoIW1fY29u
c3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGluY2hW
aWV3cG9ydFVwZGF0ZURlZmVycmVyID0gYWRvcHRQdHIobmV3IFZpZXdwb3J0VXBkYXRlR3VhcmQo
dGhpcykpOworCisgICAgbV91c2VySW50ZXJhY3Rpb25GbGFncyB8PSBVc2VySGFzU2NhbGVkQ29u
dGVudDsKKyAgICBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzIHw9IFVzZXJIYXNNb3ZlZENvbnRlbnQ7
CisgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisKKyAgICAvLyBS
ZXNldCB0aGUgdGlsaW5nIGxvb2stYWhlYWQgdmVjdG9yIHNvIHRoYXQgdGlsZXMgYWxsIGFyb3Vu
ZCB0aGUgdmlld3BvcnQgd2lsbCBiZSByZXF1ZXN0ZWQgb24gcGluY2gtZW5kLgorICAgIGVtaXQg
dmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChRUG9pbnRGKCkpOworfQorCit2b2lkIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25z
dCBRUG9pbnRGJiBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2Nh
bGVGYWN0b3IpCit7CisgICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlzVXNlclNjYWxhYmxlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOworCisg
ICAgLy8gIENoYW5nZXMgb2YgdGhlIGNlbnRlciBwb3NpdGlvbiBzaG91bGQgbW92ZSB0aGUgcGFn
ZSBldmVuIGlmIHRoZSB6b29tIGZhY3RvcgorICAgIC8vICBkb2VzIG5vdCBjaGFuZ2UuIEJvdGgg
dGhlIHpvb20gYW5kIHRoZSBwYW5uaW5nIHNob3VsZCBiZSBoYW5kbGVkIHRocm91Z2ggdGhlIHBo
eXNpY3MgZW5naW5lLgorICAgIGNvbnN0IHFyZWFsIHNjYWxlID0gbV9waW5jaFN0YXJ0U2NhbGUg
KiB0b3RhbFNjYWxlRmFjdG9yOworICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9
IG1fY29udGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRl
ckluQ29udGVudENvb3JkaW5hdGUpOworICAgIG1fY29udGVudC0+c2V0U2NhbGUoc2NhbGUpOwor
ICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29udGVudC0+bWFwVG9JdGVt
KG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUp
OworICAgIG1fY29udGVudC0+c2V0UG9zKG1fY29udGVudC0+cG9zKCkgLSAobmV3UGluY2hDZW50
ZXJPblBhcmVudCAtIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQpKTsKK30KKwordm9pZCBRdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKCkKK3sKKyAgICBpZiAoIW1f
Y29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIHsKKyAg
ICAgICAgVmlld3BvcnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6
IHJlc3VtZSB0aGUgZW5naW5lIGFmdGVyIHRoZSBhbmltYXRpb24uCisgICAgICAgIGFuaW1hdGVD
b250ZW50SW50b0JvdW5kYXJpZXNJZk5lZWRlZCgpOworICAgIH0KKyAgICBtX3BpbmNoVmlld3Bv
cnRVcGRhdGVEZWZlcnJlci5jbGVhcigpOworfQorCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Y29udGVudFZpZXdwb3J0Q2hhbmdlZCgpCit7CisgICAgaWYgKG1faXNVcGRhdGlu
Z0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3Vh
cmQodGhpcyk7CisgICAgdXBkYXRlQ29udGVudElmTmVlZGVkKCk7CisKKyAgICAvLyBXZSBtdXN0
IG5vdGlmeSB0aGUgY2hhbmdlIHNvIHRoZSBjbGllbnQgY2FuIHJlbHkgb24gdXMgZm9yIGFsbCBj
aGFuZ2Ugb2YgR2VvbWV0cnkuCisgICAgZW1pdCB2aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpOwor
fQorCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudElmTmVl
ZGVkKCkKK3sKKyAgICB1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRlZCgpOworICAgIHVwZGF0ZUNv
bnRlbnRQb3NpdGlvbklmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjp1cGRhdGVDb250ZW50U2NhbGVJZk5lZWRlZCgpCit7CisgICAgY29uc3QgcXJlYWwg
Y3VycmVudENvbnRlbnRTY2FsZSA9IG1fY29udGVudC0+c2NhbGUoKTsKKyAgICBxcmVhbCBjb250
ZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgaWYgKCEobV91c2VySW50ZXJhY3Rp
b25GbGFncyAmIFVzZXJIYXNTY2FsZWRDb250ZW50KSkKKyAgICAgICAgY29udGVudFNjYWxlID0g
bV9jb25zdHJhaW50cy5pbml0aWFsU2NhbGU7CisKKyAgICBjb250ZW50U2NhbGUgPSBxQm91bmQo
bV9jb25zdHJhaW50cy5taW5pbXVtU2NhbGUsIGNvbnRlbnRTY2FsZSwgbV9jb25zdHJhaW50cy5t
YXhpbXVtU2NhbGUpOworCisgICAgaWYgKGNvbnRlbnRTY2FsZSAhPSBjdXJyZW50Q29udGVudFNj
YWxlKSB7CisgICAgICAgIGNvbnN0IFFQb2ludEYgY2VudGVyT2ZJbnRlcmVzdCA9IHZpc2libGVS
ZWN0SW5Db250ZW50Q29vcmRpbmF0ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLmNlbnRlcigpOwor
ICAgICAgICBzY2FsZUNvbnRlbnQoY2VudGVyT2ZJbnRlcmVzdCwgY29udGVudFNjYWxlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50
UG9zaXRpb25JZk5lZWRlZCgpCit7CisgICAgaWYgKCEobV91c2VySW50ZXJhY3Rpb25GbGFncyAm
IFVzZXJIYXNNb3ZlZENvbnRlbnQpKSB7CisgICAgICAgIG1fY29udGVudC0+c2V0WCgobV92aWV3
cG9ydC0+d2lkdGgoKSAtIGNvbnRlbnRSZWN0SW5WaWV3cG9ydENvb3JkaW5hdGUobV9jb250ZW50
LCBtX3ZpZXdwb3J0KS53aWR0aCgpKSAvIDIpOworICAgICAgICBtX2NvbnRlbnQtPnNldFkoMCk7
CisgICAgfQorCisgICAgLy8gRklYTUU6IGlmIHRoZSBpdGVtIGNhbiBiZSBmdWxseSBpbiB0aGUg
dmlld3BvcnQgYW5kIGlzIG92ZXIgYSBzaWRlLCBwdXNoIGl0IGJhY2sgaW4gdmlldworICAgIC8v
IEZJWE1FOiBpZiB0aGUgaXRlbSBjYW5ub3QgYmUgZnVsbHkgaW4gdmlld3BvcnQsIGFuZCBpcyBu
b3QgY292ZXJpbmcgdGhlIHZpZXdwb3J0LCBwdXNoIGl0IGJhY2sgaW4gdmlldworfQorCit2b2lk
IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6YW5pbWF0ZUNvbnRlbnRJbnRvQm91bmRhcmll
c0lmTmVlZGVkKCkKK3sKKyAgICBhbmltYXRlQ29udGVudFNjYWxlSW50b0JvdW5kYXJpZXNJZk5l
ZWRlZCgpOworICAgIGFuaW1hdGVDb250ZW50UG9zaXRpb25JbnRvQm91bmRhcmllc0lmTmVlZGVk
KCk7Cit9CisKK3ZvaWQgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVu
dFBvc2l0aW9uSW50b0JvdW5kYXJpZXNJZk5lZWRlZCgpCit7CisgICAgY29uc3QgUVJlY3RGIGNv
bnRlbnRHZW9tZXRyeSA9IG1fdmlld3BvcnQtPm1hcFJlY3RGcm9tSXRlbShtX2NvbnRlbnQsIG1f
Y29udGVudC0+Ym91bmRpbmdSZWN0KCkpOworICAgIFFQb2ludEYgbmV3UG9zID0gY29udGVudEdl
b21ldHJ5LnRvcExlZnQoKTsKKworICAgIC8vIEhvcml6b250YWwgY29ycmVjdGlvbi4KKyAgICBp
ZiAoY29udGVudEdlb21ldHJ5LndpZHRoKCkgPCBtX3ZpZXdwb3J0LT53aWR0aCgpKQorICAgICAg
ICBuZXdQb3Muc2V0WCgobV92aWV3cG9ydC0+d2lkdGgoKSAtIGNvbnRlbnRHZW9tZXRyeS53aWR0
aCgpKSAvIDIpOworICAgIGVsc2UgeworICAgICAgICBuZXdQb3Muc2V0WChxTWluPHFyZWFsPigw
LiwgbmV3UG9zLngoKSkpOworICAgICAgICBjb25zdCBxcmVhbCByaWdodFNpZGVHYXAgPSBtX3Zp
ZXdwb3J0LT5ib3VuZGluZ1JlY3QoKS5yaWdodCgpIC0gY29udGVudEdlb21ldHJ5LnJpZ2h0KCk7
CisgICAgICAgIGlmIChyaWdodFNpZGVHYXAgPiAwLikKKyAgICAgICAgICAgIG5ld1Bvcy5zZXRY
KG5ld1Bvcy54KCkgKyByaWdodFNpZGVHYXApOworICAgIH0KKworICAgIC8vIFZlcnRpY2FsIGNv
cnJlY3Rpb24uCisgICAgaWYgKGNvbnRlbnRHZW9tZXRyeS5oZWlnaHQoKSA8IG1fdmlld3BvcnQt
PmhlaWdodCgpKQorICAgICAgICBuZXdQb3Muc2V0WSgwKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
bmV3UG9zLnNldFkocU1pbjxxcmVhbD4oMC4sIG5ld1Bvcy55KCkpKTsKKyAgICAgICAgY29uc3Qg
cXJlYWwgYm90dG9tU2lkZUdhcCA9IG1fdmlld3BvcnQtPmJvdW5kaW5nUmVjdCgpLmJvdHRvbSgp
IC0gY29udGVudEdlb21ldHJ5LmJvdHRvbSgpOworICAgICAgICBpZiAoYm90dG9tU2lkZUdhcCA+
IDAuKQorICAgICAgICAgICAgbmV3UG9zLnNldFkobmV3UG9zLnkoKSArIGJvdHRvbVNpZGVHYXAp
OworICAgIH0KKworICAgIGlmIChuZXdQb3MgIT0gbV9jb250ZW50LT5wb3MoKSkKKyAgICAgICAg
Ly8gRklYTUU6IERvIHlvdSBrbm93IHdoYXQgQU5JTUFURSBtZWFucz8KKyAgICAgICAgbV9jb250
ZW50LT5zZXRQb3MobmV3UG9zKTsKK30KKwordm9pZCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmU6OmFuaW1hdGVDb250ZW50U2NhbGVJbnRvQm91bmRhcmllc0lmTmVlZGVkKCkKK3sKKyAgICBj
b25zdCBxcmVhbCBjdXJyZW50U2NhbGUgPSBtX2NvbnRlbnQtPnNjYWxlKCk7CisgICAgY29uc3Qg
cXJlYWwgYm91bmRlZFNjYWxlID0gcUJvdW5kKG1fY29uc3RyYWludHMubWluaW11bVNjYWxlLCBj
dXJyZW50U2NhbGUsIG1fY29uc3RyYWludHMubWF4aW11bVNjYWxlKTsKKyAgICBpZiAoY3VycmVu
dFNjYWxlICE9IGJvdW5kZWRTY2FsZSkgeworICAgICAgICAvLyBGSVhNRTogRG8geW91IGtub3cg
d2hhdCBBTklNQVRFIG1lYW5zPworICAgICAgICBjb25zdCBRUG9pbnRGIGNlbnRlck9mSW50ZXJl
c3QgPSB2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUobV9jb250ZW50LCBtX3ZpZXdwb3J0
KS5jZW50ZXIoKTsKKyAgICAgICAgc2NhbGVDb250ZW50KGNlbnRlck9mSW50ZXJlc3QsIGJvdW5k
ZWRTY2FsZSk7CisgICAgfQorfQorCit2b2lkIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6
c2NhbGVDb250ZW50KGNvbnN0IFFQb2ludEYmIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUsIHFy
ZWFsIHNjYWxlKQoreworICAgIFFQb2ludEYgb2xkUGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29u
dGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRlbnRD
b29yZGluYXRlKTsKKyAgICBtX2NvbnRlbnQtPnNldFNjYWxlKHNjYWxlKTsKKyAgICBRUG9pbnRG
IG5ld1BpbmNoQ2VudGVyT25QYXJlbnQgPSBtX2NvbnRlbnQtPm1hcFRvSXRlbShtX2NvbnRlbnQt
PnBhcmVudEl0ZW0oKSwgY2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSk7CisgICAgbV9jb250ZW50
LT5zZXRQb3MobV9jb250ZW50LT5wb3MoKSAtIChuZXdQaW5jaENlbnRlck9uUGFyZW50IC0gb2xk
UGluY2hDZW50ZXJPblBhcmVudCkpOworfQorCisjaW5jbHVkZSAibW9jX1F0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS5jcHAiCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjAy
OTMyNjhkMjVhZGRhZjYwMTY0OThjZGExMjUxNjMwYTBlYTM5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5o
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEJlbmphbWluIFBv
dWxhaW4gPGJlbmphbWluQHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFF0Vmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZV9oCisjZGVmaW5lIFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZV9oCisKKyNp
bmNsdWRlICJPd25QdHIuaCIKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSA8
UXRDb3JlL1FPYmplY3Q+CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVBvaW50RjsKK2Ns
YXNzIFFTR0l0ZW07CitRVF9FTkRfTkFNRVNQQUNFCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkOworCitjbGFzcyBRdFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmUgOiBwdWJsaWMgUU9iamVjdCB7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIFF0
Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShjb25zdCBRU0dJdGVtKiwgUVNHSXRlbSopOworICAg
IH5RdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKTsKKworICAgIHN0cnVjdCBDb25zdHJhaW50
cyB7CisgICAgICAgIENvbnN0cmFpbnRzKCkKKyAgICAgICAgICAgIDogaW5pdGlhbFNjYWxlKDEu
MCkKKyAgICAgICAgICAgICwgbWluaW11bVNjYWxlKDAuMjUpCisgICAgICAgICAgICAsIG1heGlt
dW1TY2FsZSgxLjgpCisgICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxlKHRydWUpCisgICAgICAg
IHsgfQorCisgICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsKKyAgICAgICAgcXJlYWwgbWluaW11
bVNjYWxlOworICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7CisgICAgICAgIGJvb2wgaXNVc2Vy
U2NhbGFibGU7CisgICAgfTsKKworICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHNldENvbnN0
cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJik7CisKKyAgICB2b2lkIHBhbkdlc3R1cmVTdGFydGVk
KCk7CisgICAgdm9pZCBwYW5HZXN0dXJlUmVxdWVzdFVwZGF0ZShxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSk7CisgICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7CisgICAgdm9pZCBwYW5H
ZXN0dXJlRW5kZWQoKTsKKworICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRlZCgpOworICAgIHZv
aWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBwaW5jaENlbnRlcklu
Q29udGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpOworICAgIHZvaWQgcGlu
Y2hHZXN0dXJlRW5kZWQoKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgdmlld3BvcnRVcGRhdGVS
ZXF1ZXN0ZWQoKTsKKyAgICB2b2lkIHZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29u
c3QgUVBvaW50RiYpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgLy8gUmVzcG9uZCB0byBjaGFu
Z2VzIG9mIGNvbnRlbnQgdGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywgbGlrZSB0aGUgcGFnZSBy
ZXNpemluZyBpdHNlbGYuCisgICAgdm9pZCBjb250ZW50Vmlld3BvcnRDaGFuZ2VkKCk7CisKK3By
aXZhdGU6CisgICAgdm9pZCB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKKyAgICB2b2lkIHVwZGF0
ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50UG9zaXRpb25J
Zk5lZWRlZCgpOworCisgICAgdm9pZCBhbmltYXRlQ29udGVudEludG9Cb3VuZGFyaWVzSWZOZWVk
ZWQoKTsKKyAgICB2b2lkIGFuaW1hdGVDb250ZW50UG9zaXRpb25JbnRvQm91bmRhcmllc0lmTmVl
ZGVkKCk7CisgICAgdm9pZCBhbmltYXRlQ29udGVudFNjYWxlSW50b0JvdW5kYXJpZXNJZk5lZWRl
ZCgpOworCisgICAgdm9pZCBzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2VudGVySW5Db250
ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpOworCisgICAgZnJpZW5kIGNsYXNzIFZpZXdwb3J0
VXBkYXRlR3VhcmQ7CisKKyAgICBjb25zdCBRU0dJdGVtKiBjb25zdCBtX3ZpZXdwb3J0OworICAg
IFFTR0l0ZW0qIGNvbnN0IG1fY29udGVudDsKKworICAgIENvbnN0cmFpbnRzIG1fY29uc3RyYWlu
dHM7CisgICAgYm9vbCBtX2lzVXBkYXRpbmdDb250ZW50OworICAgIE93blB0cjxWaWV3cG9ydFVw
ZGF0ZUd1YXJkPiBtX3BpbmNoVmlld3BvcnRVcGRhdGVEZWZlcnJlcjsKKyAgICBlbnVtIFVzZXJJ
bnRlcmFjdGlvbkZsYWcgeworICAgICAgICBVc2VySGFzTm90SW50ZXJhY3RlZFdpdGhDb250ZW50
ID0gMCwKKyAgICAgICAgVXNlckhhc01vdmVkQ29udGVudCA9IDEsCisgICAgICAgIFVzZXJIYXNT
Y2FsZWRDb250ZW50ID0gMgorICAgIH07CisgICAgUV9ERUNMQVJFX0ZMQUdTKFVzZXJJbnRlcmFj
dGlvbkZsYWdzLCBVc2VySW50ZXJhY3Rpb25GbGFnKTsKKyAgICBVc2VySW50ZXJhY3Rpb25GbGFn
cyBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzOworCisgICAgcXJlYWwgbV9waW5jaFN0YXJ0U2NhbGU7
Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF0Vmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZTo6Q29uc3RyYWludHMmIGEsIGNvbnN0IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZTo6Q29uc3RyYWludHMmIGIpCit7CisgICAgcmV0dXJuIGEuaW5pdGlhbFNjYWxlID09IGIuaW5p
dGlhbFNjYWxlCisgICAgICAgICAgICAmJiBhLm1pbmltdW1TY2FsZSA9PSBiLm1pbmltdW1TY2Fs
ZQorICAgICAgICAgICAgJiYgYS5tYXhpbXVtU2NhbGUgPT0gYi5tYXhpbXVtU2NhbGUKKyAgICAg
ICAgICAgICYmIGEuaXNVc2VyU2NhbGFibGUgPT0gYi5pc1VzZXJTY2FsYWJsZTsKK30KKworfQor
CisjZW5kaWYgLy8gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCmluZGV4IDc0OTliNGFiZWM2MTcz
ZTU4MmIxOWE3NjIxMGE1ZWNiZmUwMGU0OWIuLjdkYmU0Nzc1NzNmNjk5OWQ1YTJiYWVhNDAxNmNj
MGQ4MzU5OGZhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmNwcApAQCAtMzEsMTUgKzMxLDE1IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlBvbGljeUludGVyZmFjZS5oIgotI2luY2x1ZGUgIlZp
ZXdJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJRdFBvbGljeUludGVyZmFjZS5oIgorI2luY2x1ZGUg
IlF0Vmlld0ludGVyZmFjZS5oIgorI2luY2x1ZGUgIlF0V2ViVW5kb0NvbW1hbmQuaCIKICNpbmNs
dWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeVF0LmgiCiAjaW5jbHVkZSAiV2ViUG9w
dXBNZW51UHJveHlRdC5oIgotI2luY2x1ZGUgIldlYlVuZG9Db21tYW5kUXQuaCIKICNpbmNsdWRl
ICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgogI2luY2x1ZGUgPFFBY3Rpb24+
CkBAIC0xMDIsNyArMTAyLDcgQEAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcm9wQWN0aW9uVG9E
cmFnT3BlcmF0aW9uKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25zKQogICAgIHJldHVybiAoRHJhZ09w
ZXJhdGlvbilyZXN1bHQ7CiB9CiAKLVF0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShWaWV3
SW50ZXJmYWNlKiB2aWV3SW50ZXJmYWNlLCBQb2xpY3lJbnRlcmZhY2UqIHBvbGljeUludGVyZmFj
ZSwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikK
K1F0V2ViUGFnZVByb3h5OjpRdFdlYlBhZ2VQcm94eShRdFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRl
cmZhY2UsIFF0UG9saWN5SW50ZXJmYWNlKiBwb2xpY3lJbnRlcmZhY2UsIFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBtX3ZpZXdJbnRl
cmZhY2Uodmlld0ludGVyZmFjZSkKICAgICAsIG1fcG9saWN5SW50ZXJmYWNlKHBvbGljeUludGVy
ZmFjZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0UmVmID8gdG9JbXBsKGNvbnRleHRSZWYpIDog
ZGVmYXVsdFdLQ29udGV4dCgpKQpAQCAtMjk0LDEwICsyOTQsMTAgQEAgdm9pZCBRdFdlYlBhZ2VQ
cm94eTo6dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29s
dGlwKQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRy
PFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1
bmRvT3JSZWRvKQogewogICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykg
ewotICAgICAgICBjb25zdCBXZWJVbmRvQ29tbWFuZFF0KiB3ZWJVbmRvQ29tbWFuZCA9IHN0YXRp
Y19jYXN0PGNvbnN0IFdlYlVuZG9Db21tYW5kUXQqPihtX3VuZG9TdGFjay0+Y29tbWFuZChtX3Vu
ZG9TdGFjay0+aW5kZXgoKSkpOworICAgICAgICBjb25zdCBRdFdlYlVuZG9Db21tYW5kKiB3ZWJV
bmRvQ29tbWFuZCA9IHN0YXRpY19jYXN0PGNvbnN0IFF0V2ViVW5kb0NvbW1hbmQqPihtX3VuZG9T
dGFjay0+Y29tbWFuZChtX3VuZG9TdGFjay0+aW5kZXgoKSkpOwogICAgICAgICBpZiAod2ViVW5k
b0NvbW1hbmQgJiYgd2ViVW5kb0NvbW1hbmQtPmluVW5kb1JlZG8oKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgbV91bmRvU3RhY2stPnB1c2gobmV3IFdlYlVuZG9Db21tYW5kUXQoY29t
bWFuZCkpOworICAgICAgICBtX3VuZG9TdGFjay0+cHVzaChuZXcgUXRXZWJVbmRvQ29tbWFuZChj
b21tYW5kKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oCmluZGV4IGRhNWM0YjY4OWI3YmNiMzIxMTRlMjQ2N2E2YjBlNTNkNzk5YzJi
ODIuLmUyMDhkYWZjODQyZDdhMDRhYzY4YzhkMDdlOGI0ODI4OTRmNjg4NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oCkBAIC0yMSwxNSArMjEsMTMg
QEAKICNpZm5kZWYgUXRXZWJQYWdlUHJveHlfaAogI2RlZmluZSBRdFdlYlBhZ2VQcm94eV9oCiAK
LSNpbmNsdWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNp
bmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAiUG9saWN5SW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiUXRQb2xpY3lJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJRdFZpZXdJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJxd2Via2l0dHlwZXMuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIK
ICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgotI2luY2x1ZGUgIlZpZXdJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNzAsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFdlYkFjdGlvbkNvdW50CiAgICAgfTsKIAotICAgIFF0V2ViUGFnZVByb3h5KFdlYktpdDo6Vmll
d0ludGVyZmFjZSosIFdlYktpdDo6UG9saWN5SW50ZXJmYWNlKiA9IDAsIFdLQ29udGV4dFJlZiA9
IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUXRXZWJQYWdlUHJveHkoV2ViS2l0OjpRdFZp
ZXdJbnRlcmZhY2UqLCBXZWJLaXQ6OlF0UG9saWN5SW50ZXJmYWNlKiA9IDAsIFdLQ29udGV4dFJl
ZiA9IDAsIFdLUGFnZUdyb3VwUmVmID0gMCk7CiAgICAgflF0V2ViUGFnZVByb3h5KCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7CkBAIC0xODYsOCArMTg0LDggQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudChRUGFpbnRlciogcGFp
bnRlciwgY29uc3QgUVJlY3QmIGFyZWEpID0gMDsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdl
UHJveHk+IG1fd2ViUGFnZVByb3h5OwotICAgIFdlYktpdDo6Vmlld0ludGVyZmFjZSogY29uc3Qg
bV92aWV3SW50ZXJmYWNlOwotICAgIFdlYktpdDo6UG9saWN5SW50ZXJmYWNlKiBjb25zdCBtX3Bv
bGljeUludGVyZmFjZTsKKyAgICBXZWJLaXQ6OlF0Vmlld0ludGVyZmFjZSogY29uc3QgbV92aWV3
SW50ZXJmYWNlOworICAgIFdlYktpdDo6UXRQb2xpY3lJbnRlcmZhY2UqIGNvbnN0IG1fcG9saWN5
SW50ZXJmYWNlOwogCiBwcml2YXRlOgogICAgIGJvb2wgaGFuZGxlS2V5UHJlc3NFdmVudChRS2V5
RXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVu
ZG9Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21t
YW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwZWJjNmY1ODIzYmY3MTNkOTVkMjA1YWU3YjVlNzkxZjUw
NGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
VW5kb0NvbW1hbmQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAy
MDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENv
cHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF0V2ViVW5kb0NvbW1hbmQuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworUXRXZWJVbmRvQ29tbWFuZDo6UXRXZWJVbmRvQ29tbWFuZChQ
YXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFFVbmRvQ29tbWFuZCogcGFy
ZW50KQorICAgIDogUVVuZG9Db21tYW5kKHBhcmVudCkKKyAgICAsIG1fY29tbWFuZChjb21tYW5k
KQorICAgICwgbV9maXJzdCh0cnVlKQorICAgICwgbV9pblVuZG9SZWRvKGZhbHNlKQoreworfQor
CitRdFdlYlVuZG9Db21tYW5kOjp+UXRXZWJVbmRvQ29tbWFuZCgpCit7Cit9CisKK3ZvaWQgUXRX
ZWJVbmRvQ29tbWFuZDo6cmVkbygpCit7CisgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKKworICAg
IC8vIElnbm9yZSB0aGUgZmlyc3QgcmVkbyBjYWxsZWQgZnJvbSBRVW5kb1N0YWNrOjpwdXNoKCku
CisgICAgaWYgKG1fZmlyc3QpIHsKKyAgICAgICAgbV9maXJzdCA9IGZhbHNlOworICAgICAgICBt
X2luVW5kb1JlZG8gPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9j
b21tYW5kKQorICAgICAgICBtX2NvbW1hbmQtPnJlYXBwbHkoKTsKKworICAgIG1faW5VbmRvUmVk
byA9IGZhbHNlOworfQorCit2b2lkIFF0V2ViVW5kb0NvbW1hbmQ6OnVuZG8oKQoreworICAgIG1f
aW5VbmRvUmVkbyA9IHRydWU7CisKKyAgICBpZiAobV9jb21tYW5kKQorICAgICAgICBtX2NvbW1h
bmQtPnVuYXBwbHkoKTsKKworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbW1hbmQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21tYW5kLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMw
MGI0MDdiZDYyYzU3ZWUyZjUwYmM3MTE0ODBmZjQwZDc3MjAwZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21tYW5kLmgKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3Mg
Q29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFF0V2ViVW5kb0NvbW1hbmRfaAor
I2RlZmluZSBRdFdlYlVuZG9Db21tYW5kX2gKKworI2luY2x1ZGUgIldlYkVkaXRDb21tYW5kUHJv
eHkuaCIKKyNpbmNsdWRlIDxRVW5kb0NvbW1hbmQ+CisjaW5jbHVkZSA8cWdsb2JhbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgUXRXZWJVbmRvQ29tbWFuZCA6IHB1YmxpYyBR
VW5kb0NvbW1hbmQgeworcHVibGljOgorICAgIFF0V2ViVW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxX
ZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBRVW5kb0NvbW1hbmQqIHBhcmVudCA9IDApOwor
ICAgIH5RdFdlYlVuZG9Db21tYW5kKCk7CisKKyAgICB2b2lkIHJlZG8oKTsKKyAgICB2b2lkIHVu
ZG8oKTsKKworICAgIGJvb2wgaW5VbmRvUmVkbygpIGNvbnN0IHsgcmV0dXJuIG1faW5VbmRvUmVk
bzsgfTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5
PiBtX2NvbW1hbmQ7CisgICAgYm9vbCBtX2ZpcnN0OworICAgIGJvb2wgbV9pblVuZG9SZWRvOwor
fTsKKworI2VuZGlmIC8vIFF0V2ViVW5kb0NvbW1hbmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1NHVGlsZU5vZGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2Vl
MDQwYzQxMjZhY2I4NTVlNDI2NWY4NTljYThjNjkwN2Q0YTk0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9T
R1RpbGVOb2RlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU0dUaWxlTm9kZS5o
IgotI2luY2x1ZGUgPFFTR0VuZ2luZT4KLSNpbmNsdWRlIDxRU0dGbGF0Q29sb3JNYXRlcmlhbD4K
LSNpbmNsdWRlIDxRU0dUZXh0dXJlPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotU0dUaWxlTm9k
ZTo6U0dUaWxlTm9kZShRU0dFbmdpbmUqIGVuZ2luZSkKLSAgICA6IG1fZW5naW5lKGVuZ2luZSkK
LSAgICAsIG1fZ2VvbWV0cnkoUVNHR2VvbWV0cnk6OmRlZmF1bHRBdHRyaWJ1dGVzX1RleHR1cmVk
UG9pbnQyRCgpLCA0KQotICAgICwgbV90ZXh0dXJlTWF0ZXJpYWxzQ3JlYXRlZChmYWxzZSkKLXsK
LSAgICBzZXRGbGFncyhPd25zTWF0ZXJpYWwgfCBPd25zT3BhcXVlTWF0ZXJpYWwpOwotICAgIHNl
dEdlb21ldHJ5KCZtX2dlb21ldHJ5KTsKLSAgICBzZXRNYXRlcmlhbChuZXcgUVNHRmxhdENvbG9y
TWF0ZXJpYWwpOwotICAgIHNldE9wYXF1ZU1hdGVyaWFsKG5ldyBRU0dGbGF0Q29sb3JNYXRlcmlh
bCk7Ci19Ci0KLXZvaWQgU0dUaWxlTm9kZTo6c2V0QmFja0J1ZmZlcihjb25zdCBRSW1hZ2UmIGJh
Y2tCdWZmZXIsIGNvbnN0IFFSZWN0RiYgc291cmNlUmVjdCwgY29uc3QgUVJlY3RGJiB0YXJnZXRS
ZWN0KQotewotICAgIG1fYmFja0J1ZmZlclRleHR1cmUucmVzZXQobV9lbmdpbmUtPmNyZWF0ZVRl
eHR1cmVGcm9tSW1hZ2UoYmFja0J1ZmZlcikpOwotICAgIG1fYmFja0J1ZmZlclRhcmdldFJlY3Qg
PSB0YXJnZXRSZWN0OwotICAgIG1fYmFja0J1ZmZlclNvdXJjZVJlY3QgPSBtX2JhY2tCdWZmZXJU
ZXh0dXJlLT5jb252ZXJ0VG9Ob3JtYWxpemVkU291cmNlUmVjdChzb3VyY2VSZWN0KTsKLQotICAg
IC8vIEZvcmNlIHRoZSB0ZXh0dXJlIHVwbG9hZC4KLSAgICBtX2JhY2tCdWZmZXJUZXh0dXJlLT5i
aW5kKCk7Ci19Ci0KLXZvaWQgU0dUaWxlTm9kZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCi17Ci0g
ICAgaWYgKCFtX2JhY2tCdWZmZXJUZXh0dXJlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IW1fdGV4dHVyZU1hdGVyaWFsc0NyZWF0ZWQpIHsKLSAgICAgICAgc2V0TWF0ZXJpYWwobmV3IFFT
R1RleHR1cmVNYXRlcmlhbCk7Ci0gICAgICAgIHNldE9wYXF1ZU1hdGVyaWFsKG5ldyBRU0dPcGFx
dWVUZXh0dXJlTWF0ZXJpYWwpOwotICAgICAgICBtX3RleHR1cmVNYXRlcmlhbHNDcmVhdGVkID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBzdGF0aWNfY2FzdDxRU0dUZXh0dXJlTWF0ZXJpYWwqPihtYXRl
cmlhbCgpKS0+c2V0VGV4dHVyZShtX2JhY2tCdWZmZXJUZXh0dXJlLmRhdGEoKSk7Ci0gICAgc3Rh
dGljX2Nhc3Q8UVNHT3BhcXVlVGV4dHVyZU1hdGVyaWFsKj4ob3BhcXVlTWF0ZXJpYWwoKSktPnNl
dFRleHR1cmUobV9iYWNrQnVmZmVyVGV4dHVyZS5kYXRhKCkpOwotICAgIG1hcmtEaXJ0eShEaXJ0
eU1hdGVyaWFsKTsKLQotICAgIFFTR0dlb21ldHJ5Ojp1cGRhdGVUZXh0dXJlZFJlY3RHZW9tZXRy
eSgmbV9nZW9tZXRyeSwgbV9iYWNrQnVmZmVyVGFyZ2V0UmVjdCwgbV9iYWNrQnVmZmVyU291cmNl
UmVjdCk7Ci0gICAgbWFya0RpcnR5KERpcnR5R2VvbWV0cnkpOwotCi0gICAgbV9mcm9udEJ1ZmZl
clRleHR1cmUuc3dhcChtX2JhY2tCdWZmZXJUZXh0dXJlKTsKLSAgICBtX2JhY2tCdWZmZXJUZXh0
dXJlLnJlc2V0KCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9TR1RpbGVOb2RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvU0dUaWxlTm9k
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTA4ZmExMzA1ZTI1NDc4OWU2Zjlm
OWM5YmU4YWVjMGYwNGY4NzAyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9TR1RpbGVOb2RlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTR1Rp
bGVOb2RlX2gKLSNkZWZpbmUgU0dUaWxlTm9kZV9oCi0KLSNpbmNsdWRlIDxRU0dHZW9tZXRyeU5v
ZGU+Ci0jaW5jbHVkZSA8UVNHT3BhcXVlVGV4dHVyZU1hdGVyaWFsPgotI2luY2x1ZGUgPFFTR1Rl
eHR1cmVNYXRlcmlhbD4KLQotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRU0dFbmdpbmU7Ci1j
bGFzcyBRU0dUZXh0dXJlOwotUVRfRU5EX05BTUVTUEFDRQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgU0dUaWxlTm9kZSA6IHB1YmxpYyBRU0dHZW9tZXRyeU5vZGUgewotcHVibGljOgot
ICAgIFNHVGlsZU5vZGUoUVNHRW5naW5lKik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0
IFFJbWFnZSYsIGNvbnN0IFFSZWN0RiYgc291cmNlUmVjdCwgY29uc3QgUVJlY3RGJiB0YXJnZXRS
ZWN0KTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKLQotcHJpdmF0ZToKLSAgICBR
U0dFbmdpbmUqIG1fZW5naW5lOwotICAgIFFTR0dlb21ldHJ5IG1fZ2VvbWV0cnk7Ci0gICAgUVNj
b3BlZFBvaW50ZXI8UVNHVGV4dHVyZT4gbV9mcm9udEJ1ZmZlclRleHR1cmU7Ci0gICAgUVNjb3Bl
ZFBvaW50ZXI8UVNHVGV4dHVyZT4gbV9iYWNrQnVmZmVyVGV4dHVyZTsKLSAgICBib29sIG1fdGV4
dHVyZU1hdGVyaWFsc0NyZWF0ZWQ7Ci0KLSAgICBRUmVjdEYgbV9iYWNrQnVmZmVyVGFyZ2V0UmVj
dDsKLSAgICBRUmVjdEYgbV9iYWNrQnVmZmVyU291cmNlUmVjdDsKLX07Ci0KLX0KLQotI2VuZGlm
IC8qIFNHVGlsZU5vZGVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1NHVXBkYXRlUXVldWUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1NHVXBk
YXRlUXVldWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzE1NDNhY2NiMTIz
MzlmZDY5Y2QzMTRiNmVkMTkyMDY1NzNiZWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1
ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNHVXBkYXRlUXVldWUuaCIK
LQotI2luY2x1ZGUgIlBhc3NPd25QdHIuaCIKLSNpbmNsdWRlICJTR1RpbGVOb2RlLmgiCi0jaW5j
bHVkZSA8UVNHSXRlbT4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBOb2RlVXBkYXRl
Q3JlYXRlVGlsZSA6IHB1YmxpYyBOb2RlVXBkYXRlIHsKLSAgICBOb2RlVXBkYXRlQ3JlYXRlVGls
ZShpbnQgbm9kZUlELCBmbG9hdCBzY2FsZSkKLSAgICAgICAgOiBOb2RlVXBkYXRlKENyZWF0ZVRp
bGUpCi0gICAgICAgICwgbm9kZUlEKG5vZGVJRCkKLSAgICAgICAgLCBzY2FsZShzY2FsZSkKLSAg
ICB7IH0KLSAgICBpbnQgbm9kZUlEOwotICAgIGZsb2F0IHNjYWxlOwotfTsKLQotc3RydWN0IE5v
ZGVVcGRhdGVSZW1vdmVUaWxlIDogcHVibGljIE5vZGVVcGRhdGUgewotICAgIE5vZGVVcGRhdGVS
ZW1vdmVUaWxlKGludCBub2RlSUQpCi0gICAgICAgIDogTm9kZVVwZGF0ZShSZW1vdmVUaWxlKQot
ICAgICAgICAsIG5vZGVJRChub2RlSUQpCi0gICAgeyB9Ci0gICAgaW50IG5vZGVJRDsKLX07Ci0K
LXN0cnVjdCBOb2RlVXBkYXRlU2V0QmFja0J1ZmZlciA6IHB1YmxpYyBOb2RlVXBkYXRlIHsKLSAg
ICBOb2RlVXBkYXRlU2V0QmFja0J1ZmZlcihpbnQgbm9kZUlELCBjb25zdCBRSW1hZ2UmIGJhY2tC
dWZmZXIsIGNvbnN0IFFSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBRUmVjdCYgdGFyZ2V0UmVjdCkK
LSAgICAgICAgOiBOb2RlVXBkYXRlKFNldEJhY2tCdWZmZXIpCi0gICAgICAgICwgbm9kZUlEKG5v
ZGVJRCkKLSAgICAgICAgLCBiYWNrQnVmZmVyKGJhY2tCdWZmZXIpCi0gICAgICAgICwgc291cmNl
UmVjdChzb3VyY2VSZWN0KQotICAgICAgICAsIHRhcmdldFJlY3QodGFyZ2V0UmVjdCkKLSAgICB7
IH0KLSAgICBpbnQgbm9kZUlEOwotICAgIFFJbWFnZSBiYWNrQnVmZmVyOwotICAgIFFSZWN0IHNv
dXJjZVJlY3Q7Ci0gICAgUVJlY3QgdGFyZ2V0UmVjdDsKLX07Ci0KLXN0cnVjdCBOb2RlVXBkYXRl
U3dhcFRpbGVCdWZmZXJzIDogcHVibGljIE5vZGVVcGRhdGUgewotICAgIE5vZGVVcGRhdGVTd2Fw
VGlsZUJ1ZmZlcnMoKQotICAgICAgICA6IE5vZGVVcGRhdGUoU3dhcFRpbGVCdWZmZXJzKQotICAg
IHsgfQotfTsKLQotU0dVcGRhdGVRdWV1ZTo6U0dVcGRhdGVRdWV1ZShRU0dJdGVtKiBpdGVtKQot
ICAgIDogaXRlbShpdGVtKQotICAgICwgbGFzdFNjYWxlKDApCi0gICAgLCBsYXN0U2NhbGVOb2Rl
KDApCi0gICAgLCBuZXh0Tm9kZUlEKDEpCi0gICAgLCBtX2lzU3dhcFBlbmRpbmcoZmFsc2UpCi17
Ci19Ci0KLWludCBTR1VwZGF0ZVF1ZXVlOjpjcmVhdGVUaWxlTm9kZShmbG9hdCBzY2FsZSkKLXsK
LSAgICBpbnQgbm9kZUlEID0gbmV4dE5vZGVJRCsrOwotICAgIG5vZGVVcGRhdGVRdWV1ZS5hcHBl
bmQoYWRvcHRQdHIobmV3IE5vZGVVcGRhdGVDcmVhdGVUaWxlKG5vZGVJRCwgc2NhbGUpKSk7Ci0g
ICAgaXRlbS0+dXBkYXRlKCk7Ci0gICAgcmV0dXJuIG5vZGVJRDsKLX0KLQotdm9pZCBTR1VwZGF0
ZVF1ZXVlOjpyZW1vdmVUaWxlTm9kZShpbnQgbm9kZUlEKQotewotICAgIG5vZGVVcGRhdGVRdWV1
ZS5hcHBlbmQoYWRvcHRQdHIobmV3IE5vZGVVcGRhdGVSZW1vdmVUaWxlKG5vZGVJRCkpKTsKLSAg
ICBpdGVtLT51cGRhdGUoKTsKLX0KLQotdm9pZCBTR1VwZGF0ZVF1ZXVlOjpzZXROb2RlQmFja0J1
ZmZlcihpbnQgbm9kZUlELCBjb25zdCBRSW1hZ2UmIGJhY2tCdWZmZXIsIGNvbnN0IFFSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBRUmVjdCYgdGFyZ2V0UmVjdCkKLXsKLSAgICBub2RlVXBkYXRlUXVl
dWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBOb2RlVXBkYXRlU2V0QmFja0J1ZmZlcihub2RlSUQsIGJh
Y2tCdWZmZXIsIHNvdXJjZVJlY3QsIHRhcmdldFJlY3QpKSk7Ci0gICAgaXRlbS0+dXBkYXRlKCk7
Ci19Ci0KLXZvaWQgU0dVcGRhdGVRdWV1ZTo6c3dhcFRpbGVCdWZmZXJzKCkKLXsKLSAgICBub2Rl
VXBkYXRlUXVldWUuYXBwZW5kKGFkb3B0UHRyKG5ldyBOb2RlVXBkYXRlU3dhcFRpbGVCdWZmZXJz
KCkpKTsKLSAgICBtX2lzU3dhcFBlbmRpbmcgPSB0cnVlOwotICAgIGl0ZW0tPnVwZGF0ZSgpOwot
fQotCi12b2lkIFNHVXBkYXRlUXVldWU6OmFwcGx5VXBkYXRlcyhRU0dOb2RlKiBpdGVtTm9kZSkK
LXsKLSAgICB3aGlsZSAoIW5vZGVVcGRhdGVRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgT3du
UHRyPE5vZGVVcGRhdGU+IG5vZGVVcGRhdGUobm9kZVVwZGF0ZVF1ZXVlLnRha2VGaXJzdCgpKTsK
LSAgICAgICAgc3dpdGNoIChub2RlVXBkYXRlLT50eXBlKSB7Ci0gICAgICAgIGNhc2UgTm9kZVVw
ZGF0ZTo6Q3JlYXRlVGlsZTogewotICAgICAgICAgICAgTm9kZVVwZGF0ZUNyZWF0ZVRpbGUqIGNy
ZWF0ZVRpbGVVcGRhdGUgPSBzdGF0aWNfY2FzdDxOb2RlVXBkYXRlQ3JlYXRlVGlsZSo+KG5vZGVV
cGRhdGUuZ2V0KCkpOwotICAgICAgICAgICAgU0dUaWxlTm9kZSogdGlsZU5vZGUgPSBuZXcgU0dU
aWxlTm9kZShpdGVtLT5zY2VuZUdyYXBoRW5naW5lKCkpOwotICAgICAgICAgICAgZ2V0U2NhbGVO
b2RlKGNyZWF0ZVRpbGVVcGRhdGUtPnNjYWxlLCBpdGVtTm9kZSktPnByZXBlbmRDaGlsZE5vZGUo
dGlsZU5vZGUpOwotICAgICAgICAgICAgbm9kZXMuc2V0KGNyZWF0ZVRpbGVVcGRhdGUtPm5vZGVJ
RCwgdGlsZU5vZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBOb2RlVXBkYXRlOjpSZW1vdmVUaWxlOiB7Ci0gICAgICAgICAgICBOb2RlVXBkYXRlUmVtb3Zl
VGlsZSogcmVtb3ZlVXBkYXRlID0gc3RhdGljX2Nhc3Q8Tm9kZVVwZGF0ZVJlbW92ZVRpbGUqPihu
b2RlVXBkYXRlLmdldCgpKTsKLSAgICAgICAgICAgIFFTR05vZGUqIG5vZGUgPSBub2Rlcy50YWtl
KHJlbW92ZVVwZGF0ZS0+bm9kZUlEKTsKLSAgICAgICAgICAgIFFTR05vZGUqIHNjYWxlTm9kZSA9
IG5vZGUtPnBhcmVudCgpOwotCi0gICAgICAgICAgICBzY2FsZU5vZGUtPnJlbW92ZUNoaWxkTm9k
ZShub2RlKTsKLSAgICAgICAgICAgIGlmICghc2NhbGVOb2RlLT5jaGlsZENvdW50KCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc2NhbGVOb2RlID09IGxhc3RTY2FsZU5vZGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgbGFzdFNjYWxlID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbGFzdFNjYWxl
Tm9kZSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRlbGV0ZSBzY2Fs
ZU5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxldGUgbm9kZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTm9kZVVwZGF0ZTo6U2V0QmFja0J1
ZmZlcjogewotICAgICAgICAgICAgTm9kZVVwZGF0ZVNldEJhY2tCdWZmZXIqIHNldEJhY2tCdWZm
ZXJVcGRhdGUgPSBzdGF0aWNfY2FzdDxOb2RlVXBkYXRlU2V0QmFja0J1ZmZlcio+KG5vZGVVcGRh
dGUuZ2V0KCkpOwotICAgICAgICAgICAgU0dUaWxlTm9kZSogdGlsZU5vZGUgPSBub2Rlcy5nZXQo
c2V0QmFja0J1ZmZlclVwZGF0ZS0+bm9kZUlEKTsKLSAgICAgICAgICAgIHRpbGVOb2RlLT5zZXRC
YWNrQnVmZmVyKHNldEJhY2tCdWZmZXJVcGRhdGUtPmJhY2tCdWZmZXIsIHNldEJhY2tCdWZmZXJV
cGRhdGUtPnNvdXJjZVJlY3QsIHNldEJhY2tCdWZmZXJVcGRhdGUtPnRhcmdldFJlY3QpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOb2RlVXBkYXRlOjpTd2Fw
VGlsZUJ1ZmZlcnM6IHsKLSAgICAgICAgICAgIEhhc2hNYXA8aW50LCBTR1RpbGVOb2RlKj46Oml0
ZXJhdG9yIGVuZCA9IG5vZGVzLmVuZCgpOwotICAgICAgICAgICAgZm9yIChIYXNoTWFwPGludCwg
U0dUaWxlTm9kZSo+OjppdGVyYXRvciBpdCA9IG5vZGVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgICAgICAgICBpdC0+c2Vjb25kLT5zd2FwQnVmZmVyc0lmTmVlZGVkKCk7Ci0g
ICAgICAgICAgICBtX2lzU3dhcFBlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUVNHTm9kZSogU0dVcGRhdGVRdWV1ZTo6Z2V0
U2NhbGVOb2RlKGZsb2F0IHNjYWxlLCBRU0dOb2RlKiBpdGVtTm9kZSkKLXsKLSAgICBpZiAoc2Nh
bGUgPT0gbGFzdFNjYWxlKQotICAgICAgICByZXR1cm4gbGFzdFNjYWxlTm9kZTsKLQotICAgIFFT
R1RyYW5zZm9ybU5vZGUqIHNjYWxlTm9kZSA9IG5ldyBRU0dUcmFuc2Zvcm1Ob2RlOwotICAgIFFN
YXRyaXg0eDQgc2NhbGVNYXRyaXg7Ci0gICAgLy8gVXNlIHNjYWxlKGZsb2F0LGZsb2F0KSB0byBw
cmV2ZW50IHNjYWxpbmcgdGhlIFogY29tcG9uZW50LgotICAgIC8vIFJldmVyc2UgdGhlIGl0ZW0n
cyB0cmFuc2Zvcm0gc2NhbGUgc2luY2Ugb3VyIHRpbGVzIHdlcmUgZ2VuZXJhdGVkIGZvciB0aGlz
IHNwZWNpZmljIHNjYWxlLgotICAgIHNjYWxlTWF0cml4LnNjYWxlKDEgLyBzY2FsZSwgMSAvIHNj
YWxlKTsKLSAgICBzY2FsZU5vZGUtPnNldE1hdHJpeChzY2FsZU1hdHJpeCk7Ci0gICAgLy8gUHJl
cGVuZCBpbnN0ZWFkIG9mIGFwcGVuZCB0byBwYWludCB0aGUgbmV3LCBpbmNvbXBsZXRlLCBzY2Fs
ZSBiZWZvcmUvYmVoaW5kIHRoZSBwcmV2aW91cyBvbmUuCi0gICAgaXRlbU5vZGUtPnByZXBlbmRD
aGlsZE5vZGUoc2NhbGVOb2RlKTsKLQotICAgIGxhc3RTY2FsZSA9IHNjYWxlOwotICAgIGxhc3RT
Y2FsZU5vZGUgPSBzY2FsZU5vZGU7Ci0gICAgcmV0dXJuIGxhc3RTY2FsZU5vZGU7Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvU0dVcGRhdGVRdWV1ZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYjVjNzk4MWIyZGM5NGY2MDU1MTYzNzAwMTA2ZmJlNzk1NDI1
NGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1ZXVlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBTR1VwZGF0ZVF1ZXVlX2gK
LSNkZWZpbmUgU0dVcGRhdGVRdWV1ZV9oCi0KLSNpbmNsdWRlICJEZXF1ZS5oIgotI2luY2x1ZGUg
Ikhhc2hNYXAuaCIKLSNpbmNsdWRlICJPd25QdHIuaCIKLQotY2xhc3MgUUltYWdlOwotY2xhc3Mg
UVJlY3Q7Ci1jbGFzcyBRU0dJdGVtOwotY2xhc3MgUVNHTm9kZTsKLWNsYXNzIFFTaXplOwotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgTm9kZVVwZGF0ZTsKLWNsYXNzIFBhZ2VOb2RlOwot
Y2xhc3MgU0dUaWxlTm9kZTsKLQotLy8gVGFrZXMgY2FyZSBvZiB0YWtpbmcgdXBkYXRlIHJlcXVl
c3RzIHRoZW4gZnVsZmlsbGluZyB0aGVtIGFzeW5jaHJvbm91c2x5IG9uIHRoZSBzY2VuZSBncmFw
aCB0aHJlYWQuCi1jbGFzcyBTR1VwZGF0ZVF1ZXVlIHsKLXB1YmxpYzoKLSAgICBTR1VwZGF0ZVF1
ZXVlKFFTR0l0ZW0qKTsKLQotICAgIGludCBjcmVhdGVUaWxlTm9kZShmbG9hdCBzY2FsZSk7Ci0g
ICAgdm9pZCByZW1vdmVUaWxlTm9kZShpbnQgbm9kZUlEKTsKLSAgICB2b2lkIHNldE5vZGVCYWNr
QnVmZmVyKGludCBub2RlSUQsIGNvbnN0IFFJbWFnZSYgdGV4dHVyZSwgY29uc3QgUVJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IFFSZWN0JiB0YXJnZXRSZWN0KTsKLSAgICB2b2lkIHN3YXBUaWxlQnVm
ZmVycygpOwotCi0gICAgLy8gQ2FsbGVkIGJ5IHRoZSBRU0dJdGVtLgotICAgIHZvaWQgYXBwbHlV
cGRhdGVzKFFTR05vZGUqIGl0ZW1Ob2RlKTsKLSAgICBib29sIGlzU3dhcFBlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBtX2lzU3dhcFBlbmRpbmc7IH0KLQotcHJpdmF0ZToKLSAgICBRU0dOb2RlKiBn
ZXRTY2FsZU5vZGUoZmxvYXQgc2NhbGUsIFFTR05vZGUqIGl0ZW1Ob2RlKTsKLQotICAgIFFTR0l0
ZW0qIGl0ZW07Ci0gICAgRGVxdWU8T3duUHRyPE5vZGVVcGRhdGU+ID4gbm9kZVVwZGF0ZVF1ZXVl
OwotICAgIEhhc2hNYXA8aW50LCBTR1RpbGVOb2RlKj4gbm9kZXM7Ci0gICAgZmxvYXQgbGFzdFNj
YWxlOwotICAgIFFTR05vZGUqIGxhc3RTY2FsZU5vZGU7Ci0gICAgaW50IG5leHROb2RlSUQ7Ci0g
ICAgYm9vbCBtX2lzU3dhcFBlbmRpbmc7Ci19OwotCi1zdHJ1Y3QgTm9kZVVwZGF0ZSB7Ci0gICAg
ZW51bSBUeXBlIHsKLSAgICAgICAgQ3JlYXRlVGlsZSwKLSAgICAgICAgUmVtb3ZlVGlsZSwKLSAg
ICAgICAgU2V0QmFja0J1ZmZlciwKLSAgICAgICAgU3dhcFRpbGVCdWZmZXJzCi0gICAgfTsKLSAg
ICBOb2RlVXBkYXRlKFR5cGUgdHlwZSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgeyB9Ci0g
ICAgdmlydHVhbCB+Tm9kZVVwZGF0ZSgpIHsgfQotICAgIFR5cGUgdHlwZTsKLX07Ci0KLX0KLQot
I2VuZGlmIC8qIFNHVXBkYXRlUXVldWVfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhUHJveHlRdC5jcHAKaW5kZXggMzJjMTdhN2Vj
YWU3YjE2NWFhZjdlZjc1N2Y5NTQ2NTE5YjE3YTMxNi4uNDg5ZDgyOTAyODU1NDczNzdjNDU1OGNl
NTE3NTY3OTBiMmQxNTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvVGlsZWREcmF3aW5nQXJlYVByb3h5UXQuY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGlsZWREcmF3aW5nQXJlYVByb3h5LmgiCiAKLSNp
bmNsdWRlICJTR1VwZGF0ZVF1ZXVlLmgiCisjaW5jbHVkZSAiUXRTR1VwZGF0ZVF1ZXVlLmgiCisj
aW5jbHVkZSAiUXRUb3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKLSNpbmNsdWRlICJUb3VjaFZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJVcGRhdGVJ
bmZvLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFRpbGVkRHJhd2lu
Z0FyZWFQcm94eTo6dXBkYXRlV2ViVmlldyhjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBhaW50ZWRB
cmVhKQogewotICAgIC8vIFNHIHVwZGF0ZXMgYXJlIHRyaWdnZXJlZCB0aHJvdWdoIFNHVXBkYXRl
UXVldWUuCisgICAgLy8gU0cgdXBkYXRlcyBhcmUgdHJpZ2dlcmVkIHRocm91Z2ggUXRTR1VwZGF0
ZVF1ZXVlLgogfQogCiBXZWJQYWdlUHJveHkqIFRpbGVkRHJhd2luZ0FyZWFQcm94eTo6cGFnZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGRhM2RiOWYxZjVjNTM4ZWY4MDFh
MjA3Y2JjMWI4YzIxZmNlMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2Uu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
cHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVG91Y2hWaWV3SW50ZXJmYWNlLmgiCi0KLSNp
bmNsdWRlICJxdG91Y2h3ZWJwYWdlLmgiCi0jaW5jbHVkZSAicXRvdWNod2VicGFnZV9wLmgiCi0j
aW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgotI2luY2x1ZGUgInF0b3VjaHdlYnZpZXdfcC5oIgot
I2luY2x1ZGUgInF3ZWJlcnJvci5oIgotCi0jaW5jbHVkZSA8UURlY2xhcmF0aXZlRW5naW5lPgot
I2luY2x1ZGUgPFFTR1ZpZXc+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1Ub3VjaFZpZXdJbnRl
cmZhY2U6OlRvdWNoVmlld0ludGVyZmFjZShRVG91Y2hXZWJWaWV3KiB2aWV3cG9ydFZpZXcsIFFU
b3VjaFdlYlBhZ2UqIHBhZ2VWaWV3KQotICAgIDogbV92aWV3cG9ydFZpZXcodmlld3BvcnRWaWV3
KQotICAgICwgbV9wYWdlVmlldyhwYWdlVmlldykKLXsKLSAgICBRX0FTU0VSVChtX3ZpZXdwb3J0
Vmlldyk7Ci0gICAgUV9BU1NFUlQobV9wYWdlVmlldyk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50
ZXJmYWNlOjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFFQb2ludCYsIGNvbnN0IFFSZWN0JikK
LXsKLX0KLQotU0dVcGRhdGVRdWV1ZSogVG91Y2hWaWV3SW50ZXJmYWNlOjpzY2VuZUdyYXBoVXBk
YXRlUXVldWUoKSBjb25zdAotewotICAgIHJldHVybiAmbV9wYWdlVmlldy0+ZC0+c2dVcGRhdGVR
dWV1ZTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnNldFZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgUVJlY3QmKQotewotfQotCi1RU2l6ZSBUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdB
cmVhU2l6ZSgpCi17Ci0gICAgcmV0dXJuIFFTaXplKG1fcGFnZVZpZXctPndpZHRoKCksIG1fcGFn
ZVZpZXctPmhlaWdodCgpKTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmNvbnRlbnRT
aXplQ2hhbmdlZChjb25zdCBRU2l6ZSYgbmV3U2l6ZSkKLXsKLSAgICBtX3BhZ2VWaWV3LT5zZXRX
aWR0aChuZXdTaXplLndpZHRoKCkpOwotICAgIG1fcGFnZVZpZXctPnNldEhlaWdodChuZXdTaXpl
LmhlaWdodCgpKTsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+dXBkYXRlVmlld3BvcnRDb25zdHJh
aW50cygpOwotfQotCi1ib29sIFRvdWNoVmlld0ludGVyZmFjZTo6aXNBY3RpdmUoKQotewotICAg
IC8vIEZJWE1FOiBUaGUgc2NlbmUgZ3JhcGggZG9lcyBub3QgaGF2ZSB0aGUgY29uY2VwdCBvZiBi
ZWluZyBhY3RpdmUgb3Igbm90IHdoZW4gdGhpcyB3YXMgd3JpdHRlbi4KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6Omhhc0ZvY3VzKCkKLXsKLSAgICByZXR1
cm4gbV9wYWdlVmlldy0+aGFzRm9jdXMoKTsKLX0KLQotYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6
OmlzVmlzaWJsZSgpCi17Ci0gICAgcmV0dXJuIG1fdmlld3BvcnRWaWV3LT5pc1Zpc2libGUoKSAm
JiBtX3BhZ2VWaWV3LT5pc1Zpc2libGUoKTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6
OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0IFFJ
bWFnZSYgZHJhZ0ltYWdlLCBRTWltZURhdGEqIGRhdGEsIFFQb2ludCogY2xpZW50UG9zaXRpb24s
IFFQb2ludCogZ2xvYmFsUG9zaXRpb24sIFF0OjpEcm9wQWN0aW9uKiBkcm9wQWN0aW9uKQotewot
ICAgIC8vIFFUb3VjaFdlYlZpZXcgZG9lcyBub3Qgc3VwcG9ydCBkcmFnIGFuZCBkcm9wLgotICAg
IFFfQVNTRVJUKGZhbHNlKTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmRpZFJlY2Vp
dmVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJn
cykKLXsKLSAgICBtX3ZpZXdwb3J0Vmlldy0+ZC0+c2V0Vmlld3BvcnRBcmd1bWVudHMoYXJncyk7
Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VVcmwoY29uc3QgUVVybCYg
dXJsKQotewotICAgIGVtaXQgbV9wYWdlVmlldy0+dXJsQ2hhbmdlZCh1cmwpOwotfQotCi12b2lk
IFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgUVN0cmluZyYgbmV3VGl0
bGUpCi17Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT50aXRsZUNoYW5nZWQobmV3VGl0bGUpOwotfQot
Ci12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlVG9vbFRpcChjb25zdCBRU3RyaW5n
JikKLXsKLSAgICAvLyBUaGVyZSBpcyBub3QgeWV0IGFueSBVSSBkZWZpbmVkIGZvciB0aGUgdG9v
bHRpcHMgZm9yIG1vYmlsZSBzbyB3ZSBpZ25vcmUgdGhlIGNoYW5nZS4KLX0KLQotdm9pZCBUb3Vj
aFZpZXdJbnRlcmZhY2U6OmRpZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYpCi17Ci0g
ICAgLy8gVGhlcmUgaXMgbm90IHlldCBhbnkgVUkgZGVmaW5lZCBmb3Igc3RhdHVzIHRleHQgc28g
d2UgaWdub3JlIHRoZSBjYWxsLgotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hh
bmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImKQotewotICAgIC8vIFRoZSBjdXJzb3IgaXMgbm90IHZp
c2libGUgb24gbW9iaWxlLCBqdXN0IGlnbm9yZSB0aGlzIG1lc3NhZ2UuCi19Ci0KLXZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkQmVnaW4oKQotewotICAgIGVtaXQgbV9wYWdlVmlldy0+
bG9hZFN0YXJ0ZWQoKTsKLX0KLQotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OmxvYWREaWRDb21t
aXQoKQotewotICAgIG1fdmlld3BvcnRWaWV3LT5kLT5sb2FkRGlkQ29tbWl0KCk7Ci19Ci0KLXZv
aWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkU3VjY2VlZCgpCi17Ci0gICAgZW1pdCBtX3Bh
Z2VWaWV3LT5sb2FkU3VjY2VlZGVkKCk7Ci19Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjps
b2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImIGVycm9yKQotewotICAgIGVtaXQgbV9wYWdlVmll
dy0+bG9hZEZhaWxlZChzdGF0aWNfY2FzdDxRVG91Y2hXZWJQYWdlOjpFcnJvclR5cGU+KGVycm9y
LnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci51cmwoKSk7Ci19Ci0KLXZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50IHBlcmNlbnRhZ2VMb2Fk
ZWQpCi17Ci0gICAgZW1pdCBtX3BhZ2VWaWV3LT5sb2FkUHJvZ3Jlc3NDaGFuZ2VkKHBlcmNlbnRh
Z2VMb2FkZWQpOwotfQotCi12b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6c2hvd0NvbnRleHRNZW51
KFFTaGFyZWRQb2ludGVyPFFNZW51PikKLXsKLSAgICAvLyBGSVhNRQotfQotCi12b2lkIFRvdWNo
Vmlld0ludGVyZmFjZTo6aGlkZUNvbnRleHRNZW51KCkKLXsKLSAgICAvLyBGSVhNRQotfQotCi12
b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcm
KQotewotICAgIC8vIEZJWE1FLgotfQotCi1ib29sIFRvdWNoVmlld0ludGVyZmFjZTo6cnVuSmF2
YVNjcmlwdENvbmZpcm0oY29uc3QgUVN0cmluZyYpCi17Ci0gICAgLy8gRklYTUUuCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLVFTdHJpbmcgVG91Y2hWaWV3SW50ZXJmYWNlOjpydW5KYXZhU2NyaXB0
UHJvbXB0KGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiBkZWZhdWx0VmFsdWUsIGJvb2wm
KQotewotICAgIC8vIEZJWE1FLgotICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci19Ci0KLXZvaWQg
VG91Y2hWaWV3SW50ZXJmYWNlOjpwcm9jZXNzRGlkQ3Jhc2goKQotewotICAgIC8vIEZJWE1FCi19
Ci0KLXZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQotewotICAg
IC8vIEZJWE1FCi19Ci0KLVFKU0VuZ2luZSogVG91Y2hWaWV3SW50ZXJmYWNlOjplbmdpbmUoKQot
ewotICAgIFFTR1ZpZXcqIHZpZXcgPSBxb2JqZWN0X2Nhc3Q8UVNHVmlldyo+KG1fcGFnZVZpZXct
PmNhbnZhcygpKTsKLSAgICBpZiAodmlldykKLSAgICAgICAgcmV0dXJuIHZpZXctPmVuZ2luZSgp
OwotICAgIHJldHVybiAwOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZj
OGRlNDk5MzUzYzRiN2RkMTNiYzFjN2E1ZmY1YTQ5OGFjNTZmMjQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0KLSNpZm5kZWYgVG91Y2hWaWV3SW50ZXJmYWNlX2gKLSNkZWZpbmUgVG91
Y2hWaWV3SW50ZXJmYWNlX2gKLQotI2luY2x1ZGUgIlZpZXdJbnRlcmZhY2UuaCIKLQotY2xhc3Mg
UVBvaW50RjsKLWNsYXNzIFFUb3VjaFdlYlBhZ2U7Ci1jbGFzcyBRVG91Y2hXZWJWaWV3OwotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBWaWV3cG9ydEFyZ3VtZW50czsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFNHVXBkYXRlUXVldWU7Ci0KLWNsYXNzIFRvdWNoVmlld0lu
dGVyZmFjZSA6IHB1YmxpYyBWaWV3SW50ZXJmYWNlCi17Ci1wdWJsaWM6Ci0gICAgVG91Y2hWaWV3
SW50ZXJmYWNlKFFUb3VjaFdlYlZpZXcqIHZpZXdwb3J0VmlldywgUVRvdWNoV2ViUGFnZSogcGFn
ZVZpZXcpOwotCi0gICAgU0dVcGRhdGVRdWV1ZSogc2NlbmVHcmFwaFVwZGF0ZVF1ZXVlKCkgY29u
c3Q7Ci0KLXByaXZhdGU6Ci0gICAgLyogSW1wbGVtZW50YXRpb24gb2YgVmlld0ludGVyZmFjZSAq
LwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0Jik7Ci0K
LSAgICB2aXJ0dWFsIFFTaXplIGRyYXdpbmdBcmVhU2l6ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBj
b250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKTsKLQotICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpOwotICAgIHZpcnR1YWwgYm9vbCBoYXNGb2N1cygpOwotICAgIHZpcnR1YWwgYm9vbCBp
c1Zpc2libGUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoUXQ6OkRyb3BBY3Rpb25z
IHN1cHBvcnRlZERyb3BBY3Rpb25zLCBjb25zdCBRSW1hZ2UmIGRyYWdJbWFnZSwgUU1pbWVEYXRh
KiBkYXRhLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBRUG9pbnQqIGdsb2JhbFBvc2l0aW9uLCBR
dDo6RHJvcEFjdGlvbiogZHJvcEFjdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVW
aWV3cG9ydEFyZ3VtZW50cyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpOwotCi0g
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgUVBvaW50JiwgY29uc3Qg
UVJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VVcmwoY29uc3QgUVVybCYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShjb25zdCBRU3RyaW5nJik7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVRvb2xUaXAoY29uc3QgUVN0cmluZyYpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9h
ZERpZEJlZ2luKCk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREaWRDb21taXQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwo
Y29uc3QgUVdlYkVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVz
cyhpbnQpOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRl
cjxRTWVudT4pOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoY29uc3QgUVN0cmluZyYpOwotICAgIHZpcnR1
YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShjb25zdCBRU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBRU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spOwotCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKLQotICAg
IHZpcnR1YWwgUUpTRW5naW5lKiBlbmdpbmUoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjaG9vc2VG
aWxlcyhXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmLCBjb25zdCBRU3RyaW5nTGlzdCYsIEZp
bGVDaG9vc2VyVHlwZSkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW91c2VNb3ZlT3ZlckVs
ZW1lbnQoY29uc3QgUVVybCYsIGNvbnN0IFFTdHJpbmcmKSB7IH0KLQotcHJpdmF0ZToKLSAgICBR
VG91Y2hXZWJWaWV3KiBjb25zdCBtX3ZpZXdwb3J0VmlldzsKLSAgICBRVG91Y2hXZWJQYWdlKiBj
b25zdCBtX3BhZ2VWaWV3OwotfTsKLQotfQotCi0jZW5kaWYgLyogVG91Y2hWaWV3SW50ZXJmYWNl
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJm
YWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTI0MmMyOGQwNTg4MTg5Y2YzMTM5NTFiNTkyZjg4
ZmIwMGYzYTgzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgVmlld0ludGVy
ZmFjZV9oCi0jZGVmaW5lIFZpZXdJbnRlcmZhY2VfaAotCi0jaW5jbHVkZSA8UXRDb3JlL1FTaGFy
ZWRQb2ludGVyPgotI2luY2x1ZGUgPFF0Q29yZS9RU2l6ZT4KLSNpbmNsdWRlIDxRTWVudT4KLSNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi1jbGFzcyBRV2ViRXJyb3I7Ci0KLVFUX0JFR0lO
X05BTUVTUEFDRQotY2xhc3MgUUN1cnNvcjsKLWNsYXNzIFFHcmFwaGljc1dpZGdldDsKLWNsYXNz
IFFJbWFnZTsKLWNsYXNzIFFKU0VuZ2luZTsKLWNsYXNzIFFNaW1lRGF0YTsKLWNsYXNzIFFQb2lu
dDsKLWNsYXNzIFFSZWN0OwotY2xhc3MgUVVybDsKLWNsYXNzIFFXaWRnZXQ7Ci1RVF9FTkRfTkFN
RVNQQUNFCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFZpZXdwb3J0QXJndW1lbnRzOwot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgVmlld0ludGVyZmFjZQotewotcHVibGlj
OgotICAgIGVudW0gRmlsZUNob29zZXJUeXBlIHsKLSAgICAgICAgU2luZ2xlRmlsZVNlbGVjdGlv
biwKLSAgICAgICAgTXVsdGlwbGVGaWxlc1NlbGVjdGlvbgotICAgIH07Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpID0gMDsKLQotICAgIHZpcnR1
YWwgUVNpemUgZHJhd2luZ0FyZWFTaXplKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc0ZvY3VzKCkgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1Zpc2libGUoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFF0OjpE
cm9wQWN0aW9ucyBzdXBwb3J0ZWREcm9wQWN0aW9ucywgY29uc3QgUUltYWdlJiBkcmFnSW1hZ2Us
IFFNaW1lRGF0YSogZGF0YSwgUVBvaW50KiBjbGllbnRQb3NpdGlvbiwgUVBvaW50KiBnbG9iYWxQ
b3NpdGlvbiwgUXQ6OkRyb3BBY3Rpb24qIGRyb3BBY3Rpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29u
c3QgUVBvaW50JiwgY29uc3QgUVJlY3QmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVXJsKGNvbnN0IFFVcmwmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxl
KGNvbnN0IFFTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRvb2xUaXAo
Y29uc3QgUVN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdHVzVGV4
dChjb25zdCBRU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3Io
Y29uc3QgUUN1cnNvciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkU3VjY2VlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29u
c3QgUVdlYkVycm9yJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jl
c3MoaW50KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KFFTaGFyZWRQ
b2ludGVyPFFNZW51PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlQ29udGV4dE1lbnUoKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFFTdHJpbmcm
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKGNvbnN0IFFTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCBRU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoY29uc3Qg
UVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgYm9vbCYgb2spID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlbGF1bmNoUHJvY2VzcygpID0gMDsKLQotICAgIHZpcnR1YWwgUUpTRW5naW5lKiBlbmdp
bmUoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2hvb3NlRmlsZXMoV0tPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lclJlZiwgY29uc3QgUVN0cmluZ0xpc3QmIHNlbGVjdGVkRmlsZU5hbWVzLCBGaWxl
Q2hvb3NlclR5cGUpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3VzZU1vdmVPdmVyRWxl
bWVudChjb25zdCBRVXJsJiwgY29uc3QgUVN0cmluZyYpID0gMDsKLX07Ci0KLX0KLQotI2VuZGlm
IC8qIFZpZXdJbnRlcmZhY2VfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1ZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4N2I4N2RlMmMyNGMyMTNjNmU2OGJlYTE5MTYxMWE3ODVmNDJiMDNlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDMwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEJlbmphbWlu
IFBvdWxhaW4gPGJlbmphbWluQHdlYmtpdC5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIgotCi0jaW5jbHVkZSAiUGFzc093
blB0ci5oIgotI2luY2x1ZGUgPFFQb2ludEY+Ci0jaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dp
dGVtLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgaW5saW5lIFFSZWN0RiB2aXNp
YmxlUmVjdEluQ29udGVudENvb3JkaW5hdGUoY29uc3QgUVNHSXRlbSogY29udGVudCwgY29uc3Qg
UVNHSXRlbSogdmlld3BvcnQpCi17Ci0gICAgY29uc3QgUVJlY3RGIHZpZXdwb3J0SW5Db250ZW50
Q29vcmRpbmF0ZSA9IGNvbnRlbnQtPm1hcFJlY3RGcm9tSXRlbSh2aWV3cG9ydCwgdmlld3BvcnQt
PmJvdW5kaW5nUmVjdCgpKTsKLSAgICBjb25zdCBRUmVjdEYgdmlzaWJsZUFyZWEgPSBjb250ZW50
LT5ib3VuZGluZ1JlY3QoKS5pbnRlcnNlY3RlZCh2aWV3cG9ydEluQ29udGVudENvb3JkaW5hdGUp
OwotICAgIHJldHVybiB2aXNpYmxlQXJlYTsKLX0KLQotc3RhdGljIGlubGluZSBRUmVjdEYgY29u
dGVudFJlY3RJblZpZXdwb3J0Q29vcmRpbmF0ZShjb25zdCBRU0dJdGVtKiBjb250ZW50LCBjb25z
dCBRU0dJdGVtKiB2aWV3cG9ydCkKLXsKLSAgICByZXR1cm4gdmlld3BvcnQtPm1hcFJlY3RGcm9t
SXRlbShjb250ZW50LCBjb250ZW50LT5ib3VuZGluZ1JlY3QoKSk7Ci19Ci0KLS8vIFVwZGF0aW5n
IGNvbnRlbnQgcHJvcGVydGllcyBjYXVzZSB0aGUgbm90aWZ5IHNpZ25hbHMgdG8gYmUgc2VudCBi
eSB0aGUgY29udGVudCBpdGVtIGl0c2VsZi4KLS8vIFNpbmNlIHdlIG1hbmFnZSB0aG9zZSBkaWZm
ZXJlbnRseSwgd2UgZG8gbm90IHdhbnQgdG8gcmVzcG9uZAotLy8gdG8gdGhlbSB3aGVuIHdlIGFy
ZSB0aGUgb25lIGNoYW5naW5nIHRoZSBjb250ZW50LgotLy8KLS8vIFRoZSBndWFyZCBtYWtlIHN1
cmUgdGhlIHNpZ25hbCB2aWV3cG9ydFVwZGF0ZVJlcXVlc3RlZCgpIGlzIHNlbnQgaWYgbmVjZXNz
YXJ5LgotLy8gV2hlbiBtdWx0aXBsZSBndWFyZHMgYXJlIGFsaXZlLCB0aGVpciBsaWZldGltZSBt
dXN0IGJlIHBlcmZlY3RseSBpbWJyaWNhdGVkIChlLmcuIGlmIHVzZWQgb3VzaWRlIHN0YWNrIGZy
YW1lcykuCi0vLyBXZSByZWx5IG9uIHRoZSBmaXJzdCBvbmUgdG8gdHJpZ2dlciB0aGUgdXBkYXRl
IGF0IHRoZSBlbmQgc2luY2UgaXQgb25seSB1c2VzIG9uZSBib29sIGludGVybmFsbHkuCi0vLwot
Ly8gVGhlIHB1YmxpYyBtZXRob2RzIHNob3VsZCBjcmVhdGUgdGhlIGd1YXJkIGlmIHRoZXkgbWln
aHQgdXBkYXRlIGNvbnRlbnQuCi1jbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkIHsKLXB1YmxpYzoK
LSAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkKFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIHZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUpCi0gICAgICAgIDogdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZSh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQotICAgICAgICAsIHdhc1VwZGF0aW5nQ29udGVu
dCh2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2lzVXBkYXRpbmdDb250ZW50KQotICAgICAg
ICAsIHByZXZpb3VzUG9zaXRpb24odmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250ZW50
LT5wb3MoKSkKLSAgICAgICAgLCBwcmV2aW91c1NpemUodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS0+bV9jb250ZW50LT53aWR0aCgpLCB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRl
bnQtPmhlaWdodCgpKQotICAgICAgICAsIHByZXZpb3VzU2NhbGUodmlld3BvcnRJbnRlcmFjdGlv
bkVuZ2luZS0+bV9jb250ZW50LT5zY2FsZSgpKQotICAgIHsKLSAgICAgICAgdmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZS0+bV9pc1VwZGF0aW5nQ29udGVudCA9IHRydWU7Ci0gICAgfQotCi0gICAg
flZpZXdwb3J0VXBkYXRlR3VhcmQoKQotICAgIHsKLSAgICAgICAgaWYgKCF3YXNVcGRhdGluZ0Nv
bnRlbnQpIHsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uICE9IHZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUtPm1fY29udGVudC0+cG9zKCkKLSAgICAgICAgICAgICAgICAgICAgfHwg
cHJldmlvdXNTaXplLndpZHRoKCkgIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS0+bV9jb250
ZW50LT53aWR0aCgpCi0gICAgICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzU2l6ZS5oZWlnaHQo
KSAhPSB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2NvbnRlbnQtPmhlaWdodCgpCi0gICAg
ICAgICAgICAgICAgICAgIHx8IHByZXZpb3VzU2NhbGUgIT0gdmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZS0+bV9jb250ZW50LT5zY2FsZSgpKQotICAgICAgICAgICAgICAgIGVtaXQgdmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZS0+dmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKTsKLSAgICAgICAgfQot
ICAgICAgICB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lLT5tX2lzVXBkYXRpbmdDb250ZW50ID0g
d2FzVXBkYXRpbmdDb250ZW50OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiBjb25zdCB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOwotICAgIGNvbnN0
IGJvb2wgd2FzVXBkYXRpbmdDb250ZW50OwotICAgIGNvbnN0IFFQb2ludEYgcHJldmlvdXNQb3Np
dGlvbjsKLSAgICBjb25zdCBRU2l6ZUYgcHJldmlvdXNTaXplOwotICAgIGNvbnN0IHFyZWFsIHBy
ZXZpb3VzU2NhbGU7Ci19OwotCi1WaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lKGNvbnN0IFFTR0l0ZW0qIHZpZXdwb3J0LCBRU0dJdGVtKiBjb250ZW50
KQotICAgIDogbV92aWV3cG9ydCh2aWV3cG9ydCkKLSAgICAsIG1fY29udGVudChjb250ZW50KQot
ICAgICwgbV9pc1VwZGF0aW5nQ29udGVudChmYWxzZSkKLSAgICAsIG1fcGluY2hTdGFydFNjYWxl
KDEuZikKLXsKLSAgICByZXNldCgpOwotICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwoeENo
YW5nZWQoKSksIHRoaXMsIFNMT1QoY29udGVudFZpZXdwb3J0Q2hhbmdlZCgpKSwgUXQ6OkRpcmVj
dENvbm5lY3Rpb24pOwotICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwoeUNoYW5nZWQoKSks
IHRoaXMsIFNMT1QoY29udGVudFZpZXdwb3J0Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rp
b24pOwotICAgIGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwod2lkdGhDaGFuZ2VkKCkpLCB0aGlz
LCBTTE9UKGNvbnRlbnRWaWV3cG9ydENoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsK
LSAgICBjb25uZWN0KG1fY29udGVudCwgU0lHTkFMKGhlaWdodENoYW5nZWQoKSksIHRoaXMsIFNM
T1QoY29udGVudFZpZXdwb3J0Q2hhbmdlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwotICAg
IGNvbm5lY3QobV9jb250ZW50LCBTSUdOQUwoc2NhbGVDaGFuZ2VkKCkpLCB0aGlzLCBTTE9UKGNv
bnRlbnRWaWV3cG9ydENoYW5nZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKLX0KLQotVmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZTo6flZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKQotewot
fQotCi12b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnJlc2V0KCkKLXsKLSAgICBWaWV3
cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOwotICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3Mg
PSBVc2VySGFzTm90SW50ZXJhY3RlZFdpdGhDb250ZW50OwotICAgIHNldENvbnN0cmFpbnRzKENv
bnN0cmFpbnRzKCkpOwotfQotCi12b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnNldENv
bnN0cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKLXsKLSAgICBpZiAobV9j
b25zdHJhaW50cyA9PSBjb25zdHJhaW50cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklY
TUU6IGlmIGEgcGluY2ggZ2VzdHVyZSBpcyBvbmdvaW5nLCB3ZSBoYXZlIHRvOgotICAgIC8vIC1j
YW5jZWwgdGhlIGdlc3R1cmUgaWYgaXNVc2VyU2NhbGFibGUgYmVjb21lcyB0cnVlCi0gICAgLy8g
LXVwZGF0ZSB0aGUgcGFnZSBvbiB0aGUgZmx5IHdpdGhvdXQgbW9kaWZ5aW5nIGl0cyBwb3NpdGlv
bgotCi0gICAgLy8gRklYTUU6IGlmIGEgcGFuIGdlc3R1cmUgaXMgb25nb2luZywgd2UgaGF2ZSB0
bwotICAgIC8vIC11cGRhdGUgdGhlIHBhZ2Ugd2l0aG91dCBjaGFuZ2luZyB0aGUgcG9zaXRpb24K
LSAgICAvLyAtYW5pbWF0ZSB0aGUgcGFnZSBiYWNrIGluIHZpZXdwb3J0IGlmIG5lY2Vzc2FyeSAo
aWYgdGhlIHBhZ2UgaXMgZnVsbHkgaW4KLSAgICAvLyAgdmlld3BvcnQsIGl0IGRvZXMgbm90IHBh
biBob3Jpem9udGFsbHkgYW55bW9yZSkuCi0KLSAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJk
KHRoaXMpOwotICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50czsKLSAgICB1cGRhdGVDb250
ZW50SWZOZWVkZWQoKTsKLX0KLQotdm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5H
ZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgLy8gRklYTUU6IHN1c3BlbmQgdGhlIFdlYiBlbmdpbmUg
KHN0b3AgYW5pbWF0ZWQgR0lGLCBldGMpLgotICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHBoeXNp
Y3MgZm9yIHBhbm5pbmcgKHN0b3AgYW5pbWF0aW9uLCBldGMpLgotICAgIG1fdXNlckludGVyYWN0
aW9uRmxhZ3MgfD0gVXNlckhhc01vdmVkQ29udGVudDsKLX0KLQotdm9pZCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlUmVxdWVzdFVwZGF0ZShxcmVhbCBkZWx0YVgsIHFyZWFs
IGRlbHRhWSkKLXsKLSAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOwotCi0gICAg
UVBvaW50RiBpdGVtUG9zaXRpb25Jbkl0ZW1Db29yZHMgPSBtX2NvbnRlbnQtPm1hcEZyb21JdGVt
KG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBtX2NvbnRlbnQtPnBvcygpKTsKLSAgICBRUG9pbnRG
IGRlc3RJblZpZXdwb3J0Q29vcmRzID0gbV92aWV3cG9ydC0+bWFwRnJvbUl0ZW0obV9jb250ZW50
LCBpdGVtUG9zaXRpb25Jbkl0ZW1Db29yZHMgKyBRUG9pbnRGKGRlbHRhWCwgZGVsdGFZKSk7Ci0K
LSAgICBtX2NvbnRlbnQtPnNldFBvcyhkZXN0SW5WaWV3cG9ydENvb3Jkcyk7Ci0gICAgLy8gVGhp
cyBtdXN0IGJlIGVtaXR0ZWQgYmVmb3JlIHZpZXdwb3J0VXBkYXRlUmVxdWVzdGVkIHNvIHRoYXQg
dGhlIHdlYiBwcm9jZXNzIGtub3dzIHdoZXJlIHRvIGxvb2sgZm9yIHRpbGVzLgotICAgIGVtaXQg
dmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChRUG9pbnRGKC1kZWx0YVgsIC1kZWx0YVkp
KTsKLX0KLQotdm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpwYW5HZXN0dXJlQ2FuY2Vs
bGVkKCkKLXsKLSAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOwotICAgIC8vIEZJ
WE1FOiByZXNldCBwaHlzaWNzLgotICAgIHBhbkdlc3R1cmVFbmRlZCgpOwotfQotCi12b2lkIFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OnBhbkdlc3R1cmVFbmRlZCgpCi17Ci0gICAgVmlld3Bv
cnRVcGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKLSAgICBhbmltYXRlQ29udGVudEludG9Cb3VuZGFy
aWVzSWZOZWVkZWQoKTsKLSAgICAvLyBGSVhNRTogZW1pdCB2aWV3cG9ydFRyYWplY3RvcnlWZWN0
b3JDaGFuZ2VkKFFQb2ludEYoKSkgd2hlbiB0aGUgcGFuIHRocm93IGFuaW1hdGlvbiBlbmRzIGFu
ZCB0aGUgcGFnZSBzdG9wcyBtb3ZpbmcuCi19Ci0KLXZvaWQgVmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCi17Ci0gICAgaWYgKCFtX2NvbnN0cmFpbnRzLmlz
VXNlclNjYWxhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3BpbmNoVmlld3BvcnRVcGRh
dGVEZWZlcnJlciA9IGFkb3B0UHRyKG5ldyBWaWV3cG9ydFVwZGF0ZUd1YXJkKHRoaXMpKTsKLQot
ICAgIG1fdXNlckludGVyYWN0aW9uRmxhZ3MgfD0gVXNlckhhc1NjYWxlZENvbnRlbnQ7Ci0gICAg
bV91c2VySW50ZXJhY3Rpb25GbGFncyB8PSBVc2VySGFzTW92ZWRDb250ZW50OwotICAgIG1fcGlu
Y2hTdGFydFNjYWxlID0gbV9jb250ZW50LT5zY2FsZSgpOwotCi0gICAgLy8gUmVzZXQgdGhlIHRp
bGluZyBsb29rLWFoZWFkIHZlY3RvciBzbyB0aGF0IHRpbGVzIGFsbCBhcm91bmQgdGhlIHZpZXdw
b3J0IHdpbGwgYmUgcmVxdWVzdGVkIG9uIHBpbmNoLWVuZC4KLSAgICBlbWl0IHZpZXdwb3J0VHJh
amVjdG9yeVZlY3RvckNoYW5nZWQoUVBvaW50RigpKTsKLX0KLQotdm9pZCBWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmIHBp
bmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZhY3RvcikKLXsK
LSAgICBpZiAoIW1fY29uc3RyYWludHMuaXNVc2VyU2NhbGFibGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFZpZXdwb3J0VXBkYXRlR3VhcmQgZ3VhcmQodGhpcyk7Ci0KLSAgICAvLyAgQ2hhbmdl
cyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhl
IHpvb20gZmFjdG9yCi0gICAgLy8gIGRvZXMgbm90IGNoYW5nZS4gQm90aCB0aGUgem9vbSBhbmQg
dGhlIHBhbm5pbmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcGh5c2ljcyBlbmdpbmUu
Ci0gICAgY29uc3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNoU3RhcnRTY2FsZSAqIHRvdGFsU2NhbGVG
YWN0b3I7Ci0gICAgUVBvaW50RiBvbGRQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5t
YXBUb0l0ZW0obV9jb250ZW50LT5wYXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Db250ZW50Q29v
cmRpbmF0ZSk7Ci0gICAgbV9jb250ZW50LT5zZXRTY2FsZShzY2FsZSk7Ci0gICAgUVBvaW50RiBu
ZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5w
YXJlbnRJdGVtKCksIHBpbmNoQ2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSk7Ci0gICAgbV9jb250
ZW50LT5zZXRQb3MobV9jb250ZW50LT5wb3MoKSAtIChuZXdQaW5jaENlbnRlck9uUGFyZW50IC0g
b2xkUGluY2hDZW50ZXJPblBhcmVudCkpOwotfQotCi12b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25F
bmdpbmU6OnBpbmNoR2VzdHVyZUVuZGVkKCkKLXsKLSAgICBpZiAoIW1fY29uc3RyYWludHMuaXNV
c2VyU2NhbGFibGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIHsKLSAgICAgICAgVmlld3BvcnRV
cGRhdGVHdWFyZCBndWFyZCh0aGlzKTsKLSAgICAgICAgLy8gRklYTUU6IHJlc3VtZSB0aGUgZW5n
aW5lIGFmdGVyIHRoZSBhbmltYXRpb24uCi0gICAgICAgIGFuaW1hdGVDb250ZW50SW50b0JvdW5k
YXJpZXNJZk5lZWRlZCgpOwotICAgIH0KLSAgICBtX3BpbmNoVmlld3BvcnRVcGRhdGVEZWZlcnJl
ci5jbGVhcigpOwotfQotCi12b2lkIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6OmNvbnRlbnRW
aWV3cG9ydENoYW5nZWQoKQotewotICAgIGlmIChtX2lzVXBkYXRpbmdDb250ZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBWaWV3cG9ydFVwZGF0ZUd1YXJkIGd1YXJkKHRoaXMpOwotICAgIHVw
ZGF0ZUNvbnRlbnRJZk5lZWRlZCgpOwotCi0gICAgLy8gV2UgbXVzdCBub3RpZnkgdGhlIGNoYW5n
ZSBzbyB0aGUgY2xpZW50IGNhbiByZWx5IG9uIHVzIGZvciBhbGwgY2hhbmdlIG9mIEdlb21ldHJ5
LgotICAgIGVtaXQgdmlld3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKTsKLX0KLQotdm9pZCBWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50SWZOZWVkZWQoKQotewotICAgIHVwZGF0
ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7Ci0gICAgdXBkYXRlQ29udGVudFBvc2l0aW9uSWZOZWVk
ZWQoKTsKLX0KLQotdm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjp1cGRhdGVDb250ZW50
U2NhbGVJZk5lZWRlZCgpCi17Ci0gICAgY29uc3QgcXJlYWwgY3VycmVudENvbnRlbnRTY2FsZSA9
IG1fY29udGVudC0+c2NhbGUoKTsKLSAgICBxcmVhbCBjb250ZW50U2NhbGUgPSBtX2NvbnRlbnQt
PnNjYWxlKCk7Ci0gICAgaWYgKCEobV91c2VySW50ZXJhY3Rpb25GbGFncyAmIFVzZXJIYXNTY2Fs
ZWRDb250ZW50KSkKLSAgICAgICAgY29udGVudFNjYWxlID0gbV9jb25zdHJhaW50cy5pbml0aWFs
U2NhbGU7Ci0KLSAgICBjb250ZW50U2NhbGUgPSBxQm91bmQobV9jb25zdHJhaW50cy5taW5pbXVt
U2NhbGUsIGNvbnRlbnRTY2FsZSwgbV9jb25zdHJhaW50cy5tYXhpbXVtU2NhbGUpOwotCi0gICAg
aWYgKGNvbnRlbnRTY2FsZSAhPSBjdXJyZW50Q29udGVudFNjYWxlKSB7Ci0gICAgICAgIGNvbnN0
IFFQb2ludEYgY2VudGVyT2ZJbnRlcmVzdCA9IHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0
ZShtX2NvbnRlbnQsIG1fdmlld3BvcnQpLmNlbnRlcigpOwotICAgICAgICBzY2FsZUNvbnRlbnQo
Y2VudGVyT2ZJbnRlcmVzdCwgY29udGVudFNjYWxlKTsKLSAgICB9Ci19Ci0KLXZvaWQgVmlld3Bv
cnRJbnRlcmFjdGlvbkVuZ2luZTo6dXBkYXRlQ29udGVudFBvc2l0aW9uSWZOZWVkZWQoKQotewot
ICAgIGlmICghKG1fdXNlckludGVyYWN0aW9uRmxhZ3MgJiBVc2VySGFzTW92ZWRDb250ZW50KSkg
ewotICAgICAgICBtX2NvbnRlbnQtPnNldFgoKG1fdmlld3BvcnQtPndpZHRoKCkgLSBjb250ZW50
UmVjdEluVmlld3BvcnRDb29yZGluYXRlKG1fY29udGVudCwgbV92aWV3cG9ydCkud2lkdGgoKSkg
LyAyKTsKLSAgICAgICAgbV9jb250ZW50LT5zZXRZKDApOwotICAgIH0KLQotICAgIC8vIEZJWE1F
OiBpZiB0aGUgaXRlbSBjYW4gYmUgZnVsbHkgaW4gdGhlIHZpZXdwb3J0IGFuZCBpcyBvdmVyIGEg
c2lkZSwgcHVzaCBpdCBiYWNrIGluIHZpZXcKLSAgICAvLyBGSVhNRTogaWYgdGhlIGl0ZW0gY2Fu
bm90IGJlIGZ1bGx5IGluIHZpZXdwb3J0LCBhbmQgaXMgbm90IGNvdmVyaW5nIHRoZSB2aWV3cG9y
dCwgcHVzaCBpdCBiYWNrIGluIHZpZXcKLX0KLQotdm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lOjphbmltYXRlQ29udGVudEludG9Cb3VuZGFyaWVzSWZOZWVkZWQoKQotewotICAgIGFuaW1h
dGVDb250ZW50U2NhbGVJbnRvQm91bmRhcmllc0lmTmVlZGVkKCk7Ci0gICAgYW5pbWF0ZUNvbnRl
bnRQb3NpdGlvbkludG9Cb3VuZGFyaWVzSWZOZWVkZWQoKTsKLX0KLQotdm9pZCBWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFBvc2l0aW9uSW50b0JvdW5kYXJpZXNJZk5l
ZWRlZCgpCi17Ci0gICAgY29uc3QgUVJlY3RGIGNvbnRlbnRHZW9tZXRyeSA9IG1fdmlld3BvcnQt
Pm1hcFJlY3RGcm9tSXRlbShtX2NvbnRlbnQsIG1fY29udGVudC0+Ym91bmRpbmdSZWN0KCkpOwot
ICAgIFFQb2ludEYgbmV3UG9zID0gY29udGVudEdlb21ldHJ5LnRvcExlZnQoKTsKLQotICAgIC8v
IEhvcml6b250YWwgY29ycmVjdGlvbi4KLSAgICBpZiAoY29udGVudEdlb21ldHJ5LndpZHRoKCkg
PCBtX3ZpZXdwb3J0LT53aWR0aCgpKQotICAgICAgICBuZXdQb3Muc2V0WCgobV92aWV3cG9ydC0+
d2lkdGgoKSAtIGNvbnRlbnRHZW9tZXRyeS53aWR0aCgpKSAvIDIpOwotICAgIGVsc2UgewotICAg
ICAgICBuZXdQb3Muc2V0WChxTWluPHFyZWFsPigwLiwgbmV3UG9zLngoKSkpOwotICAgICAgICBj
b25zdCBxcmVhbCByaWdodFNpZGVHYXAgPSBtX3ZpZXdwb3J0LT5ib3VuZGluZ1JlY3QoKS5yaWdo
dCgpIC0gY29udGVudEdlb21ldHJ5LnJpZ2h0KCk7Ci0gICAgICAgIGlmIChyaWdodFNpZGVHYXAg
PiAwLikKLSAgICAgICAgICAgIG5ld1Bvcy5zZXRYKG5ld1Bvcy54KCkgKyByaWdodFNpZGVHYXAp
OwotICAgIH0KLQotICAgIC8vIFZlcnRpY2FsIGNvcnJlY3Rpb24uCi0gICAgaWYgKGNvbnRlbnRH
ZW9tZXRyeS5oZWlnaHQoKSA8IG1fdmlld3BvcnQtPmhlaWdodCgpKQotICAgICAgICBuZXdQb3Mu
c2V0WSgwKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbmV3UG9zLnNldFkocU1pbjxxcmVhbD4oMC4s
IG5ld1Bvcy55KCkpKTsKLSAgICAgICAgY29uc3QgcXJlYWwgYm90dG9tU2lkZUdhcCA9IG1fdmll
d3BvcnQtPmJvdW5kaW5nUmVjdCgpLmJvdHRvbSgpIC0gY29udGVudEdlb21ldHJ5LmJvdHRvbSgp
OwotICAgICAgICBpZiAoYm90dG9tU2lkZUdhcCA+IDAuKQotICAgICAgICAgICAgbmV3UG9zLnNl
dFkobmV3UG9zLnkoKSArIGJvdHRvbVNpZGVHYXApOwotICAgIH0KLQotICAgIGlmIChuZXdQb3Mg
IT0gbV9jb250ZW50LT5wb3MoKSkKLSAgICAgICAgLy8gRklYTUU6IERvIHlvdSBrbm93IHdoYXQg
QU5JTUFURSBtZWFucz8KLSAgICAgICAgbV9jb250ZW50LT5zZXRQb3MobmV3UG9zKTsKLX0KLQot
dm9pZCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjphbmltYXRlQ29udGVudFNjYWxlSW50b0Jv
dW5kYXJpZXNJZk5lZWRlZCgpCi17Ci0gICAgY29uc3QgcXJlYWwgY3VycmVudFNjYWxlID0gbV9j
b250ZW50LT5zY2FsZSgpOwotICAgIGNvbnN0IHFyZWFsIGJvdW5kZWRTY2FsZSA9IHFCb3VuZCht
X2NvbnN0cmFpbnRzLm1pbmltdW1TY2FsZSwgY3VycmVudFNjYWxlLCBtX2NvbnN0cmFpbnRzLm1h
eGltdW1TY2FsZSk7Ci0gICAgaWYgKGN1cnJlbnRTY2FsZSAhPSBib3VuZGVkU2NhbGUpIHsKLSAg
ICAgICAgLy8gRklYTUU6IERvIHlvdSBrbm93IHdoYXQgQU5JTUFURSBtZWFucz8KLSAgICAgICAg
Y29uc3QgUVBvaW50RiBjZW50ZXJPZkludGVyZXN0ID0gdmlzaWJsZVJlY3RJbkNvbnRlbnRDb29y
ZGluYXRlKG1fY29udGVudCwgbV92aWV3cG9ydCkuY2VudGVyKCk7Ci0gICAgICAgIHNjYWxlQ29u
dGVudChjZW50ZXJPZkludGVyZXN0LCBib3VuZGVkU2NhbGUpOwotICAgIH0KLX0KLQotdm9pZCBW
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYgY2Vu
dGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpCi17Ci0gICAgUVBvaW50RiBvbGRQ
aW5jaENlbnRlck9uUGFyZW50ID0gbV9jb250ZW50LT5tYXBUb0l0ZW0obV9jb250ZW50LT5wYXJl
bnRJdGVtKCksIGNlbnRlckluQ29udGVudENvb3JkaW5hdGUpOwotICAgIG1fY29udGVudC0+c2V0
U2NhbGUoc2NhbGUpOwotICAgIFFQb2ludEYgbmV3UGluY2hDZW50ZXJPblBhcmVudCA9IG1fY29u
dGVudC0+bWFwVG9JdGVtKG1fY29udGVudC0+cGFyZW50SXRlbSgpLCBjZW50ZXJJbkNvbnRlbnRD
b29yZGluYXRlKTsKLSAgICBtX2NvbnRlbnQtPnNldFBvcyhtX2NvbnRlbnQtPnBvcygpIC0gKG5l
d1BpbmNoQ2VudGVyT25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7Ci19Ci0KLSNp
bmNsdWRlICJtb2NfVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5jcHAiCi0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9uRW5naW5l
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2lu
ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDQwODdlOGE0MjQ1ODQwYzYzMGJi
NTZkN2FjYzM0ZmRhNGE2ZTUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbkB3ZWJraXQub3JnPgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lm
bmRlZiBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2gKLSNkZWZpbmUgVmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZV9oCi0KLSNpbmNsdWRlICJPd25QdHIuaCIKLSNpbmNsdWRlICJxd2Via2l0Z2xv
YmFsLmgiCi0jaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0KLVFUX0JFR0lOX05BTUVTUEFDRQot
Y2xhc3MgUVBvaW50RjsKLWNsYXNzIFFTR0l0ZW07Ci1RVF9FTkRfTkFNRVNQQUNFCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBWaWV3cG9ydFVwZGF0ZUd1YXJkOwotCi1jbGFzcyBWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lIDogcHVibGljIFFPYmplY3QgewotICAgIFFfT0JKRUNUCi0K
LXB1YmxpYzoKLSAgICBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKGNvbnN0IFFTR0l0ZW0qLCBR
U0dJdGVtKik7Ci0gICAgflZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKTsKLQotICAgIHN0cnVj
dCBDb25zdHJhaW50cyB7Ci0gICAgICAgIENvbnN0cmFpbnRzKCkKLSAgICAgICAgICAgIDogaW5p
dGlhbFNjYWxlKDEuMCkKLSAgICAgICAgICAgICwgbWluaW11bVNjYWxlKDAuMjUpCi0gICAgICAg
ICAgICAsIG1heGltdW1TY2FsZSgxLjgpCi0gICAgICAgICAgICAsIGlzVXNlclNjYWxhYmxlKHRy
dWUpCi0gICAgICAgIHsgfQotCi0gICAgICAgIHFyZWFsIGluaXRpYWxTY2FsZTsKLSAgICAgICAg
cXJlYWwgbWluaW11bVNjYWxlOwotICAgICAgICBxcmVhbCBtYXhpbXVtU2NhbGU7Ci0gICAgICAg
IGJvb2wgaXNVc2VyU2NhbGFibGU7Ci0gICAgfTsKLQotICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2
b2lkIHNldENvbnN0cmFpbnRzKGNvbnN0IENvbnN0cmFpbnRzJik7Ci0KLSAgICB2b2lkIHBhbkdl
c3R1cmVTdGFydGVkKCk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlUmVxdWVzdFVwZGF0ZShxcmVhbCBk
ZWx0YVgsIHFyZWFsIGRlbHRhWSk7Ci0gICAgdm9pZCBwYW5HZXN0dXJlQ2FuY2VsbGVkKCk7Ci0g
ICAgdm9pZCBwYW5HZXN0dXJlRW5kZWQoKTsKLQotICAgIHZvaWQgcGluY2hHZXN0dXJlU3RhcnRl
ZCgpOwotICAgIHZvaWQgcGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZShjb25zdCBRUG9pbnRGJiBw
aW5jaENlbnRlckluQ29udGVudENvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2NhbGVGYWN0b3IpOwot
ICAgIHZvaWQgcGluY2hHZXN0dXJlRW5kZWQoKTsKLQotUV9TSUdOQUxTOgotICAgIHZvaWQgdmll
d3BvcnRVcGRhdGVSZXF1ZXN0ZWQoKTsKLSAgICB2b2lkIHZpZXdwb3J0VHJhamVjdG9yeVZlY3Rv
ckNoYW5nZWQoY29uc3QgUVBvaW50RiYpOwotCi1wcml2YXRlIFFfU0xPVFM6Ci0gICAgLy8gUmVz
cG9uZCB0byBjaGFuZ2VzIG9mIGNvbnRlbnQgdGhhdCBhcmUgbm90IGRyaXZlbiBieSB1cywgbGlr
ZSB0aGUgcGFnZSByZXNpemluZyBpdHNlbGYuCi0gICAgdm9pZCBjb250ZW50Vmlld3BvcnRDaGFu
Z2VkKCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50SWZOZWVkZWQoKTsKLSAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRTY2FsZUlmTmVlZGVkKCk7Ci0gICAgdm9pZCB1cGRhdGVDb250
ZW50UG9zaXRpb25JZk5lZWRlZCgpOwotCi0gICAgdm9pZCBhbmltYXRlQ29udGVudEludG9Cb3Vu
ZGFyaWVzSWZOZWVkZWQoKTsKLSAgICB2b2lkIGFuaW1hdGVDb250ZW50UG9zaXRpb25JbnRvQm91
bmRhcmllc0lmTmVlZGVkKCk7Ci0gICAgdm9pZCBhbmltYXRlQ29udGVudFNjYWxlSW50b0JvdW5k
YXJpZXNJZk5lZWRlZCgpOwotCi0gICAgdm9pZCBzY2FsZUNvbnRlbnQoY29uc3QgUVBvaW50RiYg
Y2VudGVySW5Db250ZW50Q29vcmRpbmF0ZSwgcXJlYWwgc2NhbGUpOwotCi0gICAgZnJpZW5kIGNs
YXNzIFZpZXdwb3J0VXBkYXRlR3VhcmQ7Ci0KLSAgICBjb25zdCBRU0dJdGVtKiBjb25zdCBtX3Zp
ZXdwb3J0OwotICAgIFFTR0l0ZW0qIGNvbnN0IG1fY29udGVudDsKLQotICAgIENvbnN0cmFpbnRz
IG1fY29uc3RyYWludHM7Ci0gICAgYm9vbCBtX2lzVXBkYXRpbmdDb250ZW50OwotICAgIE93blB0
cjxWaWV3cG9ydFVwZGF0ZUd1YXJkPiBtX3BpbmNoVmlld3BvcnRVcGRhdGVEZWZlcnJlcjsKLSAg
ICBlbnVtIFVzZXJJbnRlcmFjdGlvbkZsYWcgewotICAgICAgICBVc2VySGFzTm90SW50ZXJhY3Rl
ZFdpdGhDb250ZW50ID0gMCwKLSAgICAgICAgVXNlckhhc01vdmVkQ29udGVudCA9IDEsCi0gICAg
ICAgIFVzZXJIYXNTY2FsZWRDb250ZW50ID0gMgotICAgIH07Ci0gICAgUV9ERUNMQVJFX0ZMQUdT
KFVzZXJJbnRlcmFjdGlvbkZsYWdzLCBVc2VySW50ZXJhY3Rpb25GbGFnKTsKLSAgICBVc2VySW50
ZXJhY3Rpb25GbGFncyBtX3VzZXJJbnRlcmFjdGlvbkZsYWdzOwotCi0gICAgcXJlYWwgbV9waW5j
aFN0YXJ0U2NhbGU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzJiBhLCBjb25zdCBWaWV3cG9ydEludGVyYWN0
aW9uRW5naW5lOjpDb25zdHJhaW50cyYgYikKLXsKLSAgICByZXR1cm4gYS5pbml0aWFsU2NhbGUg
PT0gYi5pbml0aWFsU2NhbGUKLSAgICAgICAgICAgICYmIGEubWluaW11bVNjYWxlID09IGIubWlu
aW11bVNjYWxlCi0gICAgICAgICAgICAmJiBhLm1heGltdW1TY2FsZSA9PSBiLm1heGltdW1TY2Fs
ZQotICAgICAgICAgICAgJiYgYS5pc1VzZXJTY2FsYWJsZSA9PSBiLmlzVXNlclNjYWxhYmxlOwot
fQotCi19Ci0KLSNlbmRpZiAvKiBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVByb3h5UXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5j
cHAKaW5kZXggOTYwMmQ0MzYxODU5YzQ3ODYyZWI1OWY4YzBjZGZhMmIyNTFkMTlkMC4uYTFjNWE0
NTJlOTVhM2JlYjBmZjUxMmJjODFiMDIxNThhNGM0YzJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5jcHAKQEAgLTM5LDEz
ICszOSwxMyBAQCBRX0RFQ0xBUkVfTUVUQVRZUEUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYkNvbnRleHRNZW51UHJveHlRdDo6V2Vi
Q29udGV4dE1lbnVQcm94eVF0KFdlYlBhZ2VQcm94eSogcGFnZVByb3h5LCBWaWV3SW50ZXJmYWNl
KiB2aWV3SW50ZXJmYWNlKQorV2ViQ29udGV4dE1lbnVQcm94eVF0OjpXZWJDb250ZXh0TWVudVBy
b3h5UXQoV2ViUGFnZVByb3h5KiBwYWdlUHJveHksIFF0Vmlld0ludGVyZmFjZSogdmlld0ludGVy
ZmFjZSkKICAgICA6IG1fd2ViUGFnZVByb3h5KHBhZ2VQcm94eSkKICAgICAsIG1fdmlld0ludGVy
ZmFjZSh2aWV3SW50ZXJmYWNlKQogewogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHlRdD4gV2ViQ29udGV4dE1lbnVQcm94eVF0OjpjcmVhdGUoV2ViUGFnZVByb3h5KiBwYWdlUHJv
eHksIFZpZXdJbnRlcmZhY2UqIHZpZXdJbnRlcmZhY2UpCitQYXNzUmVmUHRyPFdlYkNvbnRleHRN
ZW51UHJveHlRdD4gV2ViQ29udGV4dE1lbnVQcm94eVF0OjpjcmVhdGUoV2ViUGFnZVByb3h5KiBw
YWdlUHJveHksIFF0Vmlld0ludGVyZmFjZSogdmlld0ludGVyZmFjZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51UHJveHlRdChwYWdlUHJveHksIHZpZXdJbnRlcmZh
Y2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250
ZXh0TWVudVByb3h5UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJDb250ZXh0
TWVudVByb3h5UXQuaAppbmRleCBhYWRiNjU4ZjRlNWNiMGE0MzMzNjVjMTcwMGI1NzFlMWQzNjU5
YWM4Li5lZWQyNjA1MjllNjJmMzI1OGQ3NzI2YWNhNTVmYTFkYTBmYzIxMjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViQ29udGV4dE1lbnVQcm94eVF0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJveHlRdC5oCkBA
IC0zNSw3ICszNSw3IEBAIGNsYXNzIFFNZW51OwogY2xhc3MgUXRXZWJQYWdlUHJveHk7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotY2xhc3MgVmlld0ludGVyZmFjZTsKK2NsYXNzIFF0Vmlld0ludGVy
ZmFjZTsKIGNsYXNzIFdlYkNvbnRleHRNZW51SXRlbURhdGE7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiB9CkBAIC00NSwxMyArNDUsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb250
ZXh0TWVudVByb3h5UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYkNvbnRleHRNZW51UHJv
eHkgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29u
dGV4dE1lbnVQcm94eVF0PiBjcmVhdGUoV2ViUGFnZVByb3h5KiwgVmlld0ludGVyZmFjZSopOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJveHlRdD4gY3JlYXRlKFdlYlBh
Z2VQcm94eSosIFF0Vmlld0ludGVyZmFjZSopOwogCiBwcml2YXRlIFFfU0xPVFM6CiAgICAgdm9p
ZCBhY3Rpb25UcmlnZ2VyZWQoYm9vbCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQ29udGV4dE1lbnVQ
cm94eVF0KFdlYlBhZ2VQcm94eSosIFZpZXdJbnRlcmZhY2UqKTsKKyAgICBXZWJDb250ZXh0TWVu
dVByb3h5UXQoV2ViUGFnZVByb3h5KiwgUXRWaWV3SW50ZXJmYWNlKik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+Jik7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVDb250
ZXh0TWVudSgpOwpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIFBhc3NPd25QdHI8UU1l
bnU+IGNyZWF0ZUNvbnRleHRNZW51KGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiYgaXRlbXMpIGNvbnN0OwogCiAgICAgV2ViUGFnZVByb3h5KiBjb25zdCBtX3dlYlBhZ2VQcm94
eTsKLSAgICBWaWV3SW50ZXJmYWNlKiBjb25zdCBtX3ZpZXdJbnRlcmZhY2U7CisgICAgUXRWaWV3
SW50ZXJmYWNlKiBjb25zdCBtX3ZpZXdJbnRlcmZhY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29t
bWFuZFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2ZGRhZmZlMmRhYjg0NzdhOWQ5
YmNkNGEzZjZjNTNkZmUyNmEzMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJVbmRvQ29tbWFuZFF0LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdlYlVuZG9Db21tYW5kUXQ6OldlYlVuZG9Db21tYW5kUXQo
UGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBRVW5kb0NvbW1hbmQqIHBh
cmVudCkKLSAgICA6IFFVbmRvQ29tbWFuZChwYXJlbnQpCi0gICAgLCBtX2NvbW1hbmQoY29tbWFu
ZCkKLSAgICAsIG1fZmlyc3QodHJ1ZSkKLSAgICAsIG1faW5VbmRvUmVkbyhmYWxzZSkKLXsKLX0K
LQotV2ViVW5kb0NvbW1hbmRRdDo6fldlYlVuZG9Db21tYW5kUXQoKQotewotfQotCi12b2lkIFdl
YlVuZG9Db21tYW5kUXQ6OnJlZG8oKQotewotICAgIG1faW5VbmRvUmVkbyA9IHRydWU7Ci0KLSAg
ICAvLyBJZ25vcmUgdGhlIGZpcnN0IHJlZG8gY2FsbGVkIGZyb20gUVVuZG9TdGFjazo6cHVzaCgp
LgotICAgIGlmIChtX2ZpcnN0KSB7Ci0gICAgICAgIG1fZmlyc3QgPSBmYWxzZTsKLSAgICAgICAg
bV9pblVuZG9SZWRvID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1f
Y29tbWFuZCkKLSAgICAgICAgbV9jb21tYW5kLT5yZWFwcGx5KCk7Ci0KLSAgICBtX2luVW5kb1Jl
ZG8gPSBmYWxzZTsKLX0KLQotdm9pZCBXZWJVbmRvQ29tbWFuZFF0Ojp1bmRvKCkKLXsKLSAgICBt
X2luVW5kb1JlZG8gPSB0cnVlOwotCi0gICAgaWYgKG1fY29tbWFuZCkKLSAgICAgICAgbV9jb21t
YW5kLT51bmFwcGx5KCk7Ci0KLSAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViVW5kb0NvbW1hbmRRdC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMTZhNmVjM2RjZWE5YmQ3NDZlNDVhNmM3NDg0NDIxZjE1ZDA3MjAw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJVbmRvQ29tbWFuZFF0LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3Rh
aWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgV2ViVW5kb0NvbW1hbmRR
dF9oCi0jZGVmaW5lIFdlYlVuZG9Db21tYW5kUXRfaAotCi0jaW5jbHVkZSAiV2ViRWRpdENvbW1h
bmRQcm94eS5oIgotI2luY2x1ZGUgPFFVbmRvQ29tbWFuZD4KLSNpbmNsdWRlIDxxZ2xvYmFsLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1jbGFzcyBXZWJVbmRvQ29tbWFuZFF0IDogcHVi
bGljIFFVbmRvQ29tbWFuZCB7Ci1wdWJsaWM6Ci0gICAgV2ViVW5kb0NvbW1hbmRRdChQYXNzUmVm
UHRyPFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eT4sIFFVbmRvQ29tbWFuZCogcGFyZW50ID0g
MCk7Ci0gICAgfldlYlVuZG9Db21tYW5kUXQoKTsKLQotICAgIHZvaWQgcmVkbygpOwotICAgIHZv
aWQgdW5kbygpOwotCi0gICAgYm9vbCBpblVuZG9SZWRvKCkgY29uc3QgeyByZXR1cm4gbV9pblVu
ZG9SZWRvOyB9OwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5k
UHJveHk+IG1fY29tbWFuZDsKLSAgICBib29sIG1fZmlyc3Q7Ci0gICAgYm9vbCBtX2luVW5kb1Jl
ZG87Ci19OwotCi0jZW5kaWYgLy8gV2ViVW5kb0NvbW1hbmRRdF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzcyZDFlZDgyZDYyNzAxNGUxMWM5MTZlN2ZmZWRiMjJjNzUy
M2ZmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh
bTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVk
ZSAicWRlc2t0b3B3ZWJwYWdlcHJveHkuaCIKLQotI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5o
IgotI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlld19wLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0FyZWFQ
cm94eUltcGwuaCIKLSNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5UXREZXNr
dG9wLmgiCi0jaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgotI2luY2x1ZGUgPFFFdmVudD4KLSNpbmNs
dWRlIDxRR3JhcGhpY3NTY2VuZURyYWdEcm9wRXZlbnQ+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzV2lk
Z2V0PgotI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lvbi5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KLXN0YXRpYyBpbmxpbmUgUXQ6OkRyb3BBY3Rpb24gZHJhZ09wZXJhdGlvblRvRHJvcEFj
dGlvbih1bnNpZ25lZCBkcmFnT3BlcmF0aW9uKQotewotICAgIFF0OjpEcm9wQWN0aW9uIHJlc3Vs
dCA9IFF0OjpJZ25vcmVBY3Rpb247Ci0gICAgaWYgKGRyYWdPcGVyYXRpb24gJiBEcmFnT3BlcmF0
aW9uQ29weSkKLSAgICAgICAgcmVzdWx0ID0gUXQ6OkNvcHlBY3Rpb247Ci0gICAgZWxzZSBpZiAo
ZHJhZ09wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQotICAgICAgICByZXN1bHQgPSBRdDo6
TW92ZUFjdGlvbjsKLSAgICBlbHNlIGlmIChkcmFnT3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkdl
bmVyaWMpCi0gICAgICAgIHJlc3VsdCA9IFF0OjpNb3ZlQWN0aW9uOwotICAgIGVsc2UgaWYgKGRy
YWdPcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKLSAgICAgICAgcmVzdWx0ID0gUXQ6Okxp
bmtBY3Rpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUURlc2t0b3BXZWJQYWdlUHJveHk6
OlFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqIGRlc2t0b3BXZWJW
aWV3LCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwKQotICAg
IDogUXRXZWJQYWdlUHJveHkoZGVza3RvcFdlYlZpZXcsIGRlc2t0b3BXZWJWaWV3LCBjb250ZXh0
LCBwYWdlR3JvdXApCi17Ci0gICAgaW5pdCgpOwotfQotCi1QYXNzT3duUHRyPERyYXdpbmdBcmVh
UHJveHk+IFFEZXNrdG9wV2ViUGFnZVByb3h5OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKLXsK
LSAgICByZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5n
ZXQoKSk7Ci19Ci0KLXZvaWQgUURlc2t0b3BXZWJQYWdlUHJveHk6OnBhaW50Q29udGVudChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIGFyZWEpCi17Ci0gICAgLy8gRklYTUU6IERvIHNv
bWV0aGluZyB3aXRoIHRoZSB1bnBhaW50ZWQgcmVnaW9uPwotICAgIFdlYkNvcmU6OlJlZ2lvbiB1
bnBhaW50ZWRSZWdpb247Ci0gICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPiht
X3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSktPnBhaW50KHBhaW50ZXIsIGFyZWEsIHVucGFp
bnRlZFJlZ2lvbik7Ci19Ci0KLXZvaWQgUURlc2t0b3BXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0
QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJikKLXsKLSAgICAvLyBX
ZSBpZ25vcmUgdGhlIHZpZXdwb3J0IGRlZmluaXRpb24gb24gdGhlIERlc2t0b3AuCi19Ci0KLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotdm9pZCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6ZG9uZVdp
dGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFu
ZGxlZCkKLXsKLSAgICAvLyBXZSBkbyBub3QgaGFuZGxlIHRvdWNoIG9uIERlc2t0b3AgZm9yIG5v
dywgdGhlIGV2ZW50cyBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIGZvcndhcmRlZCB0byB0aGUgV2Vi
UHJvY2Vzcy4KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLSNlbmRpZgotCi1QYXNzUmVm
UHRyPFdlYlBvcHVwTWVudVByb3h5PiBRRGVza3RvcFdlYlBhZ2VQcm94eTo6Y3JlYXRlUG9wdXBN
ZW51UHJveHkoV2ViUGFnZVByb3h5KikKLXsKLSAgICBRU0dJdGVtKiB3ZWJWaWV3SXRlbSA9IHN0
YXRpY19jYXN0PFFEZXNrdG9wV2ViVmlld1ByaXZhdGUqPihtX3ZpZXdJbnRlcmZhY2UpLT5xOwot
ICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eVF0RGVza3RvcDo6Y3JlYXRlKG1fd2ViUGFnZVBy
b3h5LmdldCgpLCB3ZWJWaWV3SXRlbSk7Ci19Ci0KLWJvb2wgUURlc2t0b3BXZWJQYWdlUHJveHk6
OmhhbmRsZUV2ZW50KFFFdmVudCogZXYpCi17Ci0gICAgc3dpdGNoIChldi0+dHlwZSgpKSB7Ci0g
ICAgY2FzZSBRRXZlbnQ6Ok1vdXNlTW92ZToKLSAgICAgICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92
ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UU1vdXNlRXZlbnQqPihldikpOwotICAgIGNhc2UgUUV2
ZW50OjpNb3VzZUJ1dHRvblByZXNzOgotICAgICAgICByZXR1cm4gaGFuZGxlTW91c2VQcmVzc0V2
ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8UU1vdXNlRXZlbnQqPihldikpOwotICAgIGNhc2UgUUV2ZW50
OjpNb3VzZUJ1dHRvblJlbGVhc2U6Ci0gICAgICAgIHJldHVybiBoYW5kbGVNb3VzZVJlbGVhc2VF
dmVudChyZWludGVycHJldF9jYXN0PFFNb3VzZUV2ZW50Kj4oZXYpKTsKLSAgICBjYXNlIFFFdmVu
dDo6TW91c2VCdXR0b25EYmxDbGljazoKLSAgICAgICAgcmV0dXJuIGhhbmRsZU1vdXNlRG91Ymxl
Q2xpY2tFdmVudChyZWludGVycHJldF9jYXN0PFFNb3VzZUV2ZW50Kj4oZXYpKTsKLSAgICBjYXNl
IFFFdmVudDo6V2hlZWw6Ci0gICAgICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KHJlaW50ZXJw
cmV0X2Nhc3Q8UVdoZWVsRXZlbnQqPihldikpOwotICAgIGNhc2UgUUV2ZW50OjpIb3ZlckxlYXZl
OgotICAgICAgICByZXR1cm4gaGFuZGxlSG92ZXJMZWF2ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8
UUhvdmVyRXZlbnQqPihldikpOwotICAgIGNhc2UgUUV2ZW50OjpIb3ZlckVudGVyOiAvLyBGYWxs
LXRocm91Z2gsIGZvciBXZWJLaXQgdGhlIGRpc3RpbmN0aW9uIGRvZXNuJ3QgbWF0dGVyLgotICAg
IGNhc2UgUUV2ZW50OjpIb3Zlck1vdmU6Ci0gICAgICAgIHJldHVybiBoYW5kbGVIb3Zlck1vdmVF
dmVudChyZWludGVycHJldF9jYXN0PFFIb3ZlckV2ZW50Kj4oZXYpKTsKLSAgICBjYXNlIFFFdmVu
dDo6RHJhZ0VudGVyOgotICAgICAgICByZXR1cm4gaGFuZGxlRHJhZ0VudGVyRXZlbnQocmVpbnRl
cnByZXRfY2FzdDxRRHJhZ0VudGVyRXZlbnQqPihldikpOwotICAgIGNhc2UgUUV2ZW50OjpEcmFn
TGVhdmU6Ci0gICAgICAgIHJldHVybiBoYW5kbGVEcmFnTGVhdmVFdmVudChyZWludGVycHJldF9j
YXN0PFFEcmFnTGVhdmVFdmVudCo+KGV2KSk7Ci0gICAgY2FzZSBRRXZlbnQ6OkRyYWdNb3ZlOgot
ICAgICAgICByZXR1cm4gaGFuZGxlRHJhZ01vdmVFdmVudChyZWludGVycHJldF9jYXN0PFFEcmFn
TW92ZUV2ZW50Kj4oZXYpKTsKLSAgICBjYXNlIFFFdmVudDo6RHJvcDoKLSAgICAgICAgcmV0dXJu
IGhhbmRsZURyb3BFdmVudChyZWludGVycHJldF9jYXN0PFFEcm9wRXZlbnQqPihldikpOwotICAg
IH0KLSAgICByZXR1cm4gUXRXZWJQYWdlUHJveHk6OmhhbmRsZUV2ZW50KGV2KTsKLX0KLQotYm9v
bCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQq
IGV2KQotewotICAgIC8vIEZvciBzb21lIHJlYXNvbiBtb3VzZSBwcmVzcyByZXN1bHRzIGluIG1v
dXNlIGhvdmVyICh3aGljaCBpcwotICAgIC8vIGNvbnZlcnRlZCB0byBtb3VzZSBtb3ZlIGZvciBX
ZWJLaXQpLiBXZSBpZ25vcmUgdGhlc2UgaG92ZXIKLSAgICAvLyBldmVudHMgYnkgY29tcGFyaW5n
IGxhc3RQb3Mgd2l0aCBuZXdQb3MuCi0gICAgLy8gTk9URTogbGFzdFBvcyBmcm9tIHRoZSBldmVu
dCBhbHdheXMgY29tZXMgZW1wdHksIHNvIHdlIHdvcmsKLSAgICAvLyBhcm91bmQgdGhhdCBoZXJl
LgotICAgIHN0YXRpYyBRUG9pbnRGIGxhc3RQb3MgPSBRUG9pbnRGKCk7Ci0gICAgaWYgKGxhc3RQ
b3MgPT0gZXYtPnBvcygpKQotICAgICAgICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKLSAgICBs
YXN0UG9zID0gZXYtPnBvcygpOwotCi0gICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudChldiwgLypldmVudENsaWNrQ291bnQ9Ki8wKSk7Ci0KLSAg
ICByZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKLX0KLQotYm9vbCBRRGVza3RvcFdlYlBhZ2VQcm94
eTo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldikKLXsKLSAgICBpZiAobV90
cmlwbGVDbGlja1RpbWVyLmlzQWN0aXZlKCkgJiYgKGV2LT5wb3MoKSAtIG1fdHJpcGxlQ2xpY2sp
Lm1hbmhhdHRhbkxlbmd0aCgpIDwgUUFwcGxpY2F0aW9uOjpzdGFydERyYWdEaXN0YW5jZSgpKSB7
Ci0gICAgICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNl
RXZlbnQoZXYsIC8qZXZlbnRDbGlja0NvdW50PSovMykpOwotICAgICAgICByZXR1cm4gZXYtPmlz
QWNjZXB0ZWQoKTsKLSAgICB9Ci0KLSAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVu
dChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2LCAvKmV2ZW50Q2xpY2tDb3VudD0qLzEpKTsKLSAgICBy
ZXR1cm4gZXYtPmlzQWNjZXB0ZWQoKTsKLX0KLQotYm9vbCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6
aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQotewotICAgIG1fd2ViUGFn
ZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXYsIC8qZXZlbnRD
bGlja0NvdW50PSovMCkpOwotICAgIHJldHVybiBldi0+aXNBY2NlcHRlZCgpOwotfQotCi1ib29s
IFFEZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNl
RXZlbnQqIGV2KQotewotICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2
ZVdlYk1vdXNlRXZlbnQoZXYsIC8qZXZlbnRDbGlja0NvdW50PSovMikpOwotCi0gICAgbV90cmlw
bGVDbGlja1RpbWVyLnN0YXJ0KFFBcHBsaWNhdGlvbjo6ZG91YmxlQ2xpY2tJbnRlcnZhbCgpLCB0
aGlzKTsKLSAgICBtX3RyaXBsZUNsaWNrID0gZXYtPmxvY2FsUG9zKCkudG9Qb2ludCgpOwotICAg
IHJldHVybiBldi0+aXNBY2NlcHRlZCgpOwotfQotCi1ib29sIFFEZXNrdG9wV2ViUGFnZVByb3h5
OjpoYW5kbGVXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldikKLXsKLSAgICBtX3dlYlBhZ2VQcm94
eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2KSk7Ci0gICAgcmV0dXJu
IGV2LT5pc0FjY2VwdGVkKCk7Ci19Ci0KLWJvb2wgUURlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRs
ZUhvdmVyTGVhdmVFdmVudChRSG92ZXJFdmVudCogZXYpCi17Ci0gICAgLy8gVG8gZ2V0IHRoZSBj
b3JyZWN0IGJlaGF2aW9yIG9mIG1vdXNlb3V0LCB3ZSBuZWVkIHRvIHR1cm4gdGhlIExlYXZlIGV2
ZW50IG9mIG91ciB3ZWJ2aWV3IGludG8gYSBtb3VzZSBtb3ZlCi0gICAgLy8gdG8gYSB2ZXJ5IGZh
ciByZWdpb24uCi0gICAgUUhvdmVyRXZlbnQgZmFrZUV2ZW50KFFFdmVudDo6SG92ZXJNb3ZlLCBR
UG9pbnQoSU5UX01JTiwgSU5UX01JTiksIGV2LT5vbGRQb3MoKSk7Ci0gICAgcmV0dXJuIGhhbmRs
ZUhvdmVyTW92ZUV2ZW50KCZmYWtlRXZlbnQpOwotfQotCi1ib29sIFFEZXNrdG9wV2ViUGFnZVBy
b3h5OjpoYW5kbGVIb3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXYpCi17Ci0gICAgUU1vdXNl
RXZlbnQgbWUoUUV2ZW50OjpNb3VzZU1vdmUsIGV2LT5wb3MoKSwgUXQ6Ok5vQnV0dG9uLCBRdDo6
Tm9CdXR0b24sIFF0OjpOb01vZGlmaWVyKTsKLSAgICBtZS5zZXRBY2NlcHRlZChldi0+aXNBY2Nl
cHRlZCgpKTsKLQotICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudCgmbWUpOwotfQotCi1i
b29sIFFEZXNrdG9wV2ViUGFnZVByb3h5OjpoYW5kbGVEcmFnRW50ZXJFdmVudChRRHJhZ0VudGVy
RXZlbnQqIGV2KQotewotICAgIG1fd2ViUGFnZVByb3h5LT5yZXNldERyYWdPcGVyYXRpb24oKTsK
LSAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9zKCkKLSAgICBEcmFnRGF0
YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vyc29yOjpwb3MoKSwgZHJv
cEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25zKCkpKTsKLSAgICBtX3dl
YlBhZ2VQcm94eS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKTsKLSAgICBldi0+YWNjZXB0UHJvcG9z
ZWRBY3Rpb24oKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBRRGVza3RvcFdlYlBhZ2VQ
cm94eTo6aGFuZGxlRHJhZ0xlYXZlRXZlbnQoUURyYWdMZWF2ZUV2ZW50KiBldikKLXsKLSAgICBi
b29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKLQotICAgIC8vIEZJWE1FOiBTaG91bGQg
bm90IHVzZSBRQ3Vyc29yOjpwb3MoKQotICAgIERyYWdEYXRhIGRyYWdEYXRhKDAsIEludFBvaW50
KCksIFFDdXJzb3I6OnBvcygpLCBEcmFnT3BlcmF0aW9uTm9uZSk7Ci0gICAgbV93ZWJQYWdlUHJv
eHktPmRyYWdFeGl0ZWQoJmRyYWdEYXRhKTsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cmVzZXREcmFn
T3BlcmF0aW9uKCk7Ci0KLSAgICBldi0+c2V0QWNjZXB0ZWQoYWNjZXB0ZWQpOwotICAgIHJldHVy
biBhY2NlcHRlZDsKLX0KLQotYm9vbCBRRGVza3RvcFdlYlBhZ2VQcm94eTo6aGFuZGxlRHJhZ01v
dmVFdmVudChRRHJhZ01vdmVFdmVudCogZXYpCi17Ci0gICAgYm9vbCBhY2NlcHRlZCA9IGV2LT5p
c0FjY2VwdGVkKCk7Ci0KLSAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCB1c2UgUUN1cnNvcjo6cG9z
KCkKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vy
c29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbihldi0+cG9zc2libGVBY3Rpb25z
KCkpKTsKLSAgICBtX3dlYlBhZ2VQcm94eS0+ZHJhZ1VwZGF0ZWQoJmRyYWdEYXRhKTsKLSAgICBl
di0+c2V0RHJvcEFjdGlvbihkcmFnT3BlcmF0aW9uVG9Ecm9wQWN0aW9uKG1fd2ViUGFnZVByb3h5
LT5kcmFnT3BlcmF0aW9uKCkpKTsKLSAgICBpZiAobV93ZWJQYWdlUHJveHktPmRyYWdPcGVyYXRp
b24oKSAhPSBEcmFnT3BlcmF0aW9uTm9uZSkKLSAgICAgICAgZXYtPmFjY2VwdCgpOwotCi0gICAg
ZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKLSAgICByZXR1cm4gYWNjZXB0ZWQ7Ci19Ci0KLWJv
b2wgUURlc2t0b3BXZWJQYWdlUHJveHk6OmhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50KiBldikK
LXsKLSAgICBib29sIGFjY2VwdGVkID0gZXYtPmlzQWNjZXB0ZWQoKTsKLQotICAgIC8vIEZJWE1F
OiBTaG91bGQgbm90IHVzZSBRQ3Vyc29yOjpwb3MoKQotICAgIERyYWdEYXRhIGRyYWdEYXRhKGV2
LT5taW1lRGF0YSgpLCBldi0+cG9zKCksIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFn
T3BlcmF0aW9uKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBoYW5kbGU7Ci0gICAgbV93ZWJQYWdlUHJveHktPnBlcmZvcm1EcmFnKCZkcmFnRGF0
YSwgU3RyaW5nKCksIGhhbmRsZSk7Ci0gICAgZXYtPnNldERyb3BBY3Rpb24oZHJhZ09wZXJhdGlv
blRvRHJvcEFjdGlvbihtX3dlYlBhZ2VQcm94eS0+ZHJhZ09wZXJhdGlvbigpKSk7Ci0gICAgZXYt
PmFjY2VwdCgpOwotCi0gICAgZXYtPnNldEFjY2VwdGVkKGFjY2VwdGVkKTsKLSAgICByZXR1cm4g
YWNjZXB0ZWQ7Ci19Ci0KLXZvaWQgUURlc2t0b3BXZWJQYWdlUHJveHk6OnRpbWVyRXZlbnQoUVRp
bWVyRXZlbnQqIGV2KQotewotICAgIGludCB0aW1lcklkID0gZXYtPnRpbWVySWQoKTsKLSAgICBp
ZiAodGltZXJJZCA9PSBtX3RyaXBsZUNsaWNrVGltZXIudGltZXJJZCgpKQotICAgICAgICBtX3Ry
aXBsZUNsaWNrVGltZXIuc3RvcCgpOwotICAgIGVsc2UKLSAgICAgICAgUU9iamVjdDo6dGltZXJF
dmVudChldik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRl
c2t0b3B3ZWJwYWdlcHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3Rv
cHdlYnBhZ2Vwcm94eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmIwODE1OTUw
OGUxNTM0ZTQyMTQ0MzZjYjc2ZWM1ZTUyNjZhMmZjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVza3Rv
cHdlYnBhZ2Vwcm94eS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKgotICovCi0KLSNpZm5kZWYgcWRlc2t0b3B3ZWJwYWdlcHJveHlfaAotI2RlZmluZSBx
ZGVza3RvcHdlYnBhZ2Vwcm94eV9oCi0KLSNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgotI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgot
Ci1jbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOwotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1jbGFzcyBRRGVza3RvcFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBRdFdlYlBhZ2VQcm94eQot
ewotcHVibGljOgotICAgIFFEZXNrdG9wV2ViUGFnZVByb3h5KFFEZXNrdG9wV2ViVmlld1ByaXZh
dGUqLCBXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlRXZlbnQoUUV2ZW50Kik7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIHBhaW50Q29u
dGVudChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVJlY3QmIGFyZWEpOwotCi1wcml2YXRlOgot
ICAgIC8qIFBhZ2VDbGllbnQgb3ZlcnJpZGVzLiAqLwotICAgIHZpcnR1YWwgUGFzc093blB0cjxE
cmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
Jik7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhU
b3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxl
ZCk7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwotCi0g
ICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKLQotICAgIGJvb2wgaGFu
ZGxlTW91c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqKTsKLSAgICBib29sIGhhbmRsZU1vdXNlUHJl
c3NFdmVudChRTW91c2VFdmVudCopOwotICAgIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
UU1vdXNlRXZlbnQqKTsKLSAgICBib29sIGhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91
c2VFdmVudCopOwotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChRV2hlZWxFdmVudCopOwotICAg
IGJvb2wgaGFuZGxlSG92ZXJMZWF2ZUV2ZW50KFFIb3ZlckV2ZW50Kik7Ci0gICAgYm9vbCBoYW5k
bGVIb3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCopOwotICAgIGJvb2wgaGFuZGxlRHJhZ0VudGVy
RXZlbnQoUURyYWdFbnRlckV2ZW50Kik7Ci0gICAgYm9vbCBoYW5kbGVEcmFnTGVhdmVFdmVudChR
RHJhZ0xlYXZlRXZlbnQqKTsKLSAgICBib29sIGhhbmRsZURyYWdNb3ZlRXZlbnQoUURyYWdNb3Zl
RXZlbnQqKTsKLSAgICBib29sIGhhbmRsZURyb3BFdmVudChRRHJvcEV2ZW50Kik7Ci0KLSAgICBR
UG9pbnQgbV90cmlwbGVDbGljazsKLSAgICBRQmFzaWNUaW1lciBtX3RyaXBsZUNsaWNrVGltZXI7
Ci19OwotCi0jZW5kaWYgLyogcWRlc2t0b3B3ZWJwYWdlcHJveHlfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzI5MjFhZjVjYmZlMmQxMzZjZjMwYWVjNzFmM2NmMDc0M2Iw
NWExMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgInF0b3VjaHdlYnBhZ2Vwcm94eS5oIgotCi0jaW5jbHVkZSA8
SW50UmVjdC5oPgotI2luY2x1ZGUgPE5hdGl2ZVdlYlRvdWNoRXZlbnQuaD4KLSNpbmNsdWRlIDxX
ZWJFdmVudEZhY3RvcnlRdC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUVRvdWNo
V2ViUGFnZVByb3h5OjpRVG91Y2hXZWJQYWdlUHJveHkoVG91Y2hWaWV3SW50ZXJmYWNlKiB2aWV3
SW50ZXJmYWNlLCBWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lKQotICAgIDogUXRXZWJQYWdlUHJveHkodmlld0ludGVyZmFjZSwgMCkKLSAgICAsIG1f
cGFuR2VzdHVyZVJlY29nbml6ZXIodmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSkKLSAgICAsIG1f
cGluY2hHZXN0dXJlUmVjb2duaXplcih2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKQotewotICAg
IGluaXQoKTsKLX0KLQotUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBRVG91Y2hXZWJQYWdl
UHJveHk6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQotewotICAgIHJldHVybiBUaWxlZERyYXdp
bmdBcmVhUHJveHk6OmNyZWF0ZSh0b3VjaFZpZXdJbnRlcmZhY2UoKSwgbV93ZWJQYWdlUHJveHku
Z2V0KCkpOwotfQotCi12b2lkIFFUb3VjaFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkK
LXsKLSAgICBRdFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCk7Ci0gICAgbV9wYW5HZXN0
dXJlUmVjb2duaXplci5yZXNldCgpOwotICAgIG1fcGluY2hHZXN0dXJlUmVjb2duaXplci5yZXNl
dCgpOwotfQotCi12b2lkIFFUb3VjaFdlYlBhZ2VQcm94eTo6cGFpbnRDb250ZW50KFFQYWludGVy
KiBwYWludGVyLCBjb25zdCBRUmVjdCYgYXJlYSkKLXsKLX0KLQotI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCi12b2lkIFFUb3VjaFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKLXsKLSAg
ICBpZiAod2FzRXZlbnRIYW5kbGVkKSB7Ci0gICAgICAgIG1fcGFuR2VzdHVyZVJlY29nbml6ZXIu
cmVzZXQoKTsKLSAgICAgICAgbV9waW5jaEdlc3R1cmVSZWNvZ25pemVyLnJlc2V0KCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgbV9wYW5HZXN0dXJlUmVjb2duaXplci5yZWNvZ25pemUoZXZlbnQu
bmF0aXZlRXZlbnQoKSk7Ci0gICAgICAgIG1fcGluY2hHZXN0dXJlUmVjb2duaXplci5yZWNvZ25p
emUoZXZlbnQubmF0aXZlRXZlbnQoKSk7Ci0gICAgfQotfQotI2VuZGlmCi0KLWJvb2wgUVRvdWNo
V2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudChRRXZlbnQqIGV2KQotewotICAgIHN3aXRjaCAoZXYt
PnR5cGUoKSkgewotICAgIGNhc2UgUUV2ZW50OjpUb3VjaEJlZ2luOgotICAgIGNhc2UgUUV2ZW50
OjpUb3VjaEVuZDoKLSAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6Ci0gICAgICAgIHRvdWNo
RXZlbnQoc3RhdGljX2Nhc3Q8UVRvdWNoRXZlbnQqPihldikpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIFF0V2ViUGFnZVByb3h5OjpoYW5kbGVFdmVudChldik7Ci19
Ci0KLXZvaWQgUVRvdWNoV2ViUGFnZVByb3h5OjpzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2Fs
ZShjb25zdCBRUmVjdEYmIHZpc2libGVDb250ZW50UmVjdCwgZmxvYXQgc2NhbGUpCi17Ci0gICAg
UVJlY3QgYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdC50b0Fs
aWduZWRSZWN0KCk7Ci0gICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5k
U2NhbGUoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCwgc2NhbGUpOwotCi0gICAgLy8gRklYTUU6
IE9uY2Ugd2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRoaXMgc2hvdWxkIGJlIGRlbGF5
ZWQgdW50aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZC4KLSAg
ICBtX3dlYlBhZ2VQcm94eS0+c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoYWxpZ25lZFZpc2li
bGVDb250ZW50UmVjdCk7Ci19Ci0KLXZvaWQgUVRvdWNoV2ViUGFnZVByb3h5OjpzZXRWaXNpYmxl
Q29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnlWZWN0
b3IpCi17Ci0gICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9y
eVZlY3Rvcih0cmFqZWN0b3J5VmVjdG9yKTsKLX0KLQotdm9pZCBRVG91Y2hXZWJQYWdlUHJveHk6
OnNldFJlc2l6ZXNUb0NvbnRlbnRzVXNpbmdMYXlvdXRTaXplKGNvbnN0IFFTaXplJiB0YXJnZXRM
YXlvdXRTaXplKQotewotICAgIG1fd2ViUGFnZVByb3h5LT5zZXRSZXNpemVzVG9Db250ZW50c1Vz
aW5nTGF5b3V0U2l6ZSh0YXJnZXRMYXlvdXRTaXplKTsKLX0KLQotdm9pZCBRVG91Y2hXZWJQYWdl
UHJveHk6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQotewotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2Vi
VG91Y2hFdmVudChldmVudCkpOwotICAgIGV2ZW50LT5hY2NlcHQoKTsKLSNlbHNlCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgZXYtPmlnbm9yZSgpOwotI2VuZGlmCi19Ci0KLXZvaWQg
UVRvdWNoV2ViUGFnZVByb3h5OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3QgUVBvaW50
JiBwb2ludCkKLXsKLSAgICBtX3dlYlBhZ2VQcm94eS0+ZmluZFpvb21hYmxlQXJlYUZvclBvaW50
KHBvaW50KTsKLX0KLQotdm9pZCBRVG91Y2hXZWJQYWdlUHJveHk6OnJlbmRlck5leHRGcmFtZSgp
Ci17Ci0gICAgZHJhd2luZ0FyZWEoKS0+cmVuZGVyTmV4dEZyYW1lKCk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcXRvdWNod2VicGFnZXByb3h5LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDZiOTZkZGZkN2Q4Mjk1MGVhZjRhZjUwY2IwM2FhYTZlNWU1MDg0
ZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5oCisrKyAvZGV2L251bGwK
QEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgcXRvdWNo
d2VicGFnZXByb3h5X2gKLSNkZWZpbmUgcXRvdWNod2VicGFnZXByb3h5X2gKLQotCi0jaW5jbHVk
ZSAiRHJhd2luZ0FyZWFQcm94eS5oIgotI2luY2x1ZGUgIlF0UGFuR2VzdHVyZVJlY29nbml6ZXIu
aCIKLSNpbmNsdWRlICJRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIuaCIKLSNpbmNsdWRlICJRdFdl
YlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIlRpbGVkRHJhd2luZ0FyZWFQcm94eS5oIgotI2luY2x1
ZGUgIlRvdWNoVmlld0ludGVyZmFjZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgVmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZTsKLX0K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotY2xhc3MgUVRvdWNoV2ViUGFnZVByb3h5IDog
cHVibGljIFF0V2ViUGFnZVByb3h5Ci17Ci1wdWJsaWM6Ci0gICAgUVRvdWNoV2ViUGFnZVByb3h5
KFRvdWNoVmlld0ludGVyZmFjZSosIFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqKTsKLQotICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChRRXZlbnQqKTsKLQotICAgIHZvaWQgc2V0VmlzaWJs
ZUNvbnRlbnRSZWN0QW5kU2NhbGUoY29uc3QgUVJlY3RGJiwgZmxvYXQpOwotICAgIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRSZWN0VHJhamVjdG9yeVZlY3Rvcihjb25zdCBRUG9pbnRGJik7Ci0gICAg
dm9pZCBzZXRSZXNpemVzVG9Db250ZW50c1VzaW5nTGF5b3V0U2l6ZShjb25zdCBRU2l6ZSYgdGFy
Z2V0TGF5b3V0U2l6ZSk7Ci0gICAgdm9pZCBmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQoY29uc3Qg
UVBvaW50Jik7Ci0gICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKLQotcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFSZWN0
JiBhcmVhKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQ
cm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goKTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBk
b25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZl
bnRIYW5kbGVkKTsKLSNlbmRpZgotCi0gICAgVG91Y2hWaWV3SW50ZXJmYWNlKiB0b3VjaFZpZXdJ
bnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaFZpZXdJbnRlcmZhY2Uq
PihtX3ZpZXdJbnRlcmZhY2UpOyB9Ci0gICAgVGlsZWREcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5n
QXJlYSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6VGlsZWREcmF3aW5nQXJl
YVByb3h5Kj4obV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOyB9Ci0KLSAgICB2b2lkIHRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKLQotICAgIFF0UGFuR2VzdHVyZVJlY29nbml6ZXIgbV9w
YW5HZXN0dXJlUmVjb2duaXplcjsKLSAgICBRdFBpbmNoR2VzdHVyZVJlY29nbml6ZXIgbV9waW5j
aEdlc3R1cmVSZWNvZ25pemVyOwotfTsKLQotI2VuZGlmIC8qIHF0b3VjaHdlYnBhZ2Vwcm94eV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIucHJvCmluZGV4IDg5NDJlZWVkNzY1YzgzOTFmM2JmOGY4Nzc4MzUwN2NhMDg0
NjkyMzkuLjM5NDM3NTYxODRiZDRhYWMxYjRkY2ZhMjk4MmNlYzcwMzUwOGY5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJvCkBAIC0yNTIsMjMgKzI1MiwyMyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5oIFwK
ICAgICBVSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5oIFwKLSAgICBVSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmggXAotICAgIFVJUHJvY2Vzcy9xdC9Qb2xpY3lJbnRlcmZhY2UuaCBcCisg
ICAgVUlQcm9jZXNzL3F0L1F0VG91Y2hWaWV3SW50ZXJmYWNlLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdFBvbGljeUludGVyZmFjZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRHZXN0dXJlUmVjb2du
aXplci5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRQYW5HZXN0dXJlUmVjb2duaXplci5oIFwKICAg
ICBVSVByb2Nlc3MvcXQvUXRQaW5jaEdlc3R1cmVSZWNvZ25pemVyLmggXAotICAgIFVJUHJvY2Vz
cy9xdC9xZGVza3RvcHdlYnBhZ2Vwcm94eS5oIFwKLSAgICBVSVByb2Nlc3MvcXQvcXRvdWNod2Vi
cGFnZXByb3h5LmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuaCBc
CisgICAgVUlQcm9jZXNzL3F0L1F0VG91Y2hXZWJQYWdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNz
L3F0L3F3ZWJlcnJvci5oIFwKICAgICBVSVByb2Nlc3MvcXQvcXdlYmVycm9yX3AuaCBcCiAgICAg
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0
b3J5LmggXAogICAgIFVJUHJvY2Vzcy9xdC9xd2toaXN0b3J5X3AuaCBcCi0gICAgVUlQcm9jZXNz
L3F0L1NHVXBkYXRlUXVldWUuaCBcCi0gICAgVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUuaCBcCi0g
ICAgVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBcCi0gICAgVUlQcm9jZXNzL3F0L1ZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUuaCBcCi0gICAgVUlQcm9jZXNzL3F0L1dlYlVuZG9Db21tYW5k
UXQuaCBcCisgICAgVUlQcm9jZXNzL3F0L1F0U0dVcGRhdGVRdWV1ZS5oIFwKKyAgICBVSVByb2Nl
c3MvcXQvUXRTR1RpbGVOb2RlLmggXAorICAgIFVJUHJvY2Vzcy9xdC9RdFZpZXdJbnRlcmZhY2Uu
aCBcCisgICAgVUlQcm9jZXNzL3F0L1F0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZS5oIFwKKyAg
ICBVSVByb2Nlc3MvcXQvUXRXZWJVbmRvQ29tbWFuZC5oIFwKICAgICBVSVByb2Nlc3MvcXQvV2Vi
Q29udGV4dE1lbnVQcm94eVF0LmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJHZW9sb2NhdGlvblBy
b3ZpZGVyUXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBcCkBA
IC00MzgsNyArNDM4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIFwK
ICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwIFwKLSAgICBVSVByb2Nlc3Mv
cXQvV2ViVW5kb0NvbW1hbmRRdC5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21t
YW5kLmNwcCBcCiAgICAgVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwIFwKICAgICBVSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwIFwKQEAgLTQ5NSwy
MCArNDk1LDIwIEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJVSUNsaWVudC5jcHAg
XAogICAgIFVJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L0xh
eWVyVHJlZUhvc3RQcm94eVF0LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVy
ZmFjZS5jcHAgXAorICAgIFVJUHJvY2Vzcy9xdC9RdFRvdWNoVmlld0ludGVyZmFjZS5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9RdEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCiAgICAgVUlQcm9jZXNz
L3F0L1F0UGFuR2VzdHVyZVJlY29nbml6ZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRQaW5j
aEdlc3R1cmVSZWNvZ25pemVyLmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L3FkZXNrdG9wd2VicGFn
ZXByb3h5LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L3F0b3VjaHdlYnBhZ2Vwcm94eS5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9xdC9RdERlc2t0b3BXZWJQYWdlUHJveHkuY3BwIFwKKyAgICBVSVByb2Nl
c3MvcXQvUXRUb3VjaFdlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2ViZXJy
b3IuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9TR1VwZGF0ZVF1ZXVl
LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L1NHVGlsZU5vZGUuY3BwIFwKKyAgICBVSVByb2Nlc3Mv
cXQvUXRTR1VwZGF0ZVF1ZXVlLmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9kZS5j
cHAgXAogICAgIFVJUHJvY2Vzcy9xdC9UaWxlZERyYXdpbmdBcmVhUHJveHlRdC5jcHAgXAogICAg
IFVJUHJvY2Vzcy9xdC9UZXh0Q2hlY2tlclF0LmNwcCBcCi0gICAgVUlQcm9jZXNzL3F0L1ZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUuY3BwIFwKKyAgICBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydElu
dGVyYWN0aW9uRW5naW5lLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRNZW51UHJv
eHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3BwIFwKICAgICBVSVBy
b2Nlc3MvcXQvV2ViR2VvbG9jYXRpb25Qcm92aWRlclF0LmNwcCBcCg==
</data>
<flag name="review"
          id="109393"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>