<?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>109138</bug_id>
          
          <creation_ts>2013-02-06 23:28:51 -0800</creation_ts>
          <short_desc>Fix style of Chrome.h and Page.h</short_desc>
          <delta_ts>2013-02-07 00:24:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>827078</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-06 23:28:51 -0800</bug_when>
    <thetext>Fix style of Chrome.h and Page.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827079</commentid>
    <comment_count>1</comment_count>
      <attachid>186998</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-06 23:30:03 -0800</bug_when>
    <thetext>Created attachment 186998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827080</commentid>
    <comment_count>2</comment_count>
      <attachid>186998</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-06 23:36:16 -0800</bug_when>
    <thetext>Comment on attachment 186998
Patch

Attachment 186998 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16428001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827089</commentid>
    <comment_count>3</comment_count>
      <attachid>186998</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 23:47:03 -0800</bug_when>
    <thetext>Comment on attachment 186998
Patch

Attachment 186998 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16435001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827090</commentid>
    <comment_count>4</comment_count>
      <attachid>187000</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-06 23:48:42 -0800</bug_when>
    <thetext>Created attachment 187000
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827092</commentid>
    <comment_count>5</comment_count>
      <attachid>187000</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-06 23:57:27 -0800</bug_when>
    <thetext>Comment on attachment 187000
Patch 2

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827104</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2013-02-07 00:24:55 -0800</bug_when>
    <thetext>Committed r142069: &lt;http://trac.webkit.org/changeset/142069&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186998</attachid>
            <date>2013-02-06 23:30:03 -0800</date>
            <delta_ts>2013-02-06 23:48:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109138-20130207162639.patch</filename>
            <type>text/plain</type>
            <size>44151</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTljOGRlNmQ0ZDJiMzRj
OWQ3MzE3Mzg3N2JiYjA1NjE3MGFhOTAxNS4uNjcwMWI0OTYzMzNiY2U5NDhiNDZiZGUzMjdlZTE2
ZWZiMDU3NDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAyLTA2ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggc3R5bGUgb2YgQ2hy
b21lLmggYW5kIFBhZ2UuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IHN0eWxlIGZpeGVzLgorCisgICAgICAgICogcGFn
ZS9DaHJvbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hyb21lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZTo6Y2xpZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyZW5h
U2l6ZTo6QXJlbmFTaXplKToKKyAgICAgICAgKEFyZW5hU2l6ZSk6CisgICAgICAgIChQYWdlKToK
KyAgICAgICAgKFBhZ2VDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNhblN0YXJ0TWVkaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdJbkNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYWluRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Z3JvdXBQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5jcmVtZW50
U3ViZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkZWNyZW1lbnRTdWJmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN1YmZyYW1lQ291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6Y2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRyYWdD
YXJldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZHJhZ0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Zm9jdXNDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmNvbnRleHRNZW51Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBvaW50
ZXJMb2NrQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpwcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpiYWNr
Rm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmZWF0dXJlT2JzZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6dmlld01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
Y2hlZHVsZWRSdW5Mb29wUGFpcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVZvbHVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2hvdWxkU3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2luYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNPbnNjcmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aGFzQ3VzdG9tSFRN
TFRva2VuaXplclRpbWVEZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjdXN0b21IVE1M
VG9rZW5pemVyVGltZURlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc0N1c3RvbUhU
TUxUb2tlbml6ZXJDaHVua1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y3VzdG9tSFRN
TFRva2VuaXplckNodW5rU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphcmVNZW1vcnlD
YWNoZUNsaWVudENhbGxzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0VkaXRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmRpc3BsYXlJRCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXlvdXRN
aWxlc3RvbmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzUGFpbnRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aXNQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y2hlY2tT
dWJmcmFtZUNvdW50Q29uc2lzdGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z3JvdXAp
OgorCiAyMDEzLTAyLTA2ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIGRvY3VtZW50LnJlZmVycmVyIGxlYWthZ2Ugd2l0aCBYU1MgQXVkaXRvciBwYWdlIGJsb2Nr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAppbmRleCBlNzhmMzg1ODFhNjRmYjBiZjhmYzc3MWEyY2JlNzM0NGFl
NmFiMjI2Li41MjkzYzRhNmIxZjQ3ZmQwMzBlNmM4MGQ3OTI3MzY1ZDc2YzE2YjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKQEAgLTM2LDE1OCArMzYsMTU2IEBAIGNsYXNzIE5TVmlldzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2hyb21lQ2xpZW50OwotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIGNsYXNzIENvbG9yQ2hvb3NlcjsKLSAgICBjbGFzcyBDb2xvckNo
b29zZXJDbGllbnQ7Ci0jZW5kaWYKLSAgICBjbGFzcyBEYXRlVGltZUNob29zZXI7Ci0gICAgY2xh
c3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50OwotICAgIGNsYXNzIEZpbGVDaG9vc2VyOwotICAgIGNs
YXNzIEZpbGVJY29uTG9hZGVyOwotICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBHZW9sb2NhdGlvbjsKLSAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwotICAg
IGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKLSAgICBjbGFzcyBO
b2RlOwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUG9wdXBNZW51OwotICAgIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKLSAgICBjbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlcjsKLSAgICBjbGFz
cyBTZWFyY2hQb3B1cE1lbnU7Ci0KLSAgICBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVy
czsKLSAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKLSAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHM7Ci0gICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOworY2xhc3MgQ2hyb21lQ2xpZW50Owor
Y2xhc3MgQ29sb3JDaG9vc2VyOworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3MgRGF0
ZVRpbWVDaG9vc2VyOworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50OworY2xhc3MgRmlsZUNo
b29zZXI7CitjbGFzcyBGaWxlSWNvbkxvYWRlcjsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZy
YW1lOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBIaXRUZXN0UmVzdWx0OworY2xhc3MgSW50
UmVjdDsKK2NsYXNzIE5hdmlnYXRpb25BY3Rpb247CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsK
K2NsYXNzIFBvcHVwTWVudTsKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyOworY2xhc3MgU2VhcmNoUG9wdXBNZW51OworCitzdHJ1Y3QgRGF0ZVRpbWVD
aG9vc2VyUGFyYW1ldGVyczsKK3N0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0Oworc3RydWN0IFZpZXdw
b3J0QXJndW1lbnRzOworc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogICAgIAotICAgIGNsYXNzIENo
cm9tZSA6IHB1YmxpYyBIb3N0V2luZG93IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIH5DaHJvbWUo
KTsKLQotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDaHJvbWU+IGNyZWF0ZShQYWdlKiwgQ2hy
b21lQ2xpZW50Kik7CitjbGFzcyBDaHJvbWUgOiBwdWJsaWMgSG9zdFdpbmRvdyB7CitwdWJsaWM6
CisgICAgfkNocm9tZSgpOwogCi0gICAgICAgIENocm9tZUNsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQ7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxDaHJvbWU+IGNyZWF0ZShQYWdl
KiwgQ2hyb21lQ2xpZW50Kik7CiAKLSAgICAgICAgLy8gSG9zdFdpbmRvdyBtZXRob2RzLgorICAg
IENocm9tZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVS
UklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3
KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYsIGJvb2wpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdCYpOworICAgIC8vIEhvc3RXaW5kb3cgbWV0aG9kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50
UmVjdCYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVu
dHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIE9WRVJSSURFOwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb2ludCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25z
dCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIE9WRVJSSURFOwogI2VuZGlmCi0gICAgICAgIHZpcnR1
YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOwotICAgICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRS
ZWN0JikgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50
IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNv
cihjb25zdCBDdXJzb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sKTsKKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wp
IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVBbmltYXRpb24oKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2Nyb2xs
UmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFJlY3RJ
bnRvVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisKKyAgICB2b2lkIGNvbnRlbnRzU2l6ZUNo
YW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdm9pZCBsYXlvdXRVcGRh
dGVkKEZyYW1lKikgY29uc3Q7CisKKyAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKIAotICAgICAg
ICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7
Ci0gICAgICAgIHZvaWQgbGF5b3V0VXBkYXRlZChGcmFtZSopIGNvbnN0OworICAgIEZsb2F0UmVj
dCBwYWdlUmVjdCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKLSAgICAgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsK
KyAgICB2b2lkIGZvY3VzKCkgY29uc3Q7CisgICAgdm9pZCB1bmZvY3VzKCkgY29uc3Q7CiAKLSAg
ICAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICB2b2lk
IGZvY3VzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgdW5mb2N1cygpIGNvbnN0OworICAgIGJvb2wg
Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBjb25zdDsKKyAgICB2b2lkIHRha2VGb2N1cyhG
b2N1c0RpcmVjdGlvbikgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNE
aXJlY3Rpb24pIGNvbnN0OwotICAgICAgICB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikg
Y29uc3Q7CisgICAgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoTm9kZSopIGNvbnN0OworICAgIHZv
aWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKE5vZGUqKSBjb25zdDsKLSAgICAgICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKEZyYW1lKikgY29uc3Q7CisgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpIGNvbnN0OworICAgIHZvaWQgc2hvdygpIGNvbnN0OwogCi0gICAgICAgIFBh
Z2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzaG93KCkgY29uc3Q7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OworICAgIGJv
b2wgY2FuUnVuTW9kYWxOb3coKSBjb25zdDsKKyAgICB2b2lkIHJ1bk1vZGFsKCkgY29uc3Q7CiAK
LSAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwotICAgICAgICBib29sIGNhblJ1bk1v
ZGFsTm93KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgcnVuTW9kYWwoKSBjb25zdDsKKyAgICB2b2lk
IHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBjb25zdDsKKyAgICBib29sIHRvb2xiYXJzVmlzaWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIGNvbnN0
OwotICAgICAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpIGNvbnN0OwotICAgICAgICAKLSAgICAg
ICAgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIGNvbnN0OwotICAgICAgICBib29sIHN0
YXR1c2JhclZpc2libGUoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0U2Nyb2xs
YmFyc1Zpc2libGUoYm9vbCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUo
KSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0TWVudWJhclZpc2libGUoYm9vbCkg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgbWVudWJhclZpc2libGUoKSBjb25zdDsKLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgc2V0UmVzaXphYmxlKGJvb2wpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhdHVz
YmFyVmlzaWJsZShib29sKSBjb25zdDsKKyAgICBib29sIHN0YXR1c2JhclZpc2libGUoKSBjb25z
dDsKIAotICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwotICAg
ICAgICBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEZyYW1lKiBmcmFtZSk7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKSBj
b25zdDsKKyAgICBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9p
ZCBjbG9zZVdpbmRvd1Nvb24oKTsKKyAgICB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpIGNv
bnN0OworICAgIGJvb2wgbWVudWJhclZpc2libGUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwotICAgICAgICBib29sIHJ1
bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGJvb2wg
cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKLSAgICAgICAgdm9pZCBzZXRT
dGF0dXNiYXJUZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCgpOworICAgIHZvaWQgc2V0UmVzaXphYmxlKGJvb2wpIGNvbnN0
OwogCi0gICAgICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKKyAgICBib29s
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOworICAgIGJvb2wgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJhbWUqKTsKIAotICAgICAg
ICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNp
Z25lZCBtb2RpZmllckZsYWdzKTsKKyAgICB2b2lkIGNsb3NlV2luZG93U29vbigpOwogCi0gICAg
ICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisgICAgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChG
cmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dCgpOwogCi0gICAgICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKKyAgICBJbnRSZWN0IHdpbmRvd1Jl
c2l6ZXJSZWN0KCkgY29uc3Q7CisKKyAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKKworICAgIHZvaWQg
c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisKKyAgICB2b2lkIHByaW50KEZyYW1l
Kik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgUGFzc093blB0cjxD
b2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25z
dCBDb2xvciYgaW5pdGlhbENvbG9yKTsKKyAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFs
Q29sb3IpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0g
ICAgICAgIFBhc3NSZWZQdHI8RGF0ZVRpbWVDaG9vc2VyPiBvcGVuRGF0ZVRpbWVDaG9vc2VyKERh
dGVUaW1lQ2hvb3NlckNsaWVudCosIGNvbnN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKTsK
KyAgICBQYXNzUmVmUHRyPERhdGVUaW1lQ2hvb3Nlcj4gb3BlbkRhdGVUaW1lQ2hvb3NlcihEYXRl
VGltZUNob29zZXJDbGllbnQqLCBjb25zdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJik7CiAj
ZW5kaWYKIAotICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+KTsKLSAgICAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKKyAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopOwogI2lmIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKQotICAgICAgICB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hv
b3NlciopOworICAgIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KEZpbGVDaG9vc2VyKik7
CiAjZW5kaWYKIAotICAgICAgICB2b2lkIGRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hh
bmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaFZp
ZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwor
ICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICB2b2lkIGZvY3VzTlNWaWV3KE5TVmlldyopOworICAgIHZvaWQg
Zm9jdXNOU1ZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIAotICAgICAgICBib29sIHNlbGVjdEl0ZW1X
cml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwotICAgICAgICBib29sIGhhc09wZW5l
ZFBvcHVwKCkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CisgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOworICAgIGJv
b2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOworICAg
IGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CisKKyAgICB2b2lkIHJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQ
b3B1cE9wZW5pbmdPYnNlcnZlciopOwogCi0gICAgICAgIHZvaWQgcmVnaXN0ZXJQb3B1cE9wZW5p
bmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciopOwotICAgICAgICB2b2lkIHVucmVnaXN0
ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciopOworcHJpdmF0ZToK
KyAgICBDaHJvbWUoUGFnZSosIENocm9tZUNsaWVudCopOworICAgIHZvaWQgbm90aWZ5UG9wdXBP
cGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBDaHJvbWUo
UGFnZSosIENocm9tZUNsaWVudCopOwotICAgICAgICB2b2lkIG5vdGlmeVBvcHVwT3BlbmluZ09i
c2VydmVycygpIGNvbnN0OworICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBDaHJvbWVDbGllbnQqIG1f
Y2xpZW50OworICAgIFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG1fcG9wdXBPcGVuaW5n
T2JzZXJ2ZXJzOworfTsKIAotICAgICAgICBQYWdlKiBtX3BhZ2U7Ci0gICAgICAgIENocm9tZUNs
aWVudCogbV9jbGllbnQ7Ci0gICAgICAgIFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG1f
cG9wdXBPcGVuaW5nT2JzZXJ2ZXJzOwotICAgIH07CiB9CiAKICNlbmRpZiAvLyBDaHJvbWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3N2RkNWNjZDg2NzQzNTFmMmU2MGE3NTNhMGQ3ZmFlYzk1OWM5Yjdm
Li5iZmFhMzMzMTk3NjUzNjM2Y2Y3MWIxOTExZTM3ODQ0NGUxZTM5MjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMjIsOCArMjIsOCBAQAogI2RlZmluZSBQYWdlX2gKIAogI2luY2x1ZGUgIkZlYXR1cmVP
YnNlcnZlci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGaW5k
T3B0aW9ucy5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlv
dXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBhZ2VW
aXNpYmlsaXR5U3RhdGUuaCIKQEAgLTQ3LDQ1MCArNDcsNDU1IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgRGVidWdnZXI7CitjbGFzcyBEZWJ1Z2dlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwotICAg
IGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKLSAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7
Ci0gICAgY2xhc3MgQ2hyb21lOwotICAgIGNsYXNzIENocm9tZUNsaWVudDsKLSAgICBjbGFzcyBD
bGllbnRSZWN0TGlzdDsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBjbGFzcyBDb250
ZXh0TWVudUNsaWVudDsKLSAgICBjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXI7Ci0jZW5kaWYK
LSAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBEcmFnQ2FyZXRDb250cm9sbGVyOwotICAg
IGNsYXNzIERyYWdDbGllbnQ7Ci0gICAgY2xhc3MgRHJhZ0NvbnRyb2xsZXI7Ci0gICAgY2xhc3Mg
RWRpdG9yQ2xpZW50OwotICAgIGNsYXNzIEZvY3VzQ29udHJvbGxlcjsKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKLSAgICBjbGFzcyBIYWx0YWJsZVBsdWdpbjsK
LSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci0gICAg
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXI7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBQYWdlR3JvdXA7Ci0gICAgY2xhc3MgUGx1
Z0luQ2xpZW50OwotICAgIGNsYXNzIFBsdWdpbkRhdGE7Ci0gICAgY2xhc3MgUGx1Z2luVmlld0Jh
c2U7Ci0gICAgY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyOwotICAgIGNsYXNzIFByb2dyZXNz
VHJhY2tlcjsKLSAgICBjbGFzcyBSYW5nZTsKLSAgICBjbGFzcyBSZW5kZXJPYmplY3Q7Ci0gICAg
Y2xhc3MgUmVuZGVyVGhlbWU7Ci0gICAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKLSAgICBjbGFz
cyBTY3JvbGxhYmxlQXJlYTsKLSAgICBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBj
bGFzcyBTZXR0aW5nczsKLSAgICBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwotICAgIGNsYXNzIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50OwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsK
LQotICAgIGVudW0gRmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGly
ZWN0aW9uQmFja3dhcmQgfTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKEZyYW1lKik7
Ci0KLSAgICBzdHJ1Y3QgQXJlbmFTaXplIHsKLSAgICAgICAgQXJlbmFTaXplKHNpemVfdCB0cmVl
U2l6ZSwgc2l6ZV90IGFsbG9jYXRlZCkKLSAgICAgICAgICAgIDogdHJlZVNpemUodHJlZVNpemUp
Ci0gICAgICAgICAgICAsIGFsbG9jYXRlZChhbGxvY2F0ZWQpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICBzaXplX3QgdHJlZVNpemU7Ci0gICAgICAgIHNpemVfdCBhbGxvY2F0ZWQ7Ci0g
ICAgfTsKLQotICAgIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewot
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IFNldHRpbmdzOworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OworY2xhc3MgQmFja0Zvcndh
cmRDb250cm9sbGVyOworY2xhc3MgQmFja0ZvcndhcmRMaXN0OworY2xhc3MgQ2hyb21lOworY2xh
c3MgQ2hyb21lQ2xpZW50OworY2xhc3MgQ2xpZW50UmVjdExpc3Q7CitjbGFzcyBDb250ZXh0TWVu
dUNsaWVudDsKK2NsYXNzIENvbnRleHRNZW51Q29udHJvbGxlcjsKK2NsYXNzIERvY3VtZW50Owor
Y2xhc3MgRHJhZ0NhcmV0Q29udHJvbGxlcjsKK2NsYXNzIERyYWdDbGllbnQ7CitjbGFzcyBEcmFn
Q29udHJvbGxlcjsKK2NsYXNzIEVkaXRvckNsaWVudDsKK2NsYXNzIEZvY3VzQ29udHJvbGxlcjsK
K2NsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVTZWxlY3Rpb247CitjbGFzcyBIYWx0YWJsZVBsdWdp
bjsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKK2NsYXNzIE5v
ZGU7CitjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBQbHVnSW5DbGllbnQ7CitjbGFzcyBQbHVnaW5E
YXRhOworY2xhc3MgUGx1Z2luVmlld0Jhc2U7CitjbGFzcyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7
CitjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CitjbGFzcyBSYW5nZTsKK2NsYXNzIFJlbmRlck9iamVj
dDsKK2NsYXNzIFJlbmRlclRoZW1lOworY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKK2NsYXNzIFNj
cm9sbGFibGVBcmVhOworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3I7CitjbGFzcyBTZXR0aW5n
czsKK2NsYXNzIFN0b3JhZ2VOYW1lc3BhY2U7CitjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dDsKKwordHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKKworZW51bSBGaW5kRGlyZWN0aW9uIHsg
RmluZERpcmVjdGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25CYWNrd2FyZCB9OworCitmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcihGcmFtZSopOworCitzdHJ1Y3QgQXJlbmFTaXplIHsKKyAgICBBcmVu
YVNpemUoc2l6ZV90IHRyZWVTaXplLCBzaXplX3QgYWxsb2NhdGVkKQorICAgICAgICA6IHRyZWVT
aXplKHRyZWVTaXplKQorICAgICAgICAsIGFsbG9jYXRlZChhbGxvY2F0ZWQpCisgICAgeworICAg
IH0KKyAgICBzaXplX3QgdHJlZVNpemU7CisgICAgc2l6ZV90IGFsbG9jYXRlZDsKK307CisKK2Ns
YXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBhZ2UpOworICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKKwor
ICAgIC8vIEl0IGlzIHVwIHRvIHRoZSBwbGF0Zm9ybSB0byBlbnN1cmUgdGhhdCBub24tbnVsbCBj
bGllbnRzIGFyZSBwcm92aWRlZCB3aGVyZSByZXF1aXJlZC4KKyAgICBzdHJ1Y3QgUGFnZUNsaWVu
dHMgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ2xpZW50cyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgc2NoZWR1
bGVGb3JjZWRTdHlsZVJlY2FsY0ZvckFsbFBhZ2VzKCk7Ci0KLSAgICAgICAgLy8gSXQgaXMgdXAg
dG8gdGhlIHBsYXRmb3JtIHRvIGVuc3VyZSB0aGF0IG5vbi1udWxsIGNsaWVudHMgYXJlIHByb3Zp
ZGVkIHdoZXJlIHJlcXVpcmVkLgotICAgICAgICBzdHJ1Y3QgUGFnZUNsaWVudHMgewotICAgICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNsaWVudHMpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgUGFnZUNsaWVudHMoKTsKLSAg
ICAgICAgICAgIH5QYWdlQ2xpZW50cygpOworICAgICAgICBQYWdlQ2xpZW50cygpOworICAgICAg
ICB+UGFnZUNsaWVudHMoKTsKIAotICAgICAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBh
bHRlcm5hdGl2ZVRleHRDbGllbnQ7Ci0gICAgICAgICAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNs
aWVudDsKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGll
bnQ7CisgICAgICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50OwogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgICAgICAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xp
ZW50OworICAgICAgICBDb250ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQ7CiAjZW5k
aWYKLSAgICAgICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50OwotICAgICAgICAgICAg
RHJhZ0NsaWVudCogZHJhZ0NsaWVudDsKLSAgICAgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50OwotICAgICAgICAgICAgUGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQ7Ci0g
ICAgICAgICAgICBSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZENsaWVudDsKLSAg
ICAgICAgICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVu
dDsKLSAgICAgICAgfTsKKyAgICAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQ7CisgICAg
ICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQ7CisgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50OworICAgICAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudDsKKyAgICAg
ICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRDbGllbnQ7CisgICAgICAgIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKKyAgICB9Owog
Ci0gICAgICAgIGV4cGxpY2l0IFBhZ2UoUGFnZUNsaWVudHMmKTsKLSAgICAgICAgflBhZ2UoKTsK
KyAgICBleHBsaWNpdCBQYWdlKFBhZ2VDbGllbnRzJik7CisgICAgflBhZ2UoKTsKIAotICAgICAg
ICBBcmVuYVNpemUgcmVuZGVyVHJlZVNpemUoKSBjb25zdDsKKyAgICBBcmVuYVNpemUgcmVuZGVy
VHJlZVNpemUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFs
bEZyYW1lcygpOworICAgIHZvaWQgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiAK
LSAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZS5nZXQo
KTsgfTsKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lLmdl
dCgpOyB9CiAKLSAgICAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBj
b25zdDsKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0Owog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKLSAgICAg
ICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyB2b2lkIHJlZnJl
c2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKKyAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29u
c3Q7CiAKLSAgICAgICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhKGJvb2wpOwotICAgICAgICBib29s
IGNhblN0YXJ0TWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KKyAgICB2
b2lkIHNldENhblN0YXJ0TWVkaWEoYm9vbCk7CisgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICAgICAgRWRpdG9yQ2xpZW50KiBl
ZGl0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQotICAgICAgICBQ
bHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0luQ2xpZW50
OyB9CisgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Vk
aXRvckNsaWVudDsgfQorICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAotICAgICAgICB2b2lkIHNldE1haW5GcmFtZShQYXNz
UmVmUHRyPEZyYW1lPik7Ci0gICAgICAgIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0TWFpbkZyYW1lKFBhc3NSZWZQdHI8
RnJhbWU+KTsKKyAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJh
bWUuZ2V0KCk7IH0KIAotICAgICAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0T3BlbmVkQnlET00oKTsKKyAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRPcGVuZWRCeURPTSgpOwogCi0gICAgICAgIC8vIERFUFJFQ0FURUQuIFVzZSBi
YWNrRm9yd2FyZCgpIGluc3RlYWQgb2YgdGhlIGZvbGxvd2luZyA2IGZ1bmN0aW9ucy4KLSAgICAg
ICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBnb0JhY2soKTsKLSAgICAgICAgYm9vbCBnb0ZvcndhcmQoKTsKLSAgICAgICAgYm9vbCBjYW5H
b0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKLSAgICAgICAgdm9pZCBnb0JhY2tP
ckZvcndhcmQoaW50IGRpc3RhbmNlKTsKLSAgICAgICAgaW50IGdldEhpc3RvcnlMZW5ndGgoKTsK
KyAgICAvLyBERVBSRUNBVEVELiBVc2UgYmFja0ZvcndhcmQoKSBpbnN0ZWFkIG9mIHRoZSBmb2xs
b3dpbmcgNiBmdW5jdGlvbnMuCisgICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Qo
KSBjb25zdDsKKyAgICBib29sIGdvQmFjaygpOworICAgIGJvb2wgZ29Gb3J3YXJkKCk7CisgICAg
Ym9vbCBjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKKyAgICB2b2lkIGdv
QmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpOworICAgIGludCBnZXRIaXN0b3J5TGVuZ3RoKCk7
CiAKLSAgICAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwor
ICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKIAotICAgICAg
ICB2b2lkIHNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgY29uc3QgU3RyaW5n
JiBncm91cE5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcm
KTsKKyAgICBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSgpIGNvbnN0OwogCi0gICAgICAgIFBhZ2VH
cm91cCYgZ3JvdXAoKSB7IGlmICghbV9ncm91cCkgaW5pdEdyb3VwKCk7IHJldHVybiAqbV9ncm91
cDsgfQotICAgICAgICBQYWdlR3JvdXAqIGdyb3VwUHRyKCkgeyByZXR1cm4gbV9ncm91cDsgfSAv
LyBjYW4gcmV0dXJuIDAKKyAgICBQYWdlR3JvdXAmIGdyb3VwKCk7CisgICAgUGFnZUdyb3VwKiBn
cm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8gY2FuIHJldHVybiAwCiAKLSAgICAgICAg
dm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyArK21fc3ViZnJhbWVDb3VudDsgfQotICAg
ICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1YmZyYW1lQ291
bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQotICAgICAgICBpbnQgc3ViZnJhbWVDb3VudCgpIGNv
bnN0IHsgY2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1fc3ViZnJhbWVD
b3VudDsgfQorICAgIHZvaWQgaW5jcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgKyttX3N1YmZyYW1l
Q291bnQ7IH0KKyAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1
YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQorICAgIGludCBzdWJmcmFtZUNvdW50
KCkgY29uc3QgeyBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9zdWJm
cmFtZUNvdW50OyB9CiAKLSAgICAgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBt
X2Nocm9tZS5nZXQoKTsgfQotICAgICAgICBEcmFnQ2FyZXRDb250cm9sbGVyKiBkcmFnQ2FyZXRD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ2FyZXRDb250cm9sbGVyLmdldCgpOyB9
CisgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBtX2Nocm9tZS5nZXQoKTsgfQor
ICAgIERyYWdDYXJldENvbnRyb2xsZXIqIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdDYXJldENvbnRyb2xsZXIuZ2V0KCk7IH0KICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdDb250cm9sbGVyLmdldCgpOyB9CisgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ29udHJvbGxlci5nZXQoKTsgfQogI2Vu
ZGlmCi0gICAgICAgIEZvY3VzQ29udHJvbGxlciogZm9jdXNDb250cm9sbGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb2N1c0NvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBGb2N1c0NvbnRyb2xsZXIqIGZv
Y3VzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNDb250cm9sbGVyLmdldCgpOyB9
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgICAgIENvbnRleHRNZW51Q29udHJvbGxl
ciogY29udGV4dE1lbnVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudUNv
bnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRleHRNZW51
Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVDb250cm9sbGVyLmdldCgp
OyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JD
b250cm9sbGVyLmdldCgpOyB9CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAgICAgUG9pbnRlckxvY2tDb250
cm9sbGVyKiBwb2ludGVyTG9ja0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJM
b2NrQ29udHJvbGxlci5nZXQoKTsgfQorICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogcG9pbnRl
ckxvY2tDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIu
Z2V0KCk7IH0KICNlbmRpZgotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRh
dGlvbk1lc3NhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50OyB9Ci0KLSAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCk7Ci0KLSAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwotICAg
ICAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gbm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBG
cmFtZSopOwotCi0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KLSAgICAgICAgQmFja0ZvcndhcmRDb250
cm9sbGVyKiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDb250cm9s
bGVyLmdldCgpOyB9Ci0KLSAgICAgICAgRmVhdHVyZU9ic2VydmVyKiBmZWF0dXJlT2JzZXJ2ZXIo
KSB7IHJldHVybiAmbV9mZWF0dXJlT2JzZXJ2ZXI7IH0KLQotICAgICAgICBlbnVtIFZpZXdNb2Rl
IHsKLSAgICAgICAgICAgIFZpZXdNb2RlSW52YWxpZCwKLSAgICAgICAgICAgIFZpZXdNb2RlV2lu
ZG93ZWQsCi0gICAgICAgICAgICBWaWV3TW9kZUZsb2F0aW5nLAotICAgICAgICAgICAgVmlld01v
ZGVGdWxsc2NyZWVuLAotICAgICAgICAgICAgVmlld01vZGVNYXhpbWl6ZWQsCi0gICAgICAgICAg
ICBWaWV3TW9kZU1pbmltaXplZAotICAgICAgICB9OwotICAgICAgICBzdGF0aWMgVmlld01vZGUg
c3RyaW5nVG9WaWV3TW9kZShjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICBWaWV3TW9kZSB2aWV3
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld01vZGU7IH0KLSAgICAgICAgdm9pZCBzZXRWaWV3
TW9kZShWaWV3TW9kZSk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhib29sIGIpIHsgbV90YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMgPSBi
OyB9Ci0gICAgICAgIGJvb2wgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHM7IH0KLQotICAgICAgICBib29sIGZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwotICAgICAgICAvLyBGSVhNRTog
U3dpdGNoIGNhbGxlcnMgb3ZlciB0byB0aGUgRmluZE9wdGlvbnMgdmVyc2lvbiBhbmQgcmV0aXJl
IHRoaXMgb25lLgotICAgICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgVGV4dENh
c2VTZW5zaXRpdml0eSwgRmluZERpcmVjdGlvbiwgYm9vbCBzaG91bGRXcmFwKTsKLQotICAgICAg
ICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwg
RmluZE9wdGlvbnMpOwotCi0gICAgICAgIHVuc2lnbmVkIG1hcmtBbGxNYXRjaGVzRm9yVGV4dChj
b25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgYm9vbCBzaG91bGRIaWdobGlnaHQsIHVuc2lnbmVk
KTsKLSAgICAgICAgLy8gRklYTUU6IFN3aXRjaCBjYWxsZXJzIG92ZXIgdG8gdGhlIEZpbmRPcHRp
b25zIHZlcnNpb24gYW5kIHJldGlyZSB0aGlzIG9uZS4KLSAgICAgICAgdW5zaWduZWQgbWFya0Fs
bE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIGJvb2wg
c2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25lZCk7Ci0gICAgICAgIHZvaWQgdW5tYXJrQWxsVGV4dE1h
dGNoZXMoKTsKLQotICAgICAgICAvLyBmaW5kIGFsbCB0aGUgUmFuZ2VzIGZvciB0aGUgbWF0Y2hp
bmcgdGV4dC4KLSAgICAgICAgLy8gVXBvbiByZXR1cm4sIGluZGV4Rm9yU2VsZWN0aW9uIHdpbGwg
YmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIC8vIDAgaWYgdGhlcmUgaXMgbm8gdXNl
ciBzZWxlY3Rpb24KLSAgICAgICAgLy8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCByYW5nZSBhZnRl
ciB0aGUgdXNlciBzZWxlY3Rpb24KLSAgICAgICAgLy8gTm9NYXRjaEJlZm9yZVVzZXJTZWxlY3Rp
b24gaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgdGV4dCBhZnRlciB0aGUgdXNlciBzZWxlY3Rpb24u
Ci0gICAgICAgIGVudW0geyBOb01hdGNoQmVmb3JlVXNlclNlbGVjdGlvbiA9IC0xIH07Ci0gICAg
ICAgIHZvaWQgZmluZFN0cmluZ01hdGNoaW5nUmFuZ2VzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCBpbnQgbWF4Q291bnQsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4qLCBpbnQmIGluZGV4Rm9y
U2VsZWN0aW9uKTsKKyAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OyB9CisK
KyAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKKworICAg
IFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICBTdHJpbmcgbWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKyAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0
PiBub25GYXN0U2Nyb2xsYWJsZVJlY3RzKGNvbnN0IEZyYW1lKik7CisKKyAgICBTZXR0aW5ncyog
c2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CisgICAgUHJvZ3Jl
c3NUcmFja2VyKiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0K
KyAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIqIGJhY2tGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZENvbnRyb2xsZXIuZ2V0KCk7IH0KKworICAgIEZlYXR1cmVPYnNlcnZlciog
ZmVhdHVyZU9ic2VydmVyKCkgeyByZXR1cm4gJm1fZmVhdHVyZU9ic2VydmVyOyB9CisKKyAgICBl
bnVtIFZpZXdNb2RlIHsKKyAgICAgICAgVmlld01vZGVJbnZhbGlkLAorICAgICAgICBWaWV3TW9k
ZVdpbmRvd2VkLAorICAgICAgICBWaWV3TW9kZUZsb2F0aW5nLAorICAgICAgICBWaWV3TW9kZUZ1
bGxzY3JlZW4sCisgICAgICAgIFZpZXdNb2RlTWF4aW1pemVkLAorICAgICAgICBWaWV3TW9kZU1p
bmltaXplZAorICAgIH07CisgICAgc3RhdGljIFZpZXdNb2RlIHN0cmluZ1RvVmlld01vZGUoY29u
c3QgU3RyaW5nJik7CisKKyAgICBWaWV3TW9kZSB2aWV3TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld01vZGU7IH0KKyAgICB2b2lkIHNldFZpZXdNb2RlKFZpZXdNb2RlKTsKKworICAgIHZvaWQg
c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgYikgeyBtX3RhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyA9IGI7IH0KKyAgICBib29sIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOyB9CisKKyAg
ICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworICAgIC8vIEZJ
WE1FOiBTd2l0Y2ggY2FsbGVycyBvdmVyIHRvIHRoZSBGaW5kT3B0aW9ucyB2ZXJzaW9uIGFuZCBy
ZXRpcmUgdGhpcyBvbmUuCisgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIFRleHRD
YXNlU2Vuc2l0aXZpdHksIEZpbmREaXJlY3Rpb24sIGJvb2wgc2hvdWxkV3JhcCk7CisKKyAgICBQ
YXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmlu
ZE9wdGlvbnMpOworCisgICAgdW5zaWduZWQgbWFya0FsbE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCBib29sIHNob3VsZEhpZ2hsaWdodCwgdW5zaWduZWQpOworICAg
IC8vIEZJWE1FOiBTd2l0Y2ggY2FsbGVycyBvdmVyIHRvIHRoZSBGaW5kT3B0aW9ucyB2ZXJzaW9u
IGFuZCByZXRpcmUgdGhpcyBvbmUuCisgICAgdW5zaWduZWQgbWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIGJvb2wgc2hvdWxkSGlnaGxpZ2h0
LCB1bnNpZ25lZCk7CisgICAgdm9pZCB1bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworCisgICAgLy8g
ZmluZCBhbGwgdGhlIFJhbmdlcyBmb3IgdGhlIG1hdGNoaW5nIHRleHQuCisgICAgLy8gVXBvbiBy
ZXR1cm4sIGluZGV4Rm9yU2VsZWN0aW9uIHdpbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Cisg
ICAgLy8gMCBpZiB0aGVyZSBpcyBubyB1c2VyIHNlbGVjdGlvbgorICAgIC8vIHRoZSBpbmRleCBv
ZiB0aGUgZmlyc3QgcmFuZ2UgYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0aW9uCisgICAgLy8gTm9NYXRj
aEJlZm9yZVVzZXJTZWxlY3Rpb24gaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgdGV4dCBhZnRlciB0
aGUgdXNlciBzZWxlY3Rpb24uCisgICAgZW51bSB7IE5vTWF0Y2hCZWZvcmVVc2VyU2VsZWN0aW9u
ID0gLTEgfTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGluZ1Jhbmdlcyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgaW50IG1heENvdW50LCBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+KiwgaW50
JiBpbmRleEZvclNlbGVjdGlvbik7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIGFk
ZFNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4pOwotICAgICAgICB2b2lkIHJl
bW92ZVNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4pOwotICAgICAgICBTY2hl
ZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQorICAgIHZvaWQgYWRkU2NoZWR1bGVQYWlyKFBhc3NS
ZWZQdHI8U2NoZWR1bGVQYWlyPik7CisgICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1Jl
ZlB0cjxTY2hlZHVsZVBhaXI+KTsKKyAgICBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRS
dW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQog
Ci0gICAgICAgIE93blB0cjxTY2hlZHVsZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlyczsKKyAgICBPd25QdHI8U2NoZWR1bGVQYWlySGFzaFNldD4gbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnM7CiAjZW5kaWYKIAotICAgICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24oKSBjb25zdDsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25z
dDsKKworICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKKyAgICBib29sIGRlZmVyc0xv
YWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyc0xvYWRpbmc7IH0KIAotICAgICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoYm9vbCk7Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmZXJzTG9hZGluZzsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBj
bGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKTsKIAotICAgICAgICBib29sIGluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGUo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRJbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25N
b2RlKGJvb2wgPSB0cnVlKTsKKyAgICBib29sIGluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlv
bk1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlv
bk1vZGUoYm9vbCA9IHRydWUpOwogCi0gICAgICAgIGZsb2F0IG1lZGlhVm9sdW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYVZvbHVtZTsgfQotICAgICAgICB2b2lkIHNldE1lZGlhVm9sdW1lKGZs
b2F0IHZvbHVtZSk7CisgICAgZmxvYXQgbWVkaWFWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhVm9sdW1lOyB9CisgICAgdm9pZCBzZXRNZWRpYVZvbHVtZShmbG9hdCk7CiAKLSAgICAgICAg
dm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmln
aW4pOwotICAgICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxl
LCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUZhY3RvcjsgfQogCi0gICAgICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQotICAg
ICAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKKyAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KKyAgICB2
b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKIAotICAgICAgICBib29sIHNob3VsZFN1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zOyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxi
YXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKTsKKyAgICBib29sIHNob3VsZFN1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFu
aW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpOwogCi0gICAgICAgIC8vIFBhZ2UgYW5k
IEZyYW1lVmlldyBib3RoIHN0b3JlIGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlv
bigpIGlzIHNldCBvbmx5IGJ5IEFQSSwKLSAgICAgICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5h
dGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4gUGFnZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0
IGFsbAotICAgICAgICAvLyBGcmFtZVZpZXdzIGluIHRoZSBwYWdlIGNhY2hlLCBidXQgRnJhbWVW
aWV3OjpwYWdpbmF0aW9uKCkgb25seSBhZmZlY3RzIHRoZSBjdXJyZW50Ci0gICAgICAgIC8vIEZy
YW1lVmlldy4gCi0gICAgICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3BhZ2luYXRpb247IH0KLSAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKGNvbnN0
IFBhZ2luYXRpb24mKTsKKyAgICAvLyBQYWdlIGFuZCBGcmFtZVZpZXcgYm90aCBzdG9yZSBhIFBh
Z2luYXRpb24gdmFsdWUuIFBhZ2U6OnBhZ2luYXRpb24oKSBpcyBzZXQgb25seSBieSBBUEksCisg
ICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4gUGFn
ZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0IGFsbAorICAgIC8vIEZyYW1lVmlld3MgaW4gdGhl
IHBhZ2UgY2FjaGUsIGJ1dCBGcmFtZVZpZXc6OnBhZ2luYXRpb24oKSBvbmx5IGFmZmVjdHMgdGhl
IGN1cnJlbnQKKyAgICAvLyBGcmFtZVZpZXcuIAorICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2lu
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRpb247IH0KKyAgICB2b2lkIHNldFBhZ2lu
YXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogCi0gICAgICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0OwogCi0gICAgICAgIC8vIE5v
dGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRl
ZCB2aWEgYSBuYXRpdmUgd2luZG93LgotICAgICAgICB2b2lkIGRpZE1vdmVPbnNjcmVlbigpOwot
ICAgICAgICB2b2lkIHdpbGxNb3ZlT2Zmc2NyZWVuKCk7Ci0gICAgICAgIGJvb2wgaXNPbnNjcmVl
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNPbnNjcmVlbjsgfQorICAgIC8vIE5vdGlmaWNhdGlvbnMg
d2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRp
dmUgd2luZG93LgorICAgIHZvaWQgZGlkTW92ZU9uc2NyZWVuKCk7CisgICAgdm9pZCB3aWxsTW92
ZU9mZnNjcmVlbigpOworICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNP
bnNjcmVlbjsgfQogCi0gICAgICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9ucygpOwotICAgICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwotICAgICAg
ICBib29sIHNjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHVzZXJT
dHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXNlclN0
eWxlU2hlZXQoKSBjb25zdDsKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9y
bURpc3BsYXlJRCk7CiAKLSAgICAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgp
OwotICAgICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwotICAgICAgICB2
b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOworICAgIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9ucygpOworICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7Cisg
ICAgYm9vbCBzY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZDsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldERl
YnVnZ2VyRm9yQWxsUGFnZXMoSlNDOjpEZWJ1Z2dlciopOwotICAgICAgICB2b2lkIHNldERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqKTsKLSAgICAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CisgICAgdm9pZCB1c2VyU3R5bGVTaGVldExvY2F0
aW9uQ2hhbmdlZCgpOworICAgIGNvbnN0IFN0cmluZyYgdXNlclN0eWxlU2hlZXQoKSBjb25zdDsK
IAotICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKKyAgICB2b2lk
IGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdT
dGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKik7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKiwgTGlu
a0hhc2ggdmlzaXRlZEhhc2gpOworICAgIHN0YXRpYyB2b2lkIHNldERlYnVnZ2VyRm9yQWxsUGFn
ZXMoSlNDOjpEZWJ1Z2dlciopOworICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciop
OworICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
cjsgfQogCi0gICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0
aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNz
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNp
dGVkTGlua3MoKTsKIAotICAgICAgICB2b2lkIHNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVs
YXkoZG91YmxlKTsKLSAgICAgICAgYm9vbCBoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5ICE9IC0xOyB9
Ci0gICAgICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3QgeyBB
U1NFUlQobV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5ICE9IC0xKTsgcmV0dXJuIG1fY3Vz
dG9tSFRNTFRva2VuaXplclRpbWVEZWxheTsgfQorICAgIHN0YXRpYyB2b2lkIGFsbFZpc2l0ZWRT
dGF0ZUNoYW5nZWQoUGFnZUdyb3VwKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRlZFN0YXRlQ2hh
bmdlZChQYWdlR3JvdXAqLCBMaW5rSGFzaCB2aXNpdGVkSGFzaCk7CiAKLSAgICAgICAgdm9pZCBz
ZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKGludCk7Ci0gICAgICAgIGJvb2wgaGFzQ3Vz
dG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSFRNTFRv
a2VuaXplckNodW5rU2l6ZSAhPSAtMTsgfQotICAgICAgICBpbnQgY3VzdG9tSFRNTFRva2VuaXpl
ckNodW5rU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6
ZSAhPSAtMSk7IHJldHVybiBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemU7IH0KKyAgICBT
dG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRlID0gdHJ1
ZSk7CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+KTsKIAotICAgICAgICB2b2lkIHNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJv
b2wpOwotICAgICAgICBib29sIGFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheShkb3VibGUpOworICAgIGJvb2wgaGFz
Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSFRN
TFRva2VuaXplclRpbWVEZWxheSAhPSAtMTsgfQorICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5p
emVyVGltZURlbGF5KCkgY29uc3QgeyBBU1NFUlQobV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURl
bGF5ICE9IC0xKTsgcmV0dXJuIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheTsgfQogCi0g
ICAgICAgIC8vIERvbid0IGFsbG93IG1vcmUgdGhhbiBhIGNlcnRhaW4gbnVtYmVyIG9mIGZyYW1l
cyBpbiBhIHBhZ2UuCi0gICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBw
ZXIgYm91bmQsIGFuZCBvdGhlcndpc2UgbXV0dWFsbHkKLSAgICAgICAgLy8gcmVjdXJzaXZlIGZy
YW1lc2V0IHBhZ2VzIGNhbiBxdWlja2x5IGJyaW5nIHRoZSBwcm9ncmFtIHRvIGl0cyBrbmVlcwot
ICAgICAgICAvLyB3aXRoIGV4cG9uZW50aWFsIGdyb3d0aCBpbiB0aGUgbnVtYmVyIG9mIGZyYW1l
cy4KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhOdW1iZXJPZkZyYW1lcyA9IDEwMDA7Cisg
ICAgdm9pZCBzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKGludCk7CisgICAgYm9vbCBo
YXNDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21I
VE1MVG9rZW5pemVyQ2h1bmtTaXplICE9IC0xOyB9CisgICAgaW50IGN1c3RvbUhUTUxUb2tlbml6
ZXJDaHVua1NpemUoKSBjb25zdCB7IEFTU0VSVChtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1Np
emUgIT0gLTEpOyByZXR1cm4gbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplOyB9CiAKLSAg
ICAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sIGlzRWRpdGFibGUpIHsgbV9pc0VkaXRhYmxlID0g
aXNFZGl0YWJsZTsgfQotICAgICAgICBib29sIGlzRWRpdGFibGUoKSB7IHJldHVybiBtX2lzRWRp
dGFibGU7IH0KKyAgICB2b2lkIHNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wp
OworICAgIGJvb2wgYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOyB9CisKKyAgICAvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gYSBjZXJ0YWluIG51bWJlciBvZiBmcmFtZXMgaW4gYSBwYWdlLgor
ICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBwZXIgYm91bmQsIGFuZCBvdGhl
cndpc2UgbXV0dWFsbHkKKyAgICAvLyByZWN1cnNpdmUgZnJhbWVzZXQgcGFnZXMgY2FuIHF1aWNr
bHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtuZWVzCisgICAgLy8gd2l0aCBleHBvbmVudGlh
bCBncm93dGggaW4gdGhlIG51bWJlciBvZiBmcmFtZXMuCisgICAgc3RhdGljIGNvbnN0IGludCBt
YXhOdW1iZXJPZkZyYW1lcyA9IDEwMDA7CisKKyAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wgaXNF
ZGl0YWJsZSkgeyBtX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxlOyB9CisgICAgYm9vbCBpc0VkaXRh
YmxlKCkgeyByZXR1cm4gbV9pc0VkaXRhYmxlOyB9CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKLSAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBj
b25zdDsKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0Owog
I2VuZGlmCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5f
UEFHRV9ET01fVElNRVJfVEhST1RUTElORykKLSAgICAgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3Rh
dGUoUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3Rh
dGUoUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CiAjZW5kaWYKIAotICAgICAgICBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQorICAg
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlE
OyB9CiAKLSAgICAgICAgdm9pZCBhZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMp
OwotICAgICAgICBMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dE1pbGVzdG9uZXM7IH0KKyAgICB2b2lkIGFkZExheW91dE1pbGVzdG9uZXMo
TGF5b3V0TWlsZXN0b25lcyk7CisgICAgTGF5b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVz
KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRNaWxlc3RvbmVzOyB9CiAKLSAgICAgICAgYm9vbCBp
c0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpOwotICAgICAgICB2b2lkIHJl
c2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwotICAgICAgICB2b2lkIGFkZFJlbGV2
YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJlY3QmIG9iamVj
dFBhaW50UmVjdCk7Ci0gICAgICAgIHZvaWQgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKKyAgICBib29s
IGlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdDsKKyAgICB2b2lkIHN0
YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKKyAgICB2b2lkIHJlc2V0UmVs
ZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOworICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0
KTsKKyAgICB2b2lkIGFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGNv
bnN0IExheW91dFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKLSAgICAgICAgdm9pZCBzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgdm9pZCByZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgdm9pZCBzZXRJc1BhaW50aW5n
KGJvb2wgcGFpbnRpbmcpIHsgbV9pc1BhaW50aW5nID0gcGFpbnRpbmc7IH0KLSAgICAgICAgYm9v
bCBpc1BhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhaW50aW5nOyB9CisgICAgdm9pZCBz
ZXRJc1BhaW50aW5nKGJvb2wgcGFpbnRpbmcpIHsgbV9pc1BhaW50aW5nID0gcGFpbnRpbmc7IH0K
KyAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGFpbnRpbmc7IH0KICNl
bmRpZgogCi0gICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7IH0KKyAgICBBbHRl
cm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50OyB9CiAKLSAgICAgICAgYm9vbCBoYXNTZWVuUGx1Z2lu
KGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpIGNvbnN0OwotICAgICAgICBib29sIGhhc1NlZW5B
bnlQbHVnaW4oKSBjb25zdDsKLSAgICAgICAgdm9pZCBzYXdQbHVnaW4oY29uc3QgU3RyaW5nJiBz
ZXJ2aWNlVHlwZSk7Ci0gICAgICAgIHZvaWQgcmVzZXRTZWVuUGx1Z2lucygpOworICAgIGJvb2wg
aGFzU2VlblBsdWdpbihjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKSBjb25zdDsKKyAgICBib29s
IGhhc1NlZW5BbnlQbHVnaW4oKSBjb25zdDsKKyAgICB2b2lkIHNhd1BsdWdpbihjb25zdCBTdHJp
bmcmIHNlcnZpY2VUeXBlKTsKKyAgICB2b2lkIHJlc2V0U2VlblBsdWdpbnMoKTsKIAotICAgICAg
ICBib29sIGhhc1NlZW5NZWRpYUVuZ2luZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUpIGNvbnN0
OwotICAgICAgICBib29sIGhhc1NlZW5BbnlNZWRpYUVuZ2luZSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNhd01lZGlhRW5naW5lKGNvbnN0IFN0cmluZyYgZW5naW5lTmFtZSk7Ci0gICAgICAgIHZv
aWQgcmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CisgICAgYm9vbCBoYXNTZWVuTWVkaWFFbmdpbmUo
Y29uc3QgU3RyaW5nJiBlbmdpbmVOYW1lKSBjb25zdDsKKyAgICBib29sIGhhc1NlZW5BbnlNZWRp
YUVuZ2luZSgpIGNvbnN0OworICAgIHZvaWQgc2F3TWVkaWFFbmdpbmUoY29uc3QgU3RyaW5nJiBl
bmdpbmVOYW1lKTsKKyAgICB2b2lkIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwogCi0gICAgICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0
R3JvdXAoKTsKIAogI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2b2lkIGNoZWNrU3ViZnJh
bWVDb3VudENvbnNpc3RlbmN5KCkgY29uc3QgeyB9CisgICAgdm9pZCBjaGVja1N1YmZyYW1lQ291
bnRDb25zaXN0ZW5jeSgpIGNvbnN0IHsgfQogI2Vsc2UKLSAgICAgICAgdm9pZCBjaGVja1N1YmZy
YW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0OworICAgIHZvaWQgY2hlY2tTdWJmcmFtZUNvdW50
Q29uc2lzdGVuY3koKSBjb25zdDsKICNlbmRpZgogCi0gICAgICAgIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOworICAgIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOwogCi0gICAgICAgIHZvaWQg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKLSAgICAgICAgZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUpOworICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCi0gICAg
ICAgIHZvaWQgc2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3VibGUpOwotICAgICAgICBkb3Vi
bGUgdGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGltZXJBbGln
bm1lbnRJbnRlcnZhbChkb3VibGUpOworICAgIGRvdWJsZSB0aW1lckFsaWdubWVudEludGVydmFs
KCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0
cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKyAgICB2b2lkIGNvbGxl
Y3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5W
aWV3QmFzZXMpOwogCi0gICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwotICAgICAgICBP
d25QdHI8RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOworICAgIE93
blB0cjxDaHJvbWU+IG1fY2hyb21lOworICAgIE93blB0cjxEcmFnQ2FyZXRDb250cm9sbGVyPiBt
X2RyYWdDYXJldENvbnRyb2xsZXI7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICAg
ICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0NvbnRyb2xsZXI7CisgICAgT3duUHRyPERy
YWdDb250cm9sbGVyPiBtX2RyYWdDb250cm9sbGVyOwogI2VuZGlmCi0gICAgICAgIE93blB0cjxG
b2N1c0NvbnRyb2xsZXI+IG1fZm9jdXNDb250cm9sbGVyOworICAgIE93blB0cjxGb2N1c0NvbnRy
b2xsZXI+IG1fZm9jdXNDb250cm9sbGVyOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
ICAgICBPd25QdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRleHRNZW51Q29udHJvbGxl
cjsKKyAgICBPd25QdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRleHRNZW51Q29udHJv
bGxlcjsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIE93blB0cjxJbnNw
ZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CisgICAgT3duUHRyPEluc3Bl
Y3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCi0gICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1f
cG9pbnRlckxvY2tDb250cm9sbGVyOworICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+
IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOwogI2VuZGlmCi0gICAgICAgIFJlZlB0cjxTY3JvbGxp
bmdDb29yZGluYXRvcj4gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKKyAgICBSZWZQdHI8U2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7CisKKyAgICBPd25QdHI8U2V0
dGluZ3M+IG1fc2V0dGluZ3M7CisgICAgT3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVz
czsKIAotICAgICAgICBPd25QdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7Ci0gICAgICAgIE93blB0
cjxQcm9ncmVzc1RyYWNrZXI+IG1fcHJvZ3Jlc3M7Ci0gICAgICAgIAotICAgICAgICBPd25QdHI8
QmFja0ZvcndhcmRDb250cm9sbGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKLSAgICAgICAg
UmVmUHRyPEZyYW1lPiBtX21haW5GcmFtZTsKKyAgICBPd25QdHI8QmFja0ZvcndhcmRDb250cm9s
bGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8RnJhbWU+IG1fbWFpbkZy
YW1lOwogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsK
KyAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CiAKLSAgICAgICAg
UmVmUHRyPFJlbmRlclRoZW1lPiBtX3RoZW1lOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90
aGVtZTsKIAotICAgICAgICBFZGl0b3JDbGllbnQqIG1fZWRpdG9yQ2xpZW50OwotICAgICAgICBQ
bHVnSW5DbGllbnQqIG1fcGx1Z0luQ2xpZW50OwotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKKyAgICBFZGl0b3JDbGllbnQqIG1fZWRp
dG9yQ2xpZW50OworICAgIFBsdWdJbkNsaWVudCogbV9wbHVnSW5DbGllbnQ7CisgICAgVmFsaWRh
dGlvbk1lc3NhZ2VDbGllbnQqIG1fdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAKLSAgICAgICAg
RmVhdHVyZU9ic2VydmVyIG1fZmVhdHVyZU9ic2VydmVyOworICAgIEZlYXR1cmVPYnNlcnZlciBt
X2ZlYXR1cmVPYnNlcnZlcjsKIAotICAgICAgICBpbnQgbV9zdWJmcmFtZUNvdW50OwotICAgICAg
ICBTdHJpbmcgbV9ncm91cE5hbWU7Ci0gICAgICAgIGJvb2wgbV9vcGVuZWRCeURPTTsKKyAgICBp
bnQgbV9zdWJmcmFtZUNvdW50OworICAgIFN0cmluZyBtX2dyb3VwTmFtZTsKKyAgICBib29sIG1f
b3BlbmVkQnlET007CiAKLSAgICAgICAgYm9vbCBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
czsKLSAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVm
ZXJzTG9hZGluZ0NhbGxDb3VudDsKKyAgICBib29sIG1fdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzOworICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOworICAgIHVuc2lnbmVkIG1fZGVmZXJzTG9h
ZGluZ0NhbGxDb3VudDsKIAotICAgICAgICBib29sIG1faW5Mb3dRdWFsaXR5SW50ZXJwb2xhdGlv
bk1vZGU7Ci0gICAgICAgIGJvb2wgbV9jb29raWVFbmFibGVkOwotICAgICAgICBib29sIG1fYXJl
TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQ7Ci0gICAgICAgIGZsb2F0IG1fbWVkaWFWb2x1
bWU7CisgICAgYm9vbCBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlOworICAgIGJvb2wg
bV9jb29raWVFbmFibGVkOworICAgIGJvb2wgbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5h
YmxlZDsKKyAgICBmbG9hdCBtX21lZGlhVm9sdW1lOwogCi0gICAgICAgIGZsb2F0IG1fcGFnZVNj
YWxlRmFjdG9yOwotICAgICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOworICAgIGZsb2F0
IG1fcGFnZVNjYWxlRmFjdG9yOworICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAKLSAg
ICAgICAgYm9vbCBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsKKyAgICBib29sIG1fc3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zOwogCi0gICAgICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0
aW9uOworICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCi0gICAgICAgIFN0cmluZyBtX3Vz
ZXJTdHlsZVNoZWV0UGF0aDsKLSAgICAgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyU3R5bGVTaGVl
dDsKLSAgICAgICAgbXV0YWJsZSBib29sIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0OwotICAgICAg
ICBtdXRhYmxlIHRpbWVfdCBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZTsKKyAgICBT
dHJpbmcgbV91c2VyU3R5bGVTaGVldFBhdGg7CisgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyU3R5
bGVTaGVldDsKKyAgICBtdXRhYmxlIGJvb2wgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQ7CisgICAg
bXV0YWJsZSB0aW1lX3QgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWU7CiAKLSAgICAg
ICAgT3duUHRyPFBhZ2VHcm91cD4gbV9zaW5nbGVQYWdlR3JvdXA7Ci0gICAgICAgIFBhZ2VHcm91
cCogbV9ncm91cDsKKyAgICBPd25QdHI8UGFnZUdyb3VwPiBtX3NpbmdsZVBhZ2VHcm91cDsKKyAg
ICBQYWdlR3JvdXAqIG1fZ3JvdXA7CiAKLSAgICAgICAgSlNDOjpEZWJ1Z2dlciogbV9kZWJ1Z2dl
cjsKKyAgICBKU0M6OkRlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCi0gICAgICAgIGRvdWJsZSBtX2N1
c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXk7Ci0gICAgICAgIGludCBtX2N1c3RvbUhUTUxUb2tl
bml6ZXJDaHVua1NpemU7CisgICAgZG91YmxlIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxh
eTsKKyAgICBpbnQgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplOwogCi0gICAgICAgIGJv
b2wgbV9jYW5TdGFydE1lZGlhOworICAgIGJvb2wgbV9jYW5TdGFydE1lZGlhOwogCi0gICAgICAg
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOworICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwogCi0gICAgICAgIFZpZXdNb2RlIG1f
dmlld01vZGU7CisgICAgVmlld01vZGUgbV92aWV3TW9kZTsKIAotICAgICAgICBkb3VibGUgbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKKyAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsK
IAotICAgICAgICBkb3VibGUgbV90aW1lckFsaWdubWVudEludGVydmFsOworICAgIGRvdWJsZSBt
X3RpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CiAKLSAgICAgICAgYm9vbCBtX2lzRWRpdGFibGU7Ci0g
ICAgICAgIGJvb2wgbV9pc09uc2NyZWVuOworICAgIGJvb2wgbV9pc0VkaXRhYmxlOworICAgIGJv
b2wgbV9pc09uc2NyZWVuOwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAg
ICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CisgICAgUGFnZVZpc2li
aWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNlbmRpZgotICAgICAgICBQbGF0Zm9ybURp
c3BsYXlJRCBtX2Rpc3BsYXlJRDsKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsK
IAotICAgICAgICBMYXlvdXRNaWxlc3RvbmVzIG1fbGF5b3V0TWlsZXN0b25lczsKKyAgICBMYXlv
dXRNaWxlc3RvbmVzIG1fbGF5b3V0TWlsZXN0b25lczsKIAotICAgICAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+IG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3RzOwotICAgICAgICBSZWdp
b24gbV9yZWxldmFudFBhaW50ZWRSZWdpb247Ci0gICAgICAgIFJlZ2lvbiBtX3JlbGV2YW50VW5w
YWludGVkUmVnaW9uOwotICAgICAgICBib29sIG1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVk
T2JqZWN0czsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fcmVsZXZhbnRVbnBhaW50ZWRS
ZW5kZXJPYmplY3RzOworICAgIFJlZ2lvbiBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbjsKKyAgICBS
ZWdpb24gbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbjsKKyAgICBib29sIG1faXNDb3VudGluZ1Jl
bGV2YW50UmVwYWludGVkT2JqZWN0czsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJvb2wgbV9p
c1BhaW50aW5nOworICAgIGJvb2wgbV9pc1BhaW50aW5nOwogI2VuZGlmCi0gICAgICAgIEFsdGVy
bmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7CisgICAgQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsKIAotICAgICAgICBib29sIG1f
c2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOworICAgIGJvb2wgbV9zY3JpcHRlZEFuaW1hdGlv
bnNTdXNwZW5kZWQ7CiAKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7Ci0gICAgfTsKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9zZWVuUGx1Z2luczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9zZWVu
TWVkaWFFbmdpbmVzOworfTsKKworUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCit7CisgICAgaWYg
KCFtX2dyb3VwKQorICAgICAgICBpbml0R3JvdXAoKTsKKyAgICByZXR1cm4gKm1fZ3JvdXA7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187000</attachid>
            <date>2013-02-06 23:48:42 -0800</date>
            <delta_ts>2013-02-06 23:57:26 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-109138-20130207164518.patch</filename>
            <type>text/plain</type>
            <size>44158</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTljOGRlNmQ0ZDJiMzRj
OWQ3MzE3Mzg3N2JiYjA1NjE3MGFhOTAxNS4uNjcwMWI0OTYzMzNiY2U5NDhiNDZiZGUzMjdlZTE2
ZWZiMDU3NDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAyLTA2ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggc3R5bGUgb2YgQ2hy
b21lLmggYW5kIFBhZ2UuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBKdXN0IHN0eWxlIGZpeGVzLgorCisgICAgICAgICogcGFn
ZS9DaHJvbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ2hyb21lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZTo6Y2xpZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyZW5h
U2l6ZTo6QXJlbmFTaXplKToKKyAgICAgICAgKEFyZW5hU2l6ZSk6CisgICAgICAgIChQYWdlKToK
KyAgICAgICAgKFBhZ2VDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnRoZW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNhblN0YXJ0TWVkaWEpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZWRpdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBsdWdJbkNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptYWluRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Z3JvdXBQdHIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5jcmVtZW50
U3ViZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkZWNyZW1lbnRTdWJmcmFt
ZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN1YmZyYW1lQ291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6Y2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRyYWdD
YXJldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZHJhZ0NvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Zm9jdXNDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmNvbnRleHRNZW51Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBvaW50
ZXJMb2NrQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp2YWxpZGF0aW9uTWVz
c2FnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpwcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpiYWNr
Rm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmZWF0dXJlT2JzZXJ2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6dmlld01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
Y2hlZHVsZWRSdW5Mb29wUGFpcnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGVmZXJzTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVZvbHVtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpwYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
ZGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2hvdWxkU3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhZ2luYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNPbnNjcmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6ZGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aGFzQ3VzdG9tSFRN
TFRva2VuaXplclRpbWVEZWxheSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjdXN0b21IVE1M
VG9rZW5pemVyVGltZURlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omhhc0N1c3RvbUhU
TUxUb2tlbml6ZXJDaHVua1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y3VzdG9tSFRN
TFRva2VuaXplckNodW5rU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphcmVNZW1vcnlD
YWNoZUNsaWVudENhbGxzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRFZGl0
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0VkaXRhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmRpc3BsYXlJRCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsYXlvdXRN
aWxlc3RvbmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldElzUGFpbnRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6aXNQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjphbHRlcm5hdGl2ZVRleHRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y2hlY2tT
dWJmcmFtZUNvdW50Q29uc2lzdGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z3JvdXAp
OgorCiAyMDEzLTAyLTA2ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIGRvY3VtZW50LnJlZmVycmVyIGxlYWthZ2Ugd2l0aCBYU1MgQXVkaXRvciBwYWdlIGJsb2Nr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuaAppbmRleCBlNzhmMzg1ODFhNjRmYjBiZjhmYzc3MWEyY2JlNzM0NGFl
NmFiMjI2Li41MjkzYzRhNmIxZjQ3ZmQwMzBlNmM4MGQ3OTI3MzY1ZDc2YzE2YjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKQEAgLTM2LDE1OCArMzYsMTU2IEBAIGNsYXNzIE5TVmlldzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQ2hyb21lQ2xpZW50OwotI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIGNsYXNzIENvbG9yQ2hvb3NlcjsKLSAgICBjbGFzcyBDb2xvckNo
b29zZXJDbGllbnQ7Ci0jZW5kaWYKLSAgICBjbGFzcyBEYXRlVGltZUNob29zZXI7Ci0gICAgY2xh
c3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50OwotICAgIGNsYXNzIEZpbGVDaG9vc2VyOwotICAgIGNs
YXNzIEZpbGVJY29uTG9hZGVyOwotICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBHZW9sb2NhdGlvbjsKLSAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwotICAg
IGNsYXNzIEludFJlY3Q7Ci0gICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKLSAgICBjbGFzcyBO
b2RlOwotICAgIGNsYXNzIFBhZ2U7Ci0gICAgY2xhc3MgUG9wdXBNZW51OwotICAgIGNsYXNzIFBv
cHVwTWVudUNsaWVudDsKLSAgICBjbGFzcyBQb3B1cE9wZW5pbmdPYnNlcnZlcjsKLSAgICBjbGFz
cyBTZWFyY2hQb3B1cE1lbnU7Ci0KLSAgICBzdHJ1Y3QgRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVy
czsKLSAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKLSAgICBzdHJ1Y3QgVmlld3BvcnRBcmd1
bWVudHM7Ci0gICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOworY2xhc3MgQ2hyb21lQ2xpZW50Owor
Y2xhc3MgQ29sb3JDaG9vc2VyOworY2xhc3MgQ29sb3JDaG9vc2VyQ2xpZW50OworY2xhc3MgRGF0
ZVRpbWVDaG9vc2VyOworY2xhc3MgRGF0ZVRpbWVDaG9vc2VyQ2xpZW50OworY2xhc3MgRmlsZUNo
b29zZXI7CitjbGFzcyBGaWxlSWNvbkxvYWRlcjsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEZy
YW1lOworY2xhc3MgR2VvbG9jYXRpb247CitjbGFzcyBIaXRUZXN0UmVzdWx0OworY2xhc3MgSW50
UmVjdDsKK2NsYXNzIE5hdmlnYXRpb25BY3Rpb247CitjbGFzcyBOb2RlOworY2xhc3MgUGFnZTsK
K2NsYXNzIFBvcHVwTWVudTsKK2NsYXNzIFBvcHVwTWVudUNsaWVudDsKK2NsYXNzIFBvcHVwT3Bl
bmluZ09ic2VydmVyOworY2xhc3MgU2VhcmNoUG9wdXBNZW51OworCitzdHJ1Y3QgRGF0ZVRpbWVD
aG9vc2VyUGFyYW1ldGVyczsKK3N0cnVjdCBGcmFtZUxvYWRSZXF1ZXN0Oworc3RydWN0IFZpZXdw
b3J0QXJndW1lbnRzOworc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogICAgIAotICAgIGNsYXNzIENo
cm9tZSA6IHB1YmxpYyBIb3N0V2luZG93IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIH5DaHJvbWUo
KTsKLQotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxDaHJvbWU+IGNyZWF0ZShQYWdlKiwgQ2hy
b21lQ2xpZW50Kik7CitjbGFzcyBDaHJvbWUgOiBwdWJsaWMgSG9zdFdpbmRvdyB7CitwdWJsaWM6
CisgICAgfkNocm9tZSgpOwogCi0gICAgICAgIENocm9tZUNsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQ7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxDaHJvbWU+IGNyZWF0ZShQYWdl
KiwgQ2hyb21lQ2xpZW50Kik7CiAKLSAgICAgICAgLy8gSG9zdFdpbmRvdyBtZXRob2RzLgorICAg
IENocm9tZUNsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVS
UklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3
KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYsIGJvb2wpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgSW50UmVjdCYpOworICAgIC8vIEhvc3RXaW5kb3cgbWV0aG9kcy4KKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50
UmVjdCYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVu
dHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIE9WRVJSSURFOwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb2ludCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25z
dCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpIE9WRVJSSURFOwogI2VuZGlmCi0gICAgICAgIHZpcnR1
YWwgSW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IE9WRVJS
SURFOwotICAgICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRS
ZWN0JikgY29uc3QgT1ZFUlJJREU7Ci0gICAgICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50
IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNv
cihjb25zdCBDdXJzb3ImKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sKTsKKyAgICB2aXJ0dWFsIEludFBvaW50IHNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
cm9vdFZpZXdUb1NjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wp
IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVBbmltYXRpb24oKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgc2Nyb2xs
UmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFJlY3RJ
bnRvVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CisKKyAgICB2b2lkIGNvbnRlbnRzU2l6ZUNo
YW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdm9pZCBsYXlvdXRVcGRh
dGVkKEZyYW1lKikgY29uc3Q7CisKKyAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsKIAotICAgICAg
ICB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoRnJhbWUqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7
Ci0gICAgICAgIHZvaWQgbGF5b3V0VXBkYXRlZChGcmFtZSopIGNvbnN0OworICAgIEZsb2F0UmVj
dCBwYWdlUmVjdCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBG
bG9hdFJlY3QmKSBjb25zdDsKLSAgICAgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBjb25zdDsK
KyAgICB2b2lkIGZvY3VzKCkgY29uc3Q7CisgICAgdm9pZCB1bmZvY3VzKCkgY29uc3Q7CiAKLSAg
ICAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICB2b2lk
IGZvY3VzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgdW5mb2N1cygpIGNvbnN0OworICAgIGJvb2wg
Y2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBjb25zdDsKKyAgICB2b2lkIHRha2VGb2N1cyhG
b2N1c0RpcmVjdGlvbikgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBjYW5UYWtlRm9jdXMoRm9jdXNE
aXJlY3Rpb24pIGNvbnN0OwotICAgICAgICB2b2lkIHRha2VGb2N1cyhGb2N1c0RpcmVjdGlvbikg
Y29uc3Q7CisgICAgdm9pZCBmb2N1c2VkTm9kZUNoYW5nZWQoTm9kZSopIGNvbnN0OworICAgIHZv
aWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIGNvbnN0OwogCi0gICAgICAgIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKE5vZGUqKSBjb25zdDsKLSAgICAgICAgdm9pZCBmb2N1c2VkRnJhbWVD
aGFuZ2VkKEZyYW1lKikgY29uc3Q7CisgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYpIGNvbnN0OworICAgIHZvaWQgc2hvdygpIGNvbnN0OwogCi0gICAgICAgIFBh
Z2UqIGNyZWF0ZVdpbmRvdyhGcmFtZSosIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBX
aW5kb3dGZWF0dXJlcyYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzaG93KCkgY29uc3Q7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OworICAgIGJv
b2wgY2FuUnVuTW9kYWxOb3coKSBjb25zdDsKKyAgICB2b2lkIHJ1bk1vZGFsKCkgY29uc3Q7CiAK
LSAgICAgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIGNvbnN0OwotICAgICAgICBib29sIGNhblJ1bk1v
ZGFsTm93KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgcnVuTW9kYWwoKSBjb25zdDsKKyAgICB2b2lk
IHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBjb25zdDsKKyAgICBib29sIHRvb2xiYXJzVmlzaWJs
ZSgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIGNvbnN0
OwotICAgICAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpIGNvbnN0OwotICAgICAgICAKLSAgICAg
ICAgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIGNvbnN0OwotICAgICAgICBib29sIHN0
YXR1c2JhclZpc2libGUoKSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0U2Nyb2xs
YmFyc1Zpc2libGUoYm9vbCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUo
KSBjb25zdDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc2V0TWVudWJhclZpc2libGUoYm9vbCkg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgbWVudWJhclZpc2libGUoKSBjb25zdDsKLSAgICAgICAgCi0g
ICAgICAgIHZvaWQgc2V0UmVzaXphYmxlKGJvb2wpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhdHVz
YmFyVmlzaWJsZShib29sKSBjb25zdDsKKyAgICBib29sIHN0YXR1c2JhclZpc2libGUoKSBjb25z
dDsKIAotICAgICAgICBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwotICAg
ICAgICBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEZyYW1lKiBmcmFtZSk7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKSBj
b25zdDsKKyAgICBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9p
ZCBjbG9zZVdpbmRvd1Nvb24oKTsKKyAgICB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wpIGNv
bnN0OworICAgIGJvb2wgbWVudWJhclZpc2libGUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChGcmFtZSosIGNvbnN0IFN0cmluZyYpOwotICAgICAgICBib29sIHJ1
bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGJvb2wg
cnVuSmF2YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KTsKLSAgICAgICAgdm9pZCBzZXRT
dGF0dXNiYXJUZXh0KEZyYW1lKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIGJvb2wgc2hvdWxk
SW50ZXJydXB0SmF2YVNjcmlwdCgpOworICAgIHZvaWQgc2V0UmVzaXphYmxlKGJvb2wpIGNvbnN0
OwogCi0gICAgICAgIEludFJlY3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKKyAgICBib29s
IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOworICAgIGJvb2wgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRnJhbWUqKTsKIAotICAgICAg
ICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNp
Z25lZCBtb2RpZmllckZsYWdzKTsKKyAgICB2b2lkIGNsb3NlV2luZG93U29vbigpOwogCi0gICAg
ICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisgICAgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBydW5KYXZhU2Ny
aXB0UHJvbXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChG
cmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dCgpOwogCi0gICAgICAgIHZvaWQgcHJpbnQoRnJhbWUqKTsKKyAgICBJbnRSZWN0IHdpbmRvd1Jl
c2l6ZXJSZWN0KCkgY29uc3Q7CisKKyAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKKworICAgIHZvaWQg
c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CisKKyAgICB2b2lkIHByaW50KEZyYW1l
Kik7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgUGFzc093blB0cjxD
b2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihDb2xvckNob29zZXJDbGllbnQqLCBjb25z
dCBDb2xvciYgaW5pdGlhbENvbG9yKTsKKyAgICBQYXNzT3duUHRyPENvbG9yQ2hvb3Nlcj4gY3Jl
YXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJiBpbml0aWFs
Q29sb3IpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCi0g
ICAgICAgIFBhc3NSZWZQdHI8RGF0ZVRpbWVDaG9vc2VyPiBvcGVuRGF0ZVRpbWVDaG9vc2VyKERh
dGVUaW1lQ2hvb3NlckNsaWVudCosIGNvbnN0IERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMmKTsK
KyAgICBQYXNzUmVmUHRyPERhdGVUaW1lQ2hvb3Nlcj4gb3BlbkRhdGVUaW1lQ2hvb3NlcihEYXRl
VGltZUNob29zZXJDbGllbnQqLCBjb25zdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzJik7CiAj
ZW5kaWYKIAotICAgICAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8Rmls
ZUNob29zZXI+KTsKLSAgICAgICAgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgRmlsZUljb25Mb2FkZXIqKTsKKyAgICB2b2lkIHJ1bk9wZW5QYW5lbChGcmFtZSos
IFBhc3NSZWZQdHI8RmlsZUNob29zZXI+KTsKKyAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBGaWxlSWNvbkxvYWRlciopOwogI2lmIEVOQUJMRShESVJFQ1RP
UllfVVBMT0FEKQotICAgICAgICB2b2lkIGVudW1lcmF0ZUNob3NlbkRpcmVjdG9yeShGaWxlQ2hv
b3NlciopOworICAgIHZvaWQgZW51bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KEZpbGVDaG9vc2VyKik7
CiAjZW5kaWYKIAotICAgICAgICB2b2lkIGRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hh
bmdlKGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJikgY29uc3Q7CisgICAgdm9pZCBkaXNwYXRjaFZp
ZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwor
ICAgIGJvb2wgcmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICB2b2lkIGZvY3VzTlNWaWV3KE5TVmlldyopOworICAgIHZvaWQg
Zm9jdXNOU1ZpZXcoTlNWaWV3Kik7CiAjZW5kaWYKIAotICAgICAgICBib29sIHNlbGVjdEl0ZW1X
cml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAgICAgIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwotICAgICAgICBib29sIGhhc09wZW5l
ZFBvcHVwKCkgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8UG9wdXBNZW51PiBjcmVhdGVQb3B1
cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0gICAgICAgIFBhc3NSZWZQdHI8U2VhcmNo
UG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7
CisgICAgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpOworICAgIGJv
b2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOworICAg
IGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFBvcHVwTWVudT4g
Y3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50Kikg
Y29uc3Q7CisKKyAgICB2b2lkIHJlZ2lzdGVyUG9wdXBPcGVuaW5nT2JzZXJ2ZXIoUG9wdXBPcGVu
aW5nT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQ
b3B1cE9wZW5pbmdPYnNlcnZlciopOwogCi0gICAgICAgIHZvaWQgcmVnaXN0ZXJQb3B1cE9wZW5p
bmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciopOwotICAgICAgICB2b2lkIHVucmVnaXN0
ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcihQb3B1cE9wZW5pbmdPYnNlcnZlciopOworcHJpdmF0ZToK
KyAgICBDaHJvbWUoUGFnZSosIENocm9tZUNsaWVudCopOworICAgIHZvaWQgbm90aWZ5UG9wdXBP
cGVuaW5nT2JzZXJ2ZXJzKCkgY29uc3Q7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBDaHJvbWUo
UGFnZSosIENocm9tZUNsaWVudCopOwotICAgICAgICB2b2lkIG5vdGlmeVBvcHVwT3BlbmluZ09i
c2VydmVycygpIGNvbnN0OworICAgIFBhZ2UqIG1fcGFnZTsKKyAgICBDaHJvbWVDbGllbnQqIG1f
Y2xpZW50OworICAgIFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG1fcG9wdXBPcGVuaW5n
T2JzZXJ2ZXJzOworfTsKIAotICAgICAgICBQYWdlKiBtX3BhZ2U7Ci0gICAgICAgIENocm9tZUNs
aWVudCogbV9jbGllbnQ7Ci0gICAgICAgIFZlY3RvcjxQb3B1cE9wZW5pbmdPYnNlcnZlcio+IG1f
cG9wdXBPcGVuaW5nT2JzZXJ2ZXJzOwotICAgIH07CiB9CiAKICNlbmRpZiAvLyBDaHJvbWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3N2RkNWNjZDg2NzQzNTFmMmU2MGE3NTNhMGQ3ZmFlYzk1OWM5Yjdm
Li5kZjYzYjA0ZGIyNDQ2YTI0NmE1NzZlMjA1MmI4ZGZkZjlkNWVjNjVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMjIsOCArMjIsOCBAQAogI2RlZmluZSBQYWdlX2gKIAogI2luY2x1ZGUgIkZlYXR1cmVP
YnNlcnZlci5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGaW5k
T3B0aW9ucy5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlv
dXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlBhZ2VW
aXNpYmlsaXR5U3RhdGUuaCIKQEAgLTQ3LDQ1MCArNDcsNDU1IEBACiAjZW5kaWYKIAogbmFtZXNw
YWNlIEpTQyB7Ci0gICAgY2xhc3MgRGVidWdnZXI7CitjbGFzcyBEZWJ1Z2dlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OwotICAg
IGNsYXNzIEJhY2tGb3J3YXJkQ29udHJvbGxlcjsKLSAgICBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7
Ci0gICAgY2xhc3MgQ2hyb21lOwotICAgIGNsYXNzIENocm9tZUNsaWVudDsKLSAgICBjbGFzcyBD
bGllbnRSZWN0TGlzdDsKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBjbGFzcyBDb250
ZXh0TWVudUNsaWVudDsKLSAgICBjbGFzcyBDb250ZXh0TWVudUNvbnRyb2xsZXI7Ci0jZW5kaWYK
LSAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBEcmFnQ2FyZXRDb250cm9sbGVyOwotICAg
IGNsYXNzIERyYWdDbGllbnQ7Ci0gICAgY2xhc3MgRHJhZ0NvbnRyb2xsZXI7Ci0gICAgY2xhc3Mg
RWRpdG9yQ2xpZW50OwotICAgIGNsYXNzIEZvY3VzQ29udHJvbGxlcjsKLSAgICBjbGFzcyBGcmFt
ZTsKLSAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKLSAgICBjbGFzcyBIYWx0YWJsZVBsdWdpbjsK
LSAgICBjbGFzcyBIaXN0b3J5SXRlbTsKLSAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci0gICAg
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXI7Ci0gICAgY2xhc3MgTm9kZTsKLSAgICBjbGFzcyBQYWdlR3JvdXA7Ci0gICAgY2xhc3MgUGx1
Z0luQ2xpZW50OwotICAgIGNsYXNzIFBsdWdpbkRhdGE7Ci0gICAgY2xhc3MgUGx1Z2luVmlld0Jh
c2U7Ci0gICAgY2xhc3MgUG9pbnRlckxvY2tDb250cm9sbGVyOwotICAgIGNsYXNzIFByb2dyZXNz
VHJhY2tlcjsKLSAgICBjbGFzcyBSYW5nZTsKLSAgICBjbGFzcyBSZW5kZXJPYmplY3Q7Ci0gICAg
Y2xhc3MgUmVuZGVyVGhlbWU7Ci0gICAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKLSAgICBjbGFz
cyBTY3JvbGxhYmxlQXJlYTsKLSAgICBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvcjsKLSAgICBj
bGFzcyBTZXR0aW5nczsKLSAgICBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlOwotICAgIGNsYXNzIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50OwotCi0gICAgdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsK
LQotICAgIGVudW0gRmluZERpcmVjdGlvbiB7IEZpbmREaXJlY3Rpb25Gb3J3YXJkLCBGaW5kRGly
ZWN0aW9uQmFja3dhcmQgfTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKEZyYW1lKik7
Ci0KLSAgICBzdHJ1Y3QgQXJlbmFTaXplIHsKLSAgICAgICAgQXJlbmFTaXplKHNpemVfdCB0cmVl
U2l6ZSwgc2l6ZV90IGFsbG9jYXRlZCkKLSAgICAgICAgICAgIDogdHJlZVNpemUodHJlZVNpemUp
Ci0gICAgICAgICAgICAsIGFsbG9jYXRlZChhbGxvY2F0ZWQpCi0gICAgICAgIHsKLSAgICAgICAg
fQotICAgICAgICBzaXplX3QgdHJlZVNpemU7Ci0gICAgICAgIHNpemVfdCBhbGxvY2F0ZWQ7Ci0g
ICAgfTsKLQotICAgIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewot
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IFNldHRpbmdzOworY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50OworY2xhc3MgQmFja0Zvcndh
cmRDb250cm9sbGVyOworY2xhc3MgQmFja0ZvcndhcmRMaXN0OworY2xhc3MgQ2hyb21lOworY2xh
c3MgQ2hyb21lQ2xpZW50OworY2xhc3MgQ2xpZW50UmVjdExpc3Q7CitjbGFzcyBDb250ZXh0TWVu
dUNsaWVudDsKK2NsYXNzIENvbnRleHRNZW51Q29udHJvbGxlcjsKK2NsYXNzIERvY3VtZW50Owor
Y2xhc3MgRHJhZ0NhcmV0Q29udHJvbGxlcjsKK2NsYXNzIERyYWdDbGllbnQ7CitjbGFzcyBEcmFn
Q29udHJvbGxlcjsKK2NsYXNzIEVkaXRvckNsaWVudDsKK2NsYXNzIEZvY3VzQ29udHJvbGxlcjsK
K2NsYXNzIEZyYW1lOworY2xhc3MgRnJhbWVTZWxlY3Rpb247CitjbGFzcyBIYWx0YWJsZVBsdWdp
bjsKK2NsYXNzIEhpc3RvcnlJdGVtOworY2xhc3MgSW5zcGVjdG9yQ2xpZW50OworY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKK2NsYXNzIE5v
ZGU7CitjbGFzcyBQYWdlR3JvdXA7CitjbGFzcyBQbHVnSW5DbGllbnQ7CitjbGFzcyBQbHVnaW5E
YXRhOworY2xhc3MgUGx1Z2luVmlld0Jhc2U7CitjbGFzcyBQb2ludGVyTG9ja0NvbnRyb2xsZXI7
CitjbGFzcyBQcm9ncmVzc1RyYWNrZXI7CitjbGFzcyBSYW5nZTsKK2NsYXNzIFJlbmRlck9iamVj
dDsKK2NsYXNzIFJlbmRlclRoZW1lOworY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKK2NsYXNzIFNj
cm9sbGFibGVBcmVhOworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3I7CitjbGFzcyBTZXR0aW5n
czsKK2NsYXNzIFN0b3JhZ2VOYW1lc3BhY2U7CitjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dDsKKwordHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKKworZW51bSBGaW5kRGlyZWN0aW9uIHsg
RmluZERpcmVjdGlvbkZvcndhcmQsIEZpbmREaXJlY3Rpb25CYWNrd2FyZCB9OworCitmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcihGcmFtZSopOworCitzdHJ1Y3QgQXJlbmFTaXplIHsKKyAgICBBcmVu
YVNpemUoc2l6ZV90IHRyZWVTaXplLCBzaXplX3QgYWxsb2NhdGVkKQorICAgICAgICA6IHRyZWVT
aXplKHRyZWVTaXplKQorICAgICAgICAsIGFsbG9jYXRlZChhbGxvY2F0ZWQpCisgICAgeworICAg
IH0KKyAgICBzaXplX3QgdHJlZVNpemU7CisgICAgc2l6ZV90IGFsbG9jYXRlZDsKK307CisKK2Ns
YXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBhZ2UpOworICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKKwor
ICAgIC8vIEl0IGlzIHVwIHRvIHRoZSBwbGF0Zm9ybSB0byBlbnN1cmUgdGhhdCBub24tbnVsbCBj
bGllbnRzIGFyZSBwcm92aWRlZCB3aGVyZSByZXF1aXJlZC4KKyAgICBzdHJ1Y3QgUGFnZUNsaWVu
dHMgeworICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ2xpZW50cyk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgc2NoZWR1
bGVGb3JjZWRTdHlsZVJlY2FsY0ZvckFsbFBhZ2VzKCk7Ci0KLSAgICAgICAgLy8gSXQgaXMgdXAg
dG8gdGhlIHBsYXRmb3JtIHRvIGVuc3VyZSB0aGF0IG5vbi1udWxsIGNsaWVudHMgYXJlIHByb3Zp
ZGVkIHdoZXJlIHJlcXVpcmVkLgotICAgICAgICBzdHJ1Y3QgUGFnZUNsaWVudHMgewotICAgICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNsaWVudHMpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgUGFnZUNsaWVudHMoKTsKLSAg
ICAgICAgICAgIH5QYWdlQ2xpZW50cygpOworICAgICAgICBQYWdlQ2xpZW50cygpOworICAgICAg
ICB+UGFnZUNsaWVudHMoKTsKIAotICAgICAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBh
bHRlcm5hdGl2ZVRleHRDbGllbnQ7Ci0gICAgICAgICAgICBDaHJvbWVDbGllbnQqIGNocm9tZUNs
aWVudDsKKyAgICAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGll
bnQ7CisgICAgICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xpZW50OwogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgICAgICAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xp
ZW50OworICAgICAgICBDb250ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQ7CiAjZW5k
aWYKLSAgICAgICAgICAgIEVkaXRvckNsaWVudCogZWRpdG9yQ2xpZW50OwotICAgICAgICAgICAg
RHJhZ0NsaWVudCogZHJhZ0NsaWVudDsKLSAgICAgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50OwotICAgICAgICAgICAgUGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQ7Ci0g
ICAgICAgICAgICBSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZENsaWVudDsKLSAg
ICAgICAgICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVu
dDsKLSAgICAgICAgfTsKKyAgICAgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQ7CisgICAg
ICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQ7CisgICAgICAgIEluc3BlY3RvckNsaWVudCogaW5z
cGVjdG9yQ2xpZW50OworICAgICAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudDsKKyAgICAg
ICAgUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRDbGllbnQ7CisgICAgICAgIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50KiB2YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKKyAgICB9Owog
Ci0gICAgICAgIGV4cGxpY2l0IFBhZ2UoUGFnZUNsaWVudHMmKTsKLSAgICAgICAgflBhZ2UoKTsK
KyAgICBleHBsaWNpdCBQYWdlKFBhZ2VDbGllbnRzJik7CisgICAgflBhZ2UoKTsKIAotICAgICAg
ICBBcmVuYVNpemUgcmVuZGVyVHJlZVNpemUoKSBjb25zdDsKKyAgICBBcmVuYVNpemUgcmVuZGVy
VHJlZVNpemUoKSBjb25zdDsKIAotICAgICAgICB2b2lkIHNldE5lZWRzUmVjYWxjU3R5bGVJbkFs
bEZyYW1lcygpOworICAgIHZvaWQgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CiAK
LSAgICAgICAgUmVuZGVyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZS5nZXQo
KTsgfTsKKyAgICBSZW5kZXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lLmdl
dCgpOyB9CiAKLSAgICAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBj
b25zdDsKKyAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0Owog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKLSAgICAg
ICAgUGx1Z2luRGF0YSogcGx1Z2luRGF0YSgpIGNvbnN0OworICAgIHN0YXRpYyB2b2lkIHJlZnJl
c2hQbHVnaW5zKGJvb2wgcmVsb2FkKTsKKyAgICBQbHVnaW5EYXRhKiBwbHVnaW5EYXRhKCkgY29u
c3Q7CiAKLSAgICAgICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhKGJvb2wpOwotICAgICAgICBib29s
IGNhblN0YXJ0TWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KKyAgICB2
b2lkIHNldENhblN0YXJ0TWVkaWEoYm9vbCk7CisgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICAgICAgRWRpdG9yQ2xpZW50KiBl
ZGl0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQotICAgICAgICBQ
bHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0luQ2xpZW50
OyB9CisgICAgRWRpdG9yQ2xpZW50KiBlZGl0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2Vk
aXRvckNsaWVudDsgfQorICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAotICAgICAgICB2b2lkIHNldE1haW5GcmFtZShQYXNz
UmVmUHRyPEZyYW1lPik7Ci0gICAgICAgIEZyYW1lKiBtYWluRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX21haW5GcmFtZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0TWFpbkZyYW1lKFBhc3NSZWZQdHI8
RnJhbWU+KTsKKyAgICBGcmFtZSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJh
bWUuZ2V0KCk7IH0KIAotICAgICAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0T3BlbmVkQnlET00oKTsKKyAgICBib29sIG9wZW5lZEJ5RE9NKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRPcGVuZWRCeURPTSgpOwogCi0gICAgICAgIC8vIERFUFJFQ0FURUQuIFVzZSBi
YWNrRm9yd2FyZCgpIGluc3RlYWQgb2YgdGhlIGZvbGxvd2luZyA2IGZ1bmN0aW9ucy4KLSAgICAg
ICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QoKSBjb25zdDsKLSAgICAgICAgYm9v
bCBnb0JhY2soKTsKLSAgICAgICAgYm9vbCBnb0ZvcndhcmQoKTsKLSAgICAgICAgYm9vbCBjYW5H
b0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKLSAgICAgICAgdm9pZCBnb0JhY2tP
ckZvcndhcmQoaW50IGRpc3RhbmNlKTsKLSAgICAgICAgaW50IGdldEhpc3RvcnlMZW5ndGgoKTsK
KyAgICAvLyBERVBSRUNBVEVELiBVc2UgYmFja0ZvcndhcmQoKSBpbnN0ZWFkIG9mIHRoZSBmb2xs
b3dpbmcgNiBmdW5jdGlvbnMuCisgICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Qo
KSBjb25zdDsKKyAgICBib29sIGdvQmFjaygpOworICAgIGJvb2wgZ29Gb3J3YXJkKCk7CisgICAg
Ym9vbCBjYW5Hb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNlKSBjb25zdDsKKyAgICB2b2lkIGdv
QmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpOworICAgIGludCBnZXRIaXN0b3J5TGVuZ3RoKCk7
CiAKLSAgICAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUpOwor
ICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKIAotICAgICAg
ICB2b2lkIHNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICAgICAgY29uc3QgU3RyaW5n
JiBncm91cE5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldEdyb3VwTmFtZShjb25zdCBTdHJpbmcm
KTsKKyAgICBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSgpIGNvbnN0OwogCi0gICAgICAgIFBhZ2VH
cm91cCYgZ3JvdXAoKSB7IGlmICghbV9ncm91cCkgaW5pdEdyb3VwKCk7IHJldHVybiAqbV9ncm91
cDsgfQotICAgICAgICBQYWdlR3JvdXAqIGdyb3VwUHRyKCkgeyByZXR1cm4gbV9ncm91cDsgfSAv
LyBjYW4gcmV0dXJuIDAKKyAgICBQYWdlR3JvdXAmIGdyb3VwKCk7CisgICAgUGFnZUdyb3VwKiBn
cm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8gY2FuIHJldHVybiAwCiAKLSAgICAgICAg
dm9pZCBpbmNyZW1lbnRTdWJmcmFtZUNvdW50KCkgeyArK21fc3ViZnJhbWVDb3VudDsgfQotICAg
ICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1YmZyYW1lQ291
bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQotICAgICAgICBpbnQgc3ViZnJhbWVDb3VudCgpIGNv
bnN0IHsgY2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1fc3ViZnJhbWVD
b3VudDsgfQorICAgIHZvaWQgaW5jcmVtZW50U3ViZnJhbWVDb3VudCgpIHsgKyttX3N1YmZyYW1l
Q291bnQ7IH0KKyAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQoKSB7IEFTU0VSVChtX3N1
YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQorICAgIGludCBzdWJmcmFtZUNvdW50
KCkgY29uc3QgeyBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9zdWJm
cmFtZUNvdW50OyB9CiAKLSAgICAgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBt
X2Nocm9tZS5nZXQoKTsgfQotICAgICAgICBEcmFnQ2FyZXRDb250cm9sbGVyKiBkcmFnQ2FyZXRD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ2FyZXRDb250cm9sbGVyLmdldCgpOyB9
CisgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBtX2Nocm9tZS5nZXQoKTsgfQor
ICAgIERyYWdDYXJldENvbnRyb2xsZXIqIGRyYWdDYXJldENvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdDYXJldENvbnRyb2xsZXIuZ2V0KCk7IH0KICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdDb250cm9sbGVyLmdldCgpOyB9CisgICAgRHJhZ0NvbnRyb2xsZXIqIGRyYWdD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ29udHJvbGxlci5nZXQoKTsgfQogI2Vu
ZGlmCi0gICAgICAgIEZvY3VzQ29udHJvbGxlciogZm9jdXNDb250cm9sbGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9mb2N1c0NvbnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBGb2N1c0NvbnRyb2xsZXIqIGZv
Y3VzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNDb250cm9sbGVyLmdldCgpOyB9
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgICAgIENvbnRleHRNZW51Q29udHJvbGxl
ciogY29udGV4dE1lbnVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0TWVudUNv
bnRyb2xsZXIuZ2V0KCk7IH0KKyAgICBDb250ZXh0TWVudUNvbnRyb2xsZXIqIGNvbnRleHRNZW51
Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dE1lbnVDb250cm9sbGVyLmdldCgp
OyB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JD
b250cm9sbGVyLmdldCgpOyB9CisgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKLSAgICAgICAgUG9pbnRlckxvY2tDb250
cm9sbGVyKiBwb2ludGVyTG9ja0NvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXJM
b2NrQ29udHJvbGxlci5nZXQoKTsgfQorICAgIFBvaW50ZXJMb2NrQ29udHJvbGxlciogcG9pbnRl
ckxvY2tDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyTG9ja0NvbnRyb2xsZXIu
Z2V0KCk7IH0KICNlbmRpZgotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRh
dGlvbk1lc3NhZ2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50OyB9Ci0KLSAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCk7Ci0KLSAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwotICAg
ICAgICBTdHJpbmcgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gbm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBG
cmFtZSopOwotCi0gICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
c2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9ncmVzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KLSAgICAgICAgQmFja0ZvcndhcmRDb250
cm9sbGVyKiBiYWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDb250cm9s
bGVyLmdldCgpOyB9Ci0KLSAgICAgICAgRmVhdHVyZU9ic2VydmVyKiBmZWF0dXJlT2JzZXJ2ZXIo
KSB7IHJldHVybiAmbV9mZWF0dXJlT2JzZXJ2ZXI7IH0KLQotICAgICAgICBlbnVtIFZpZXdNb2Rl
IHsKLSAgICAgICAgICAgIFZpZXdNb2RlSW52YWxpZCwKLSAgICAgICAgICAgIFZpZXdNb2RlV2lu
ZG93ZWQsCi0gICAgICAgICAgICBWaWV3TW9kZUZsb2F0aW5nLAotICAgICAgICAgICAgVmlld01v
ZGVGdWxsc2NyZWVuLAotICAgICAgICAgICAgVmlld01vZGVNYXhpbWl6ZWQsCi0gICAgICAgICAg
ICBWaWV3TW9kZU1pbmltaXplZAotICAgICAgICB9OwotICAgICAgICBzdGF0aWMgVmlld01vZGUg
c3RyaW5nVG9WaWV3TW9kZShjb25zdCBTdHJpbmcmKTsKLQotICAgICAgICBWaWV3TW9kZSB2aWV3
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld01vZGU7IH0KLSAgICAgICAgdm9pZCBzZXRWaWV3
TW9kZShWaWV3TW9kZSk7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyhib29sIGIpIHsgbV90YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMgPSBi
OyB9Ci0gICAgICAgIGJvb2wgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHM7IH0KLQotICAgICAgICBib29sIGZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwotICAgICAgICAvLyBGSVhNRTog
U3dpdGNoIGNhbGxlcnMgb3ZlciB0byB0aGUgRmluZE9wdGlvbnMgdmVyc2lvbiBhbmQgcmV0aXJl
IHRoaXMgb25lLgotICAgICAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgVGV4dENh
c2VTZW5zaXRpdml0eSwgRmluZERpcmVjdGlvbiwgYm9vbCBzaG91bGRXcmFwKTsKLQotICAgICAg
ICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwg
RmluZE9wdGlvbnMpOwotCi0gICAgICAgIHVuc2lnbmVkIG1hcmtBbGxNYXRjaGVzRm9yVGV4dChj
b25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgYm9vbCBzaG91bGRIaWdobGlnaHQsIHVuc2lnbmVk
KTsKLSAgICAgICAgLy8gRklYTUU6IFN3aXRjaCBjYWxsZXJzIG92ZXIgdG8gdGhlIEZpbmRPcHRp
b25zIHZlcnNpb24gYW5kIHJldGlyZSB0aGlzIG9uZS4KLSAgICAgICAgdW5zaWduZWQgbWFya0Fs
bE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIGJvb2wg
c2hvdWxkSGlnaGxpZ2h0LCB1bnNpZ25lZCk7Ci0gICAgICAgIHZvaWQgdW5tYXJrQWxsVGV4dE1h
dGNoZXMoKTsKLQotICAgICAgICAvLyBmaW5kIGFsbCB0aGUgUmFuZ2VzIGZvciB0aGUgbWF0Y2hp
bmcgdGV4dC4KLSAgICAgICAgLy8gVXBvbiByZXR1cm4sIGluZGV4Rm9yU2VsZWN0aW9uIHdpbGwg
YmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIC8vIDAgaWYgdGhlcmUgaXMgbm8gdXNl
ciBzZWxlY3Rpb24KLSAgICAgICAgLy8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCByYW5nZSBhZnRl
ciB0aGUgdXNlciBzZWxlY3Rpb24KLSAgICAgICAgLy8gTm9NYXRjaEJlZm9yZVVzZXJTZWxlY3Rp
b24gaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgdGV4dCBhZnRlciB0aGUgdXNlciBzZWxlY3Rpb24u
Ci0gICAgICAgIGVudW0geyBOb01hdGNoQmVmb3JlVXNlclNlbGVjdGlvbiA9IC0xIH07Ci0gICAg
ICAgIHZvaWQgZmluZFN0cmluZ01hdGNoaW5nUmFuZ2VzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCBpbnQgbWF4Q291bnQsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4qLCBpbnQmIGluZGV4Rm9y
U2VsZWN0aW9uKTsKKyAgICBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudCogdmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OyB9CisK
KyAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKKworICAg
IFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKKyAgICBTdHJpbmcgbWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoKTsKKyAgICBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0
PiBub25GYXN0U2Nyb2xsYWJsZVJlY3RzKGNvbnN0IEZyYW1lKik7CisKKyAgICBTZXR0aW5ncyog
c2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzLmdldCgpOyB9CisgICAgUHJvZ3Jl
c3NUcmFja2VyKiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0K
KyAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIqIGJhY2tGb3J3YXJkKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrRm9yd2FyZENvbnRyb2xsZXIuZ2V0KCk7IH0KKworICAgIEZlYXR1cmVPYnNlcnZlciog
ZmVhdHVyZU9ic2VydmVyKCkgeyByZXR1cm4gJm1fZmVhdHVyZU9ic2VydmVyOyB9CisKKyAgICBl
bnVtIFZpZXdNb2RlIHsKKyAgICAgICAgVmlld01vZGVJbnZhbGlkLAorICAgICAgICBWaWV3TW9k
ZVdpbmRvd2VkLAorICAgICAgICBWaWV3TW9kZUZsb2F0aW5nLAorICAgICAgICBWaWV3TW9kZUZ1
bGxzY3JlZW4sCisgICAgICAgIFZpZXdNb2RlTWF4aW1pemVkLAorICAgICAgICBWaWV3TW9kZU1p
bmltaXplZAorICAgIH07CisgICAgc3RhdGljIFZpZXdNb2RlIHN0cmluZ1RvVmlld01vZGUoY29u
c3QgU3RyaW5nJik7CisKKyAgICBWaWV3TW9kZSB2aWV3TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlld01vZGU7IH0KKyAgICB2b2lkIHNldFZpZXdNb2RlKFZpZXdNb2RlKTsKKworICAgIHZvaWQg
c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGJvb2wgYikgeyBtX3RhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyA9IGI7IH0KKyAgICBib29sIHRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOyB9CisKKyAg
ICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworICAgIC8vIEZJ
WE1FOiBTd2l0Y2ggY2FsbGVycyBvdmVyIHRvIHRoZSBGaW5kT3B0aW9ucyB2ZXJzaW9uIGFuZCBy
ZXRpcmUgdGhpcyBvbmUuCisgICAgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIFRleHRD
YXNlU2Vuc2l0aXZpdHksIEZpbmREaXJlY3Rpb24sIGJvb2wgc2hvdWxkV3JhcCk7CisKKyAgICBQ
YXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmlu
ZE9wdGlvbnMpOworCisgICAgdW5zaWduZWQgbWFya0FsbE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCBib29sIHNob3VsZEhpZ2hsaWdodCwgdW5zaWduZWQpOworICAg
IC8vIEZJWE1FOiBTd2l0Y2ggY2FsbGVycyBvdmVyIHRvIHRoZSBGaW5kT3B0aW9ucyB2ZXJzaW9u
IGFuZCByZXRpcmUgdGhpcyBvbmUuCisgICAgdW5zaWduZWQgbWFya0FsbE1hdGNoZXNGb3JUZXh0
KGNvbnN0IFN0cmluZyYsIFRleHRDYXNlU2Vuc2l0aXZpdHksIGJvb2wgc2hvdWxkSGlnaGxpZ2h0
LCB1bnNpZ25lZCk7CisgICAgdm9pZCB1bm1hcmtBbGxUZXh0TWF0Y2hlcygpOworCisgICAgLy8g
ZmluZCBhbGwgdGhlIFJhbmdlcyBmb3IgdGhlIG1hdGNoaW5nIHRleHQuCisgICAgLy8gVXBvbiBy
ZXR1cm4sIGluZGV4Rm9yU2VsZWN0aW9uIHdpbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Cisg
ICAgLy8gMCBpZiB0aGVyZSBpcyBubyB1c2VyIHNlbGVjdGlvbgorICAgIC8vIHRoZSBpbmRleCBv
ZiB0aGUgZmlyc3QgcmFuZ2UgYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0aW9uCisgICAgLy8gTm9NYXRj
aEJlZm9yZVVzZXJTZWxlY3Rpb24gaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgdGV4dCBhZnRlciB0
aGUgdXNlciBzZWxlY3Rpb24uCisgICAgZW51bSB7IE5vTWF0Y2hCZWZvcmVVc2VyU2VsZWN0aW9u
ID0gLTEgfTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGluZ1Jhbmdlcyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgaW50IG1heENvdW50LCBWZWN0b3I8UmVmUHRyPFJhbmdlPiA+KiwgaW50
JiBpbmRleEZvclNlbGVjdGlvbik7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAgICB2b2lkIGFk
ZFNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4pOwotICAgICAgICB2b2lkIHJl
bW92ZVNjaGVkdWxlUGFpcihQYXNzUmVmUHRyPFNjaGVkdWxlUGFpcj4pOwotICAgICAgICBTY2hl
ZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVk
dWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQorICAgIHZvaWQgYWRkU2NoZWR1bGVQYWlyKFBhc3NS
ZWZQdHI8U2NoZWR1bGVQYWlyPik7CisgICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1Jl
ZlB0cjxTY2hlZHVsZVBhaXI+KTsKKyAgICBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRS
dW5Mb29wUGFpcnMoKSB7IHJldHVybiBtX3NjaGVkdWxlZFJ1bkxvb3BQYWlycy5nZXQoKTsgfQog
Ci0gICAgICAgIE93blB0cjxTY2hlZHVsZVBhaXJIYXNoU2V0PiBtX3NjaGVkdWxlZFJ1bkxvb3BQ
YWlyczsKKyAgICBPd25QdHI8U2NoZWR1bGVQYWlySGFzaFNldD4gbV9zY2hlZHVsZWRSdW5Mb29w
UGFpcnM7CiAjZW5kaWYKIAotICAgICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24oKSBjb25zdDsKKyAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24oKSBjb25z
dDsKKworICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKKyAgICBib29sIGRlZmVyc0xv
YWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyc0xvYWRpbmc7IH0KIAotICAgICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoYm9vbCk7Ci0gICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVmZXJzTG9hZGluZzsgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBj
bGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKTsKIAotICAgICAgICBib29sIGluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGUo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRJbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25N
b2RlKGJvb2wgPSB0cnVlKTsKKyAgICBib29sIGluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlv
bk1vZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEluTG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlv
bk1vZGUoYm9vbCA9IHRydWUpOwogCi0gICAgICAgIGZsb2F0IG1lZGlhVm9sdW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9tZWRpYVZvbHVtZTsgfQotICAgICAgICB2b2lkIHNldE1lZGlhVm9sdW1lKGZs
b2F0IHZvbHVtZSk7CisgICAgZmxvYXQgbWVkaWFWb2x1bWUoKSBjb25zdCB7IHJldHVybiBtX21l
ZGlhVm9sdW1lOyB9CisgICAgdm9pZCBzZXRNZWRpYVZvbHVtZShmbG9hdCk7CiAKLSAgICAgICAg
dm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmln
aW4pOwotICAgICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VTY2FsZUZhY3RvcjsgfQorICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxl
LCBjb25zdCBJbnRQb2ludCYgb3JpZ2luKTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUZhY3RvcjsgfQogCi0gICAgICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQotICAg
ICAgICB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKKyAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KKyAgICB2
b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KTsKIAotICAgICAgICBib29sIHNob3VsZFN1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zOyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxi
YXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKTsKKyAgICBib29sIHNob3VsZFN1
cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zOyB9CisgICAgdm9pZCBzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFu
aW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpOwogCi0gICAgICAgIC8vIFBhZ2UgYW5k
IEZyYW1lVmlldyBib3RoIHN0b3JlIGEgUGFnaW5hdGlvbiB2YWx1ZS4gUGFnZTo6cGFnaW5hdGlv
bigpIGlzIHNldCBvbmx5IGJ5IEFQSSwKLSAgICAgICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5h
dGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4gUGFnZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0
IGFsbAotICAgICAgICAvLyBGcmFtZVZpZXdzIGluIHRoZSBwYWdlIGNhY2hlLCBidXQgRnJhbWVW
aWV3OjpwYWdpbmF0aW9uKCkgb25seSBhZmZlY3RzIHRoZSBjdXJyZW50Ci0gICAgICAgIC8vIEZy
YW1lVmlldy4gCi0gICAgICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2luYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3BhZ2luYXRpb247IH0KLSAgICAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKGNvbnN0
IFBhZ2luYXRpb24mKTsKKyAgICAvLyBQYWdlIGFuZCBGcmFtZVZpZXcgYm90aCBzdG9yZSBhIFBh
Z2luYXRpb24gdmFsdWUuIFBhZ2U6OnBhZ2luYXRpb24oKSBpcyBzZXQgb25seSBieSBBUEksCisg
ICAgLy8gYW5kIEZyYW1lVmlldzo6cGFnaW5hdGlvbigpIGlzIHNldCBvbmx5IGJ5IENTUy4gUGFn
ZTo6cGFnaW5hdGlvbigpIHdpbGwgYWZmZWN0IGFsbAorICAgIC8vIEZyYW1lVmlld3MgaW4gdGhl
IHBhZ2UgY2FjaGUsIGJ1dCBGcmFtZVZpZXc6OnBhZ2luYXRpb24oKSBvbmx5IGFmZmVjdHMgdGhl
IGN1cnJlbnQKKyAgICAvLyBGcmFtZVZpZXcuIAorICAgIGNvbnN0IFBhZ2luYXRpb24mIHBhZ2lu
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRpb247IH0KKyAgICB2b2lkIHNldFBhZ2lu
YXRpb24oY29uc3QgUGFnaW5hdGlvbiYpOwogCi0gICAgICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0OwogCi0gICAgICAgIC8vIE5v
dGlmaWNhdGlvbnMgd2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRl
ZCB2aWEgYSBuYXRpdmUgd2luZG93LgotICAgICAgICB2b2lkIGRpZE1vdmVPbnNjcmVlbigpOwot
ICAgICAgICB2b2lkIHdpbGxNb3ZlT2Zmc2NyZWVuKCk7Ci0gICAgICAgIGJvb2wgaXNPbnNjcmVl
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNPbnNjcmVlbjsgfQorICAgIC8vIE5vdGlmaWNhdGlvbnMg
d2hlbiB0aGUgUGFnZSBzdGFydHMgYW5kIHN0b3BzIGJlaW5nIHByZXNlbnRlZCB2aWEgYSBuYXRp
dmUgd2luZG93LgorICAgIHZvaWQgZGlkTW92ZU9uc2NyZWVuKCk7CisgICAgdm9pZCB3aWxsTW92
ZU9mZnNjcmVlbigpOworICAgIGJvb2wgaXNPbnNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNP
bnNjcmVlbjsgfQogCi0gICAgICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0
aW9ucygpOwotICAgICAgICB2b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9ucygpOwotICAgICAg
ICBib29sIHNjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHVzZXJT
dHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgdXNlclN0
eWxlU2hlZXQoKSBjb25zdDsKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9y
bURpc3BsYXlJRCk7CiAKLSAgICAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgp
OwotICAgICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwotICAgICAgICB2
b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOworICAgIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9ucygpOworICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25zKCk7Cisg
ICAgYm9vbCBzY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZDsgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldERl
YnVnZ2VyRm9yQWxsUGFnZXMoSlNDOjpEZWJ1Z2dlciopOwotICAgICAgICB2b2lkIHNldERlYnVn
Z2VyKEpTQzo6RGVidWdnZXIqKTsKLSAgICAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CisgICAgdm9pZCB1c2VyU3R5bGVTaGVldExvY2F0
aW9uQ2hhbmdlZCgpOworICAgIGNvbnN0IFN0cmluZyYgdXNlclN0eWxlU2hlZXQoKSBjb25zdDsK
IAotICAgICAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNpdGVkTGlua3MoKTsKKyAgICB2b2lk
IGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdT
dGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwog
Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFsbFZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKik7
Ci0gICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0ZWRTdGF0ZUNoYW5nZWQoUGFnZUdyb3VwKiwgTGlu
a0hhc2ggdmlzaXRlZEhhc2gpOworICAgIHN0YXRpYyB2b2lkIHNldERlYnVnZ2VyRm9yQWxsUGFn
ZXMoSlNDOjpEZWJ1Z2dlciopOworICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciop
OworICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dl
cjsgfQogCi0gICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHNlc3Npb25TdG9yYWdlKGJvb2wgb3B0
aW9uYWxDcmVhdGUgPSB0cnVlKTsKLSAgICAgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNz
UmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+KTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVBbGxWaXNp
dGVkTGlua3MoKTsKIAotICAgICAgICB2b2lkIHNldEN1c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVs
YXkoZG91YmxlKTsKLSAgICAgICAgYm9vbCBoYXNDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5
KCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5ICE9IC0xOyB9
Ci0gICAgICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5KCkgY29uc3QgeyBB
U1NFUlQobV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5ICE9IC0xKTsgcmV0dXJuIG1fY3Vz
dG9tSFRNTFRva2VuaXplclRpbWVEZWxheTsgfQorICAgIHN0YXRpYyB2b2lkIGFsbFZpc2l0ZWRT
dGF0ZUNoYW5nZWQoUGFnZUdyb3VwKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRlZFN0YXRlQ2hh
bmdlZChQYWdlR3JvdXAqLCBMaW5rSGFzaCB2aXNpdGVkSGFzaCk7CiAKLSAgICAgICAgdm9pZCBz
ZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKGludCk7Ci0gICAgICAgIGJvb2wgaGFzQ3Vz
dG9tSFRNTFRva2VuaXplckNodW5rU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSFRNTFRv
a2VuaXplckNodW5rU2l6ZSAhPSAtMTsgfQotICAgICAgICBpbnQgY3VzdG9tSFRNTFRva2VuaXpl
ckNodW5rU2l6ZSgpIGNvbnN0IHsgQVNTRVJUKG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6
ZSAhPSAtMSk7IHJldHVybiBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemU7IH0KKyAgICBT
dG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZShib29sIG9wdGlvbmFsQ3JlYXRlID0gdHJ1
ZSk7CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZShQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+KTsKIAotICAgICAgICB2b2lkIHNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJv
b2wpOwotICAgICAgICBib29sIGFyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheShkb3VibGUpOworICAgIGJvb2wgaGFz
Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tSFRN
TFRva2VuaXplclRpbWVEZWxheSAhPSAtMTsgfQorICAgIGRvdWJsZSBjdXN0b21IVE1MVG9rZW5p
emVyVGltZURlbGF5KCkgY29uc3QgeyBBU1NFUlQobV9jdXN0b21IVE1MVG9rZW5pemVyVGltZURl
bGF5ICE9IC0xKTsgcmV0dXJuIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheTsgfQogCi0g
ICAgICAgIC8vIERvbid0IGFsbG93IG1vcmUgdGhhbiBhIGNlcnRhaW4gbnVtYmVyIG9mIGZyYW1l
cyBpbiBhIHBhZ2UuCi0gICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBw
ZXIgYm91bmQsIGFuZCBvdGhlcndpc2UgbXV0dWFsbHkKLSAgICAgICAgLy8gcmVjdXJzaXZlIGZy
YW1lc2V0IHBhZ2VzIGNhbiBxdWlja2x5IGJyaW5nIHRoZSBwcm9ncmFtIHRvIGl0cyBrbmVlcwot
ICAgICAgICAvLyB3aXRoIGV4cG9uZW50aWFsIGdyb3d0aCBpbiB0aGUgbnVtYmVyIG9mIGZyYW1l
cy4KLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhOdW1iZXJPZkZyYW1lcyA9IDEwMDA7Cisg
ICAgdm9pZCBzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKGludCk7CisgICAgYm9vbCBo
YXNDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21I
VE1MVG9rZW5pemVyQ2h1bmtTaXplICE9IC0xOyB9CisgICAgaW50IGN1c3RvbUhUTUxUb2tlbml6
ZXJDaHVua1NpemUoKSBjb25zdCB7IEFTU0VSVChtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1Np
emUgIT0gLTEpOyByZXR1cm4gbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplOyB9CiAKLSAg
ICAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sIGlzRWRpdGFibGUpIHsgbV9pc0VkaXRhYmxlID0g
aXNFZGl0YWJsZTsgfQotICAgICAgICBib29sIGlzRWRpdGFibGUoKSB7IHJldHVybiBtX2lzRWRp
dGFibGU7IH0KKyAgICB2b2lkIHNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wp
OworICAgIGJvb2wgYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZU1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkOyB9CisKKyAgICAvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gYSBjZXJ0YWluIG51bWJlciBvZiBmcmFtZXMgaW4gYSBwYWdlLgor
ICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBwZXIgYm91bmQsIGFuZCBvdGhl
cndpc2UgbXV0dWFsbHkKKyAgICAvLyByZWN1cnNpdmUgZnJhbWVzZXQgcGFnZXMgY2FuIHF1aWNr
bHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtuZWVzCisgICAgLy8gd2l0aCBleHBvbmVudGlh
bCBncm93dGggaW4gdGhlIG51bWJlciBvZiBmcmFtZXMuCisgICAgc3RhdGljIGNvbnN0IGludCBt
YXhOdW1iZXJPZkZyYW1lcyA9IDEwMDA7CisKKyAgICB2b2lkIHNldEVkaXRhYmxlKGJvb2wgaXNF
ZGl0YWJsZSkgeyBtX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxlOyB9CisgICAgYm9vbCBpc0VkaXRh
YmxlKCkgeyByZXR1cm4gbV9pc0VkaXRhYmxlOyB9CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklM
SVRZX0FQSSkKLSAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBj
b25zdDsKKyAgICBQYWdlVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0Owog
I2VuZGlmCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpIHx8IEVOQUJMRShISURERU5f
UEFHRV9ET01fVElNRVJfVEhST1RUTElORykKLSAgICAgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3Rh
dGUoUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CisgICAgdm9pZCBzZXRWaXNpYmlsaXR5U3Rh
dGUoUGFnZVZpc2liaWxpdHlTdGF0ZSwgYm9vbCk7CiAjZW5kaWYKIAotICAgICAgICBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQorICAg
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheUlE
OyB9CiAKLSAgICAgICAgdm9pZCBhZGRMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMp
OwotICAgICAgICBMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dE1pbGVzdG9uZXM7IH0KKyAgICB2b2lkIGFkZExheW91dE1pbGVzdG9uZXMo
TGF5b3V0TWlsZXN0b25lcyk7CisgICAgTGF5b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVz
KCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRNaWxlc3RvbmVzOyB9CiAKLSAgICAgICAgYm9vbCBp
c0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpOwotICAgICAgICB2b2lkIHJl
c2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOwotICAgICAgICB2b2lkIGFkZFJlbGV2
YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJlY3QmIG9iamVj
dFBhaW50UmVjdCk7Ci0gICAgICAgIHZvaWQgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKKyAgICBib29s
IGlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdDsKKyAgICB2b2lkIHN0
YXJ0Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKTsKKyAgICB2b2lkIHJlc2V0UmVs
ZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpOworICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYgb2JqZWN0UGFpbnRSZWN0
KTsKKyAgICB2b2lkIGFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGNv
bnN0IExheW91dFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKLSAgICAgICAgdm9pZCBzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgdm9pZCByZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgdm9pZCBzZXRJc1BhaW50aW5n
KGJvb2wgcGFpbnRpbmcpIHsgbV9pc1BhaW50aW5nID0gcGFpbnRpbmc7IH0KLSAgICAgICAgYm9v
bCBpc1BhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1BhaW50aW5nOyB9CisgICAgdm9pZCBz
ZXRJc1BhaW50aW5nKGJvb2wgcGFpbnRpbmcpIHsgbV9pc1BhaW50aW5nID0gcGFpbnRpbmc7IH0K
KyAgICBib29sIGlzUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUGFpbnRpbmc7IH0KICNl
bmRpZgogCi0gICAgICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7IH0KKyAgICBBbHRl
cm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0ZXJuYXRpdmVUZXh0Q2xpZW50OyB9CiAKLSAgICAgICAgYm9vbCBoYXNTZWVuUGx1Z2lu
KGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpIGNvbnN0OwotICAgICAgICBib29sIGhhc1NlZW5B
bnlQbHVnaW4oKSBjb25zdDsKLSAgICAgICAgdm9pZCBzYXdQbHVnaW4oY29uc3QgU3RyaW5nJiBz
ZXJ2aWNlVHlwZSk7Ci0gICAgICAgIHZvaWQgcmVzZXRTZWVuUGx1Z2lucygpOworICAgIGJvb2wg
aGFzU2VlblBsdWdpbihjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKSBjb25zdDsKKyAgICBib29s
IGhhc1NlZW5BbnlQbHVnaW4oKSBjb25zdDsKKyAgICB2b2lkIHNhd1BsdWdpbihjb25zdCBTdHJp
bmcmIHNlcnZpY2VUeXBlKTsKKyAgICB2b2lkIHJlc2V0U2VlblBsdWdpbnMoKTsKIAotICAgICAg
ICBib29sIGhhc1NlZW5NZWRpYUVuZ2luZShjb25zdCBTdHJpbmcmIGVuZ2luZU5hbWUpIGNvbnN0
OwotICAgICAgICBib29sIGhhc1NlZW5BbnlNZWRpYUVuZ2luZSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNhd01lZGlhRW5naW5lKGNvbnN0IFN0cmluZyYgZW5naW5lTmFtZSk7Ci0gICAgICAgIHZv
aWQgcmVzZXRTZWVuTWVkaWFFbmdpbmVzKCk7CisgICAgYm9vbCBoYXNTZWVuTWVkaWFFbmdpbmUo
Y29uc3QgU3RyaW5nJiBlbmdpbmVOYW1lKSBjb25zdDsKKyAgICBib29sIGhhc1NlZW5BbnlNZWRp
YUVuZ2luZSgpIGNvbnN0OworICAgIHZvaWQgc2F3TWVkaWFFbmdpbmUoY29uc3QgU3RyaW5nJiBl
bmdpbmVOYW1lKTsKKyAgICB2b2lkIHJlc2V0U2Vlbk1lZGlhRW5naW5lcygpOwogCi0gICAgICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0
R3JvdXAoKTsKIAogI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICB2b2lkIGNoZWNrU3ViZnJh
bWVDb3VudENvbnNpc3RlbmN5KCkgY29uc3QgeyB9CisgICAgdm9pZCBjaGVja1N1YmZyYW1lQ291
bnRDb25zaXN0ZW5jeSgpIGNvbnN0IHsgfQogI2Vsc2UKLSAgICAgICAgdm9pZCBjaGVja1N1YmZy
YW1lQ291bnRDb25zaXN0ZW5jeSgpIGNvbnN0OworICAgIHZvaWQgY2hlY2tTdWJmcmFtZUNvdW50
Q29uc2lzdGVuY3koKSBjb25zdDsKICNlbmRpZgogCi0gICAgICAgIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOworICAgIE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOwogCi0gICAgICAgIHZvaWQg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKLSAgICAgICAgZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUpOworICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0OwogCi0gICAg
ICAgIHZvaWQgc2V0VGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3VibGUpOwotICAgICAgICBkb3Vi
bGUgdGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGltZXJBbGln
bm1lbnRJbnRlcnZhbChkb3VibGUpOworICAgIGRvdWJsZSB0aW1lckFsaWdubWVudEludGVydmFs
KCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0
cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKyAgICB2b2lkIGNvbGxl
Y3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5W
aWV3QmFzZXMpOwogCi0gICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwotICAgICAgICBP
d25QdHI8RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOworICAgIE93
blB0cjxDaHJvbWU+IG1fY2hyb21lOworICAgIE93blB0cjxEcmFnQ2FyZXRDb250cm9sbGVyPiBt
X2RyYWdDYXJldENvbnRyb2xsZXI7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICAg
ICBPd25QdHI8RHJhZ0NvbnRyb2xsZXI+IG1fZHJhZ0NvbnRyb2xsZXI7CisgICAgT3duUHRyPERy
YWdDb250cm9sbGVyPiBtX2RyYWdDb250cm9sbGVyOwogI2VuZGlmCi0gICAgICAgIE93blB0cjxG
b2N1c0NvbnRyb2xsZXI+IG1fZm9jdXNDb250cm9sbGVyOworICAgIE93blB0cjxGb2N1c0NvbnRy
b2xsZXI+IG1fZm9jdXNDb250cm9sbGVyOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
ICAgICBPd25QdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRleHRNZW51Q29udHJvbGxl
cjsKKyAgICBPd25QdHI8Q29udGV4dE1lbnVDb250cm9sbGVyPiBtX2NvbnRleHRNZW51Q29udHJv
bGxlcjsKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIE93blB0cjxJbnNw
ZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CisgICAgT3duUHRyPEluc3Bl
Y3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKICNlbmRpZgogI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCi0gICAgICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+IG1f
cG9pbnRlckxvY2tDb250cm9sbGVyOworICAgIE93blB0cjxQb2ludGVyTG9ja0NvbnRyb2xsZXI+
IG1fcG9pbnRlckxvY2tDb250cm9sbGVyOwogI2VuZGlmCi0gICAgICAgIFJlZlB0cjxTY3JvbGxp
bmdDb29yZGluYXRvcj4gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKKyAgICBSZWZQdHI8U2Nyb2xs
aW5nQ29vcmRpbmF0b3I+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3I7CisKKyAgICBPd25QdHI8U2V0
dGluZ3M+IG1fc2V0dGluZ3M7CisgICAgT3duUHRyPFByb2dyZXNzVHJhY2tlcj4gbV9wcm9ncmVz
czsKIAotICAgICAgICBPd25QdHI8U2V0dGluZ3M+IG1fc2V0dGluZ3M7Ci0gICAgICAgIE93blB0
cjxQcm9ncmVzc1RyYWNrZXI+IG1fcHJvZ3Jlc3M7Ci0gICAgICAgIAotICAgICAgICBPd25QdHI8
QmFja0ZvcndhcmRDb250cm9sbGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKLSAgICAgICAg
UmVmUHRyPEZyYW1lPiBtX21haW5GcmFtZTsKKyAgICBPd25QdHI8QmFja0ZvcndhcmRDb250cm9s
bGVyPiBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcjsKKyAgICBSZWZQdHI8RnJhbWU+IG1fbWFpbkZy
YW1lOwogCi0gICAgICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsK
KyAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CiAKLSAgICAgICAg
UmVmUHRyPFJlbmRlclRoZW1lPiBtX3RoZW1lOworICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90
aGVtZTsKIAotICAgICAgICBFZGl0b3JDbGllbnQqIG1fZWRpdG9yQ2xpZW50OwotICAgICAgICBQ
bHVnSW5DbGllbnQqIG1fcGx1Z0luQ2xpZW50OwotICAgICAgICBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKKyAgICBFZGl0b3JDbGllbnQqIG1fZWRp
dG9yQ2xpZW50OworICAgIFBsdWdJbkNsaWVudCogbV9wbHVnSW5DbGllbnQ7CisgICAgVmFsaWRh
dGlvbk1lc3NhZ2VDbGllbnQqIG1fdmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAKLSAgICAgICAg
RmVhdHVyZU9ic2VydmVyIG1fZmVhdHVyZU9ic2VydmVyOworICAgIEZlYXR1cmVPYnNlcnZlciBt
X2ZlYXR1cmVPYnNlcnZlcjsKIAotICAgICAgICBpbnQgbV9zdWJmcmFtZUNvdW50OwotICAgICAg
ICBTdHJpbmcgbV9ncm91cE5hbWU7Ci0gICAgICAgIGJvb2wgbV9vcGVuZWRCeURPTTsKKyAgICBp
bnQgbV9zdWJmcmFtZUNvdW50OworICAgIFN0cmluZyBtX2dyb3VwTmFtZTsKKyAgICBib29sIG1f
b3BlbmVkQnlET007CiAKLSAgICAgICAgYm9vbCBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
czsKLSAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7Ci0gICAgICAgIHVuc2lnbmVkIG1fZGVm
ZXJzTG9hZGluZ0NhbGxDb3VudDsKKyAgICBib29sIG1fdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzOworICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOworICAgIHVuc2lnbmVkIG1fZGVmZXJzTG9h
ZGluZ0NhbGxDb3VudDsKIAotICAgICAgICBib29sIG1faW5Mb3dRdWFsaXR5SW50ZXJwb2xhdGlv
bk1vZGU7Ci0gICAgICAgIGJvb2wgbV9jb29raWVFbmFibGVkOwotICAgICAgICBib29sIG1fYXJl
TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQ7Ci0gICAgICAgIGZsb2F0IG1fbWVkaWFWb2x1
bWU7CisgICAgYm9vbCBtX2luTG93UXVhbGl0eUludGVycG9sYXRpb25Nb2RlOworICAgIGJvb2wg
bV9jb29raWVFbmFibGVkOworICAgIGJvb2wgbV9hcmVNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5h
YmxlZDsKKyAgICBmbG9hdCBtX21lZGlhVm9sdW1lOwogCi0gICAgICAgIGZsb2F0IG1fcGFnZVNj
YWxlRmFjdG9yOwotICAgICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOworICAgIGZsb2F0
IG1fcGFnZVNjYWxlRmFjdG9yOworICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAKLSAg
ICAgICAgYm9vbCBtX3N1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9uczsKKyAgICBib29sIG1fc3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zOwogCi0gICAgICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0
aW9uOworICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCi0gICAgICAgIFN0cmluZyBtX3Vz
ZXJTdHlsZVNoZWV0UGF0aDsKLSAgICAgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyU3R5bGVTaGVl
dDsKLSAgICAgICAgbXV0YWJsZSBib29sIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0OwotICAgICAg
ICBtdXRhYmxlIHRpbWVfdCBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZTsKKyAgICBT
dHJpbmcgbV91c2VyU3R5bGVTaGVldFBhdGg7CisgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyU3R5
bGVTaGVldDsKKyAgICBtdXRhYmxlIGJvb2wgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQ7CisgICAg
bXV0YWJsZSB0aW1lX3QgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWU7CiAKLSAgICAg
ICAgT3duUHRyPFBhZ2VHcm91cD4gbV9zaW5nbGVQYWdlR3JvdXA7Ci0gICAgICAgIFBhZ2VHcm91
cCogbV9ncm91cDsKKyAgICBPd25QdHI8UGFnZUdyb3VwPiBtX3NpbmdsZVBhZ2VHcm91cDsKKyAg
ICBQYWdlR3JvdXAqIG1fZ3JvdXA7CiAKLSAgICAgICAgSlNDOjpEZWJ1Z2dlciogbV9kZWJ1Z2dl
cjsKKyAgICBKU0M6OkRlYnVnZ2VyKiBtX2RlYnVnZ2VyOwogCi0gICAgICAgIGRvdWJsZSBtX2N1
c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXk7Ci0gICAgICAgIGludCBtX2N1c3RvbUhUTUxUb2tl
bml6ZXJDaHVua1NpemU7CisgICAgZG91YmxlIG1fY3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxh
eTsKKyAgICBpbnQgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplOwogCi0gICAgICAgIGJv
b2wgbV9jYW5TdGFydE1lZGlhOworICAgIGJvb2wgbV9jYW5TdGFydE1lZGlhOwogCi0gICAgICAg
IFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOworICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBtX3Nlc3Npb25TdG9yYWdlOwogCi0gICAgICAgIFZpZXdNb2RlIG1f
dmlld01vZGU7CisgICAgVmlld01vZGUgbV92aWV3TW9kZTsKIAotICAgICAgICBkb3VibGUgbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKKyAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsK
IAotICAgICAgICBkb3VibGUgbV90aW1lckFsaWdubWVudEludGVydmFsOworICAgIGRvdWJsZSBt
X3RpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CiAKLSAgICAgICAgYm9vbCBtX2lzRWRpdGFibGU7Ci0g
ICAgICAgIGJvb2wgbV9pc09uc2NyZWVuOworICAgIGJvb2wgbV9pc0VkaXRhYmxlOworICAgIGJv
b2wgbV9pc09uc2NyZWVuOwogCiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCi0gICAg
ICAgIFBhZ2VWaXNpYmlsaXR5U3RhdGUgbV92aXNpYmlsaXR5U3RhdGU7CisgICAgUGFnZVZpc2li
aWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNlbmRpZgotICAgICAgICBQbGF0Zm9ybURp
c3BsYXlJRCBtX2Rpc3BsYXlJRDsKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBtX2Rpc3BsYXlJRDsK
IAotICAgICAgICBMYXlvdXRNaWxlc3RvbmVzIG1fbGF5b3V0TWlsZXN0b25lczsKKyAgICBMYXlv
dXRNaWxlc3RvbmVzIG1fbGF5b3V0TWlsZXN0b25lczsKIAotICAgICAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+IG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3RzOwotICAgICAgICBSZWdp
b24gbV9yZWxldmFudFBhaW50ZWRSZWdpb247Ci0gICAgICAgIFJlZ2lvbiBtX3JlbGV2YW50VW5w
YWludGVkUmVnaW9uOwotICAgICAgICBib29sIG1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVk
T2JqZWN0czsKKyAgICBIYXNoU2V0PFJlbmRlck9iamVjdCo+IG1fcmVsZXZhbnRVbnBhaW50ZWRS
ZW5kZXJPYmplY3RzOworICAgIFJlZ2lvbiBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbjsKKyAgICBS
ZWdpb24gbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbjsKKyAgICBib29sIG1faXNDb3VudGluZ1Jl
bGV2YW50UmVwYWludGVkT2JqZWN0czsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJvb2wgbV9p
c1BhaW50aW5nOworICAgIGJvb2wgbV9pc1BhaW50aW5nOwogI2VuZGlmCi0gICAgICAgIEFsdGVy
bmF0aXZlVGV4dENsaWVudCogbV9hbHRlcm5hdGl2ZVRleHRDbGllbnQ7CisgICAgQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50KiBtX2FsdGVybmF0aXZlVGV4dENsaWVudDsKIAotICAgICAgICBib29sIG1f
c2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkOworICAgIGJvb2wgbV9zY3JpcHRlZEFuaW1hdGlv
bnNTdXNwZW5kZWQ7CiAKLSAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2VlblBsdWdpbnM7Ci0g
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NlZW5NZWRpYUVuZ2luZXM7Ci0gICAgfTsKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9zZWVuUGx1Z2luczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9zZWVu
TWVkaWFFbmdpbmVzOworfTsKKworaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQorewor
ICAgIGlmICghbV9ncm91cCkKKyAgICAgICAgaW5pdEdyb3VwKCk7CisgICAgcmV0dXJuICptX2dy
b3VwOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgCg==
</data>
<flag name="review"
          id="206657"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>