<?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>180211</bug_id>
          
          <creation_ts>2017-11-30 11:47:52 -0800</creation_ts>
          <short_desc>Move DateComponents into WTF</short_desc>
          <delta_ts>2017-12-05 16:00:59 -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>Platform</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Reid">chris.reid</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376437</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-30 11:47:52 -0800</bug_when>
    <thetext>It is currently in platform and used by platform/text for localization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376667</commentid>
    <comment_count>1</comment_count>
      <attachid>328061</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-30 17:49:44 -0800</bug_when>
    <thetext>Created attachment 328061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376668</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-11-30 17:52:31 -0800</bug_when>
    <thetext>Attachment 328061 did not pass style-queue:


ERROR: Source/WTF/wtf/DateComponents.h:88:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:123:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:125:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:127:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:129:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:131:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:134:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:137:  The parameter name &quot;months&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:181:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.h:182:  The parameter name &quot;ms&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WTF/wtf/DateComponents.cpp:187:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/html/DateTimeInputType.h:42:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 12 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376671</commentid>
    <comment_count>3</comment_count>
      <attachid>328062</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-30 18:04:18 -0800</bug_when>
    <thetext>Created attachment 328062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376685</commentid>
    <comment_count>4</comment_count>
      <attachid>328062</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-11-30 19:02:52 -0800</bug_when>
    <thetext>Comment on attachment 328062
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=328062&amp;action=review

&gt; Source/WTF/wtf/DateComponents.hSource/WebCore/platform/DateComponents.h:70
&gt; +    WTF_EXPORT_PRIVATE int millisecond() const { return m_millisecond; }

Aren&apos;t these inlined? What is the EXPORT for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376996</commentid>
    <comment_count>5</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-12-01 13:00:48 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; Comment on attachment 328062 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328062&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/DateComponents.hSource/WebCore/platform/DateComponents.h:70
&gt; &gt; +    WTF_EXPORT_PRIVATE int millisecond() const { return m_millisecond; }
&gt; 
&gt; Aren&apos;t these inlined? What is the EXPORT for?

I thought I remembered seeing linker errors with those inlined functions, but I tried it again and it looks like I was just overzealous with what I was exporting. I&apos;ll take those out.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377009</commentid>
    <comment_count>6</comment_count>
      <attachid>328143</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-12-01 13:13:00 -0800</bug_when>
    <thetext>Created attachment 328143
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377141</commentid>
    <comment_count>7</comment_count>
      <attachid>328143</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 16:21:01 -0800</bug_when>
    <thetext>Comment on attachment 328143
Patch for landing

Clearing flags on attachment: 328143

Committed r225430: &lt;https://trac.webkit.org/changeset/225430&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377142</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 16:21:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377146</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-01 16:26:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/35808884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378415</commentid>
    <comment_count>10</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-12-05 15:51:48 -0800</bug_when>
    <thetext>This caused and API failure on all Release Testers

Example failure:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/builds/1556
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/builds/1556/steps/run-api-tests/logs/stdio

failure:
FAIL WTF.StringOperators

/Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:52
Value of: wtfStringCopyCount
  Actual: 0
Expected: 2
string + string


/Volumes/Data/slave/highsierra-release/build/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp:54
Value of: wtfStringCopyCount
  Actual: 0
Expected: 2
atomicString + string</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378425</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-05 15:58:40 -0800</bug_when>
    <thetext>(In reply to Matt Lewis from comment #10)
&gt; This caused and API failure on all Release Testers
This is a crazy linker issue caused by WTFString.h being included in different places making the same linker symbol in different translation units with different code being generated because WTF_STRINGTYPEADAPTER_COPIED_WTF_STRING is defined to different things.  I&apos;ve fixed this before, but I don&apos;t remember how.  It&apos;s quite tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378426</commentid>
    <comment_count>12</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-12-05 15:59:36 -0800</bug_when>
    <thetext>Reverted r225430 for reason:

This caused an API failure on release.

Committed r225555: &lt;https://trac.webkit.org/changeset/225555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378427</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-05 16:00:59 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; (In reply to Matt Lewis from comment #10)
&gt; &gt; This caused and API failure on all Release Testers
&gt; This is a crazy linker issue caused by WTFString.h being included in
&gt; different places making the same linker symbol in different translation
&gt; units with different code being generated because
&gt; WTF_STRINGTYPEADAPTER_COPIED_WTF_STRING is defined to different things. 
&gt; I&apos;ve fixed this before, but I don&apos;t remember how.  It&apos;s quite tricky.

Actually, it might be a different issue.  Either way, quite tricky.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328061</attachid>
            <date>2017-11-30 17:49:44 -0800</date>
            <delta_ts>2017-11-30 18:04:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>180211-2.diff</filename>
            <type>text/plain</type>
            <size>25034</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTgzOTdmZGY5MWMuLjBlYmYzN2I0NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTExLTMwICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBNb3ZlIERhdGVDb21wb25lbnRzIGludG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBEYXRlQ29tcG9uZW50cyBmcm9tIFdlYkNvcmUv
cGxhdGZvcm0gaW50byBXVEYuCisgICAgICAgIFJlbW92ZWQgaXNMZWFwWWVhciBmcm9tIERhdGVD
b21wb25lbnRzIGFzIERhdGVNYXRoIGFscmVhZHkgaGFzIHRoYXQgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGVDb21wb25lbnRzLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZVxXZWJDb3JlXHBsYXRmb3JtXERhdGVDb21wb25lbnRzLmNwcC4KKyAgICAgICAgKiB3
dGYvRGF0ZUNvbXBvbmVudHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZVxXZWJDb3JlXHBsYXRmb3Jt
XERhdGVDb21wb25lbnRzLmguCisKIDIwMTctMTEtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgSlNPTlZhbHVlcyB0byBXVEYgYW5k
IGNvbnZlcnQgdXNlcyBvZiBJbnNwZWN0b3JWYWx1ZXMuaCB0byBKU09OVmFsdWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0Mjc4MDhlOTk4Li4yODVh
ZjBjZjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
Miw2ICs4Miw3IEBACiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNE
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZD
Mzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBB
dG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAv
KiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87
IH07CisJCUEzQ0FCQTA4MUZEMDk1MTEwMDA3QTRERSAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0NBQkEwNjFGRDA5
NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4
MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVh
bS5jcHAgKi87IH07CiAJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4
MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tICovOyB9OwogCQlBNUJBMTVGNTE4MjQzNDgw
MDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBs
TWFjLm1tICovOyB9OwpAQCAtMzg1LDYgKzM4Niw4IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3
MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERF
MTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBQjZF
NkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBM0NBQkEwNjFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0REUgLyogRGF0
ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBv
bmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAw
REVEMEI0IC8qIFRleHRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGV4dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRE
RDkyMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODA1LDYgKzgwOCw4IEBACiAJCQkJQThBNDcyNzYxNTFBODI1QTAwNDEyM0ZGIC8qIEN1
cnJlbnRUaW1lLmggKi8sCiAJCQkJQThBNDcyNzcxNTFBODI1QTAwNDEyM0ZGIC8qIERhdGFMb2cu
Y3BwICovLAogCQkJCUE4QTQ3Mjc4MTUxQTgyNUEwMDQxMjNGRiAvKiBEYXRhTG9nLmggKi8sCisJ
CQkJQTNDQUJBMDYxRkQwOTUxMTAwMDdBNERFIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKKwkJ
CQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQlB
OEE0NzI3OTE1MUE4MjVBMDA0MTIzRkYgLyogRGF0ZU1hdGguY3BwICovLAogCQkJCUE4QTQ3MjdB
MTUxQTgyNUEwMDQxMjNGRiAvKiBEYXRlTWF0aC5oICovLAogCQkJCTk5NkIxNzg0MUVCQTQ0MUMw
MDdFMTBFQiAvKiBEZWJ1Z1V0aWxpdGllcy5oICovLApAQCAtMTM3OSw2ICsxMzg0LDcgQEAKIAkJ
CQlBOEE0NzQzOTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzM5QzE1MUE4MjVCMDA0MTIzRkYgLyogQ3VycmVudFRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDczOUUxNTFBODI1QjAwNDEyM0ZGIC8qIERhdGFMb2cuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTNDQUJBMDgxRkQwOTUxMTAwMDdBNERFIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRl
TWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBMjE1MUE4MjVCMDA0MTIzRkYgLyog
RGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBE
OEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZDM0NWE4NGYwNDkuLjk1OWZjNDg1YzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMjIyLDYgKzIyMiw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAogICAgIEN1cnJlbnRUaW1lLmNwcAogICAg
IERhdGFMb2cuY3BwCisgICAgRGF0ZUNvbXBvbmVudHMuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAg
ICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBGYXN0Qml0VmVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIGIvU291cmNlL1dURi93
dGYvRGF0ZUNvbXBvbmVudHMuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApyZW5hbWUgdG8gU291cmNl
L1dURi93dGYvRGF0ZUNvbXBvbmVudHMuY3BwCmluZGV4IGRiNzA3ODg2YTBiLi5jNDNhYjA4ZmQy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmNwcApAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiAvLyBIVE1M
NSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgbWluaW11bSB3ZWVrIG9mIHllYXIgaXMgb25lLgogY29u
c3QgaW50IERhdGVDb21wb25lbnRzOjptaW5pbXVtV2Vla051bWJlciA9IDE7CkBAIC01MSwxNyAr
NTEsNiBAQCBzdGF0aWMgY29uc3QgaW50IG1heGltdW1XZWVrSW5NYXhpbXVtWWVhciA9IDM3OyAv
LyBUaGUgd2VlayBvZiAyNzU3NjAtMDktMTMKIAogc3RhdGljIGNvbnN0IGludCBkYXlzSW5Nb250
aFsxMl0gPSB7MzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMX07
CiAKLXN0YXRpYyBib29sIGlzTGVhcFllYXIoaW50IHllYXIpCi17Ci0gICAgaWYgKHllYXIgJSA0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCEoeWVhciAlIDQwMCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmICghKHllYXIgJSAxMDApKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vICdtb250aCcgaXMgMC1iYXNlZC4KIHN0YXRp
YyBpbnQgbWF4RGF5T2ZNb250aChpbnQgeWVhciwgaW50IG1vbnRoKQogewpAQCAtNzI1LDQgKzcx
NCw0IEBAIFN0cmluZyBEYXRlQ29tcG9uZW50czo6dG9TdHJpbmcoU2Vjb25kRm9ybWF0IGZvcm1h
dCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCIoSW52YWxpZCBEYXRlQ29tcG9uZW50cykiKTsK
IH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oIGIvU291cmNlL1dU
Ri93dGYvRGF0ZUNvbXBvbmVudHMuaApzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oCnJlbmFtZSB0byBTb3VyY2Uv
V1RGL3d0Zi9EYXRlQ29tcG9uZW50cy5oCmluZGV4IDA0YWRlMmMzOTEwLi40NDZhNjEwM2NjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9EYXRlQ29tcG9uZW50cy5oCkBAIC0yOCwxNCArMjgsMTMgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBEYXRlQ29tcG9uZW50c19oCi0jZGVmaW5lIERh
dGVDb21wb25lbnRzX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdURiB7CiAKIC8vIEEgRGF0ZUNvbXBvbmVudHMgaW5z
dGFuY2UgcmVwcmVzZW50cyBvbmUgb2YgdGhlIGZvbGxvd2luZyBkYXRlIGFuZCB0aW1lIGNvbWJp
bmF0aW9uczoKIC8vICogTW9udGggdHlwZTogeWVhci1tb250aApAQCAtNjgsMTUgKzY3LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgV2VlaywKICAgICB9OwogCi0gICAgaW50IG1pbGxpc2Vjb25kKCkg
Y29uc3QgeyByZXR1cm4gbV9taWxsaXNlY29uZDsgfQotICAgIGludCBzZWNvbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlY29uZDsgfQotICAgIGludCBtaW51dGUoKSBjb25zdCB7IHJldHVybiBtX21p
bnV0ZTsgfQotICAgIGludCBob3VyKCkgY29uc3QgeyByZXR1cm4gbV9ob3VyOyB9Ci0gICAgaW50
IG1vbnRoRGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERheTsgfQotICAgIGludCBtb250aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KLSAgICBpbnQgZnVsbFllYXIoKSBjb25zdCB7IHJl
dHVybiBtX3llYXI7IH0KLSAgICBpbnQgd2VlaygpIGNvbnN0IHsgcmV0dXJuIG1fd2VlazsgfQot
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQgbWlsbGlzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX21pbGxpc2Vjb25kOyB9
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCBzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX3Nl
Y29uZDsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgbWludXRlKCkgY29uc3QgeyByZXR1
cm4gbV9taW51dGU7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGhvdXIoKSBjb25zdCB7
IHJldHVybiBtX2hvdXI7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IG1vbnRoRGF5KCkg
Y29uc3QgeyByZXR1cm4gbV9tb250aERheTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBpbnQg
bW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGludCBmdWxsWWVhcigpIGNvbnN0IHsgcmV0dXJuIG1feWVhcjsgfQorICAgIFdURl9FWFBPUlRf
UFJJVkFURSBpbnQgd2VlaygpIGNvbnN0IHsgcmV0dXJuIG1fd2VlazsgfQorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGVu
dW0gU2Vjb25kRm9ybWF0IHsKICAgICAgICAgTm9uZSwgLy8gU3VwcHJlc3MgdGhlIHNlY29uZCBw
YXJ0IGFuZCB0aGUgbWlsbGlzZWNvbmQgcGFydCBpZiB0aGV5IGFyZSAwLgpAQCAtODYsNyArODUs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9u
IGZvciB0aGlzIGluc3RhbmNlLgogICAgIC8vIFRoZSBmb3JtYXQgYXJndW1lbnQgaXMgdmFsaWQg
Zm9yIERhdGVUaW1lLCBEYXRlVGltZUxvY2FsLCBhbmQgVGltZSB0eXBlcy4KLSAgICBTdHJpbmcg
dG9TdHJpbmcoU2Vjb25kRm9ybWF0IGZvcm1hdCA9IE5vbmUpIGNvbnN0OworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcgdG9TdHJpbmcoU2Vjb25kRm9ybWF0IGZvcm1hdCA9IE5vbmUpIGNv
bnN0OwogCiAgICAgLy8gcGFyc2UqKCkgYW5kIHNldE1pbGxpc2Vjb25kc1NpbmNlKigpIGZ1bmN0
aW9ucyBhcmUgaW5pdGlhbGl6ZXJzIGZvciBhbgogICAgIC8vIERhdGVDb21wb25lbnRzIGluc3Rh
bmNlLiBJZiB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIGZhbHNlLCB0aGUgaW5zdGFuY2UKQEAgLTEw
MiwxNyArMTAxLDE3IEBAIHB1YmxpYzoKICAgICAvLyBmYWlsdXJlcywgYW5kIHRoZSB0cmFpbGlu
ZyBleHRyYSBjaGFyYWN0ZXJzIGRvbid0IGNhdXNlIHBhcnNlIGZhaWx1cmVzLgogCiAgICAgLy8g
U2V0cyB5ZWFyIGFuZCBtb250aC4KLSAgICBib29sIHBhcnNlTW9udGgoY29uc3QgVUNoYXIqIHNy
YywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcGFyc2VNb250aChjb25zdCBVQ2hhciogc3JjLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKICAgICAvLyBTZXRz
IHllYXIsIG1vbnRoIGFuZCBtb250aERheS4KLSAgICBib29sIHBhcnNlRGF0ZShjb25zdCBVQ2hh
ciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwYXJzZURhdGUoY29uc3QgVUNoYXIqIHNyYywg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CiAgICAgLy8g
U2V0cyB5ZWFyIGFuZCB3ZWVrLgotICAgIGJvb2wgcGFyc2VXZWVrKGNvbnN0IFVDaGFyKiBzcmMs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIHBhcnNlV2Vlayhjb25zdCBVQ2hhciogc3JjLCB1bnNpZ25l
ZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKICAgICAvLyBTZXRzIGhv
dXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWxsaXNlY29uZC4KLSAgICBib29sIHBhcnNlVGltZShj
b25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCYgZW5kKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwYXJzZVRpbWUoY29uc3QgVUNo
YXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7
CiAgICAgLy8gU2V0cyB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25k
IGFuZCBtaWxsaXNlY29uZC4KLSAgICBib29sIHBhcnNlRGF0ZVRpbWVMb2NhbChjb25zdCBVQ2hh
ciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwYXJzZURhdGVUaW1lTG9jYWwoY29uc3QgVUNo
YXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7
CiAgICAgLy8gU2V0cyB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25k
IGFuZCBtaWxsaXNlY29uZCwgYW5kIGFkanVzdHMgdGltZXpvbmUuCi0gICAgYm9vbCBwYXJzZURh
dGVUaW1lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkJiBlbmQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBhcnNlRGF0ZVRp
bWUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQmIGVuZCk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIHNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3IqKCkgZnVuY3Rpb25zIHRha2UKICAgICAvLyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vj
b25kcyBzaW5jZSAxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMCBVVEMgYXMKQEAgLTEyMSwyOSArMTIw
LDI5IEBAIHB1YmxpYzoKICAgICAvLyBmYWxzZSBpZiB0aGV5IGZhaWwuCiAKICAgICAvLyBGb3Ig
RGF0ZSB0eXBlLiBVcGRhdGVzIG1feWVhciwgbV9tb250aCBhbmQgbV9tb250aERheS4KLSAgICBi
b29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGRvdWJsZSBtcyk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGUoZG91
YmxlIG1zKTsKICAgICAvLyBGb3IgRGF0ZVRpbWUgdHlwZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9u
dGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vj
b25kLgotICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lKGRvdWJs
ZSBtcyk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VF
cG9jaEZvckRhdGVUaW1lKGRvdWJsZSBtcyk7CiAgICAgLy8gRm9yIERhdGVUaW1lTG9jYWwgdHlw
ZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUs
IG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChkb3VibGUg
bXMpOwogICAgIC8vIEZvciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQgbV9tb250aC4K
LSAgICBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChkb3VibGUgbXMpOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JN
b250aChkb3VibGUgbXMpOwogICAgIC8vIEZvciBXZWVrIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFu
ZCBtX3dlZWsuCi0gICAgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhkb3Vi
bGUgbXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JXZWVrKGRvdWJsZSBtcyk7CiAKICAgICAvLyBGb3IgVGltZSB0eXBlLiBVcGRhdGVz
IG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kIGFuZCBtX21pbGxpc2Vjb25kLgotICAgIGJvb2wg
c2V0TWlsbGlzZWNvbmRzU2luY2VNaWRuaWdodChkb3VibGUgbXMpOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKIAog
ICAgIC8vIEFub3RoZXIgaW5pdGlhbGl6ZXIgZm9yIE1vbnRoIHR5cGUuIFVwZGF0ZXMgbV95ZWFy
IGFuZCBtX21vbnRoLgotICAgIGJvb2wgc2V0TW9udGhzU2luY2VFcG9jaChkb3VibGUgbW9udGhz
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNb250aHNTaW5jZUVwb2NoKGRvdWJs
ZSBtb250aHMpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBm
cm9tIDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDLgogICAgIC8vIEZvciBhIERhdGVDb21wb25lbnRz
IGluaXRpYWxpemVkIHdpdGggcGFyc2VEYXRlVGltZUxvY2FsKCksCiAgICAgLy8gbWlsbGlzZWNv
bmRzU2luY2VFcG9jaCgpIHJldHVybnMgYSB2YWx1ZSBmb3IgVVRDIHRpbWV6b25lLgotICAgIGRv
dWJsZSBtaWxsaXNlY29uZHNTaW5jZUVwb2NoKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5jZUVwb2NoKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJu
cyB0aGUgbnVtYmVyIG9mIG1vbnRocyBmcm9tIDE5NzAtMDEuCiAgICAgLy8gRG8gbm90IGNhbGwg
dGhpcyBmb3IgdHlwZXMgb3RoZXIgdGhhbiBNb250aC4KLSAgICBkb3VibGUgbW9udGhzU2luY2VF
cG9jaCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgbW9udGhzU2luY2VF
cG9jaCgpIGNvbnN0OwogICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIGludmFsaWRNaWxsaXNlY29u
ZHMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyB9
CiAKICAgICAvLyBNaW5pbXVtIGFuZCBtYXhtaW11bSBsaW1pdHMgZm9yIHNldE1pbGxpc2Vjb25k
c1NpbmNlKigpLApAQCAtMjA4LDYgKzIwNyw2IEBAIHByaXZhdGU6CiB9OwogCiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdURgogCi0jZW5kaWYgLy8gRGF0ZUNvbXBv
bmVudHNfaAordXNpbmcgV1RGOjpEYXRlQ29tcG9uZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNDgyZmY0
ZWM5NS4uZTkzZTA4NjViZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMS0z
MCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgTW92
ZSBEYXRlQ29tcG9uZW50cyBpbnRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICBNb3ZlZCBEYXRlQ29tcG9uZW50cyBmcm9tIHBsYXRmb3JtIGludG8gV1RGLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQgRGF0ZUNvbXBvbmVudHMKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFJlbW92ZWQgRGF0ZUNvbXBvbmVudHMK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oOiBGaXhl
ZCBhIGNhbGwgdG8gdGhlIHdyb25nIHBhcmVudCBjb25zdHJ1Y3RvcgorICAgICAgICAqIGh0bWwv
SFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1M
b2NhbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdp
bi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKwogMjAxNy0xMS0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
TW92ZSBKU09OVmFsdWVzIHRvIFdURiBhbmQgY29udmVydCB1c2VzIG9mIEluc3BlY3RvclZhbHVl
cy5oIHRvIEpTT05WYWx1ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYmRkNzgyY2ExOS4uNGRjNjRj
NjdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMzg1LDcgKzEzODUsNiBAQCBwbGF0Zm9ybS9Db250
ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1l
bnVJdGVtLmNwcAogcGxhdGZvcm0vQ3Vyc29yLmNwcAotcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMu
Y3BwCiBwbGF0Zm9ybS9EZWNpbWFsLmNwcAogcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCiBwbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNGM2NmFhODg2OWYuLjY3MmM1YTE4ZWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODMz
LDcgKzI4MzMsNiBAQAogCQlBNTRBMEM2QzFEQjgzMUY5MDAxN0E5MEIgLyogV29ya2VySW5zcGVj
dG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1NEEwQzZBMURCODMxRjIwMDE3QTkwQiAvKiBXb3JrZXJJbnNwZWN0b3JQcm94eS5oICovOyB9
OwogCQlBNTU0QjVGMzFFMzgzOTNBMDAxRDRFMDMgLyogUGVyZm9ybWFuY2VVc2VyVGltaW5nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU0QjVGMTFF
MzgzOTM2MDAxRDRFMDMgLyogUGVyZm9ybWFuY2VVc2VyVGltaW5nLmggKi87IH07CiAJCUE1NTYz
OUQxMUM2RjA5RTMwMDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTU2MzlEMDFDNkVGRDU5MDA4MDZE
OEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oICovOyB9OwotCQlBNTczMkIwQjEzNkExNjFEMDA1
QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
NzhGNDM1MURFMDBFRUIwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDMzMURFMDBFRDYw
MDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCAqLzsgfTsKIAkJQTU3OEY0M0MxREUw
MTQyMzAwM0RGQzZBIC8qIEpTUHJvbWlzZVJlamVjdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQzQTFERTAxM0ZCMDAzREZDNkEg
LyogSlNQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCAqLzsgfTsKIAkJQTU3OEY0M0YxREUwQjYzMDAw
M0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhGNDNFMURFMEI2MkIwMDNERkM2QSAvKiBSZWpl
Y3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTEwNzEyLDggKzEwNzExLDYgQEAKIAkJQTU1NEI1RjExRTM4MzkzNjAw
MUQ0RTAzIC8qIFBlcmZvcm1hbmNlVXNlclRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyQ29uc29sZUNs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NTYzOUQwMUM2RUZENTkw
MDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdvcmtlckNvbnNvbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERh
dGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21w
b25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzhGNDMyMURFMDBFRDYw
MDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU3OEY0MzMxREUwMEVENjAwM0RGQzZBIC8qIFByb21pc2VSZWpl
Y3Rpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9taXNlUmVq
ZWN0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3OEY0MzQxREUw
MEVENjAwM0RGQzZBIC8qIFByb21pc2VSZWplY3Rpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUHJvbWlzZVJlamVjdGlvbkV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzNDU1LDggKzIzNDUyLDYgQEAKIAkJCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5
MzcgLyogQ1BVTW9uaXRvci5oICovLAogCQkJCUUxMUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBD
dXJzb3IuY3BwICovLAogCQkJCUY1ODc4Njg0MDJERTNCODYwMUVBNDEyMiAvKiBDdXJzb3IuaCAq
LywKLQkJCQlBNTczMkIwODEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICov
LAotCQkJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovLAog
CQkJCTM3QzczOEYxMUVEQkRFODcwMDNGMkIwQiAvKiBEYXRlVGltZUNob29zZXIuaCAqLywKIAkJ
CQkzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmggKi8s
CiAJCQkJNDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAxIC8qIERlY2ltYWwuY3BwICovLApAQCAtMjY1
NTMsNyArMjY1NDgsNiBAQAogCQkJCTgxQUM1OTlBMTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJh
bnNmZXJJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBMDA3ODMxQjgyMEVDODAwMkM1
QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEEwMDc4MzFCODIw
RUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1NzMy
QjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8qIERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3QzczOEYzMUVEQkRFOEEwMDNGMkIwQiAvKiBEYXRlVGltZUNob29zZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3QzczOEY0MUVEQkRFOEQwMDNGMkIwQiAvKiBEYXRlVGltZUNo
b29zZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
ZTI5NmVkMmIwYmEuLmU3OGRhZDFjMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUz
LDcgKzUzLDYgQEAKICNpbmNsdWRlICJDdXN0b21FdmVudC5oIgogI2luY2x1ZGUgIkRPTUltcGxl
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRGF0ZUNvbXBv
bmVudHMuaCIKICNpbmNsdWRlICJEZWJ1Z1BhZ2VPdmVybGF5cy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAppbmRleCA2ZTE1
ZjVkMTY0OS4uYjQxZTVmMzJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKERBVEVf
QU5EX1RJTUVfSU5QVVRfVFlQRVMpCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29tcG9uZW50cy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUu
aAppbmRleCBjODdhYzdiMDhjZi4uOWM3YTU5ZWM1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEYXRlVGltZUlucHV0VHlwZSBmaW5hbCA6IHB1YmxpYyBCYXNlQ2hvb3Nlck9ubHlE
YXRlQW5kVGltZUlucHV0VHlwZSB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGF0ZVRpbWVJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlRGF0ZVRpbWVJbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CisgICAgZXhwbGljaXQgRGF0ZVRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCkgOiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZShlbGVt
ZW50KSB7IH0KIAogcHJpdmF0ZToKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAppbmRleCA0ZWM0OTQ2NjQzYi4uODFiYmRiYmQ5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAj
aWYgUExBVEZPUk0oSU9TKQotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisjaW5jbHVkZSA8
d3RmL0RhdGVDb21wb25lbnRzLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDEyMDNlZGFiOTBhLi40MDQ4YmZmM2I3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkNo
ZWNrYm94SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiQ29sb3JJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJET01Gb3JtRGF0YS5oIgotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAi
RGF0ZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIkRhdGVUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVk
ZSAiRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIgpAQCAtNzUsNiArNzQsNyBAQAogI2luY2x1ZGUg
IldlZWtJbnB1dFR5cGUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZUNvbXBvbmVudHMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXgg
YzczOWE4ZjI0ZmMuLjY5NWVjYmI2ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTM1
LDIwICszNSwxNiBAQAogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyUHRyLmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCisjaW5jbHVkZSA8
d3RmL0RhdGVDb21wb25lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFBMQVRG
T1JNKElPUykKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CiBjbGFzcyBDaHJv
bWU7CiBjbGFzcyBET01Gb3JtRGF0YTsKLWNsYXNzIERhdGVDb21wb25lbnRzOwogY2xhc3MgRHJh
Z0RhdGE7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZpbGVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmluZGV4IGE5MWZlODNjYjc5Li41ZWQ5MDlh
ZDg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxv
Y2FsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUu
aApAQCAtMjMsMTAgKzIzLDkgQEAKICAqIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3Jt
TG9jYWxlX2gKLSNkZWZpbmUgUGxhdGZvcm1Mb2NhbGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJEYXRlQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29tcG9uZW50cy5oPgog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC0xNTUsNCArMTU0LDMgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExv
Y2FsZTo6Y3JlYXRlRGVmYXVsdCgpCiB9CiAKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUuaAppbmRleCBjYTNi
YTFmMDZmZC4uMjA5MGRhYjAzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCkBAIC0yOCw4ICsyOCw4IEBACiAvLyBG
SVhNRTogUmVuYW1lIHRoaXMgZmlsZSB0byBMb2NhbGl6ZWREYXRhQ2FjaGVJT1MuaCBhbmQgcmVt
b3ZlIHRoaXMgZ3VhcmQuCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW5jbHVkZSAiRGF0ZUNvbXBv
bmVudHMuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29t
cG9uZW50cy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5o
CmluZGV4IDZmNGM5ZTJmY2IwLi5iMTEyZGFiNzAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKQEAgLTI4LDggKzI4LDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBMb2NhbGVNYWNfaAotI2RlZmluZSBMb2NhbGVNYWNfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC00MSw5ICs0MCwxMSBAQCBPQkpDX0NMQVNTIE5TQ2FsZW5kYXI7CiBPQkpD
X0NMQVNTIE5TRGF0ZUZvcm1hdHRlcjsKIE9CSkNfQ0xBU1MgTlNMb2NhbGU7CiAKLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMb2NhbGVNYWMgOiBwdWJsaWMgTG9jYWxl
IHsKIHB1YmxpYzoKQEAgLTk4LDQgKzk5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5jcHAKaW5kZXggZDE5NjkzYTEyYTMuLmJlYmNjZTM4NWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbGVXaW4uaCIKIAotI2lu
Y2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKICNp
bmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uaAppbmRleCAwZmVkM2JiZjFhMy4u
NTg0MGZhYjAxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2lu
L0xvY2FsZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2Fs
ZVdpbi5oCkBAIC0yOCw4ICsyOCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
TG9jYWxlV2luX2gKLSNkZWZpbmUgTG9jYWxlV2luX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Mb2NhbGUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zOSw3ICszOCw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0ZUNvbXBvbmVudHM7CiBzdHJ1
Y3QgRGF0ZUZvcm1hdFRva2VuOwogCiBjbGFzcyBMb2NhbGVXaW4gOiBwdWJsaWMgTG9jYWxlIHsK
QEAgLTg4LDQgKzg2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IGQyZTY0MWU4MTNiLi5lYWY0ZGU0ZDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKICNpbXBvcnQgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbXBvcnQg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKLSNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0
ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRmlsZS5oIgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVj
dC5oIgpAQCAtNzAsNiArNjksNyBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oPgorI2ltcG9ydCA8d3RmL0RhdGVDb21wb25lbnRzLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328062</attachid>
            <date>2017-11-30 18:04:18 -0800</date>
            <delta_ts>2017-12-01 13:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>180211-3.diff</filename>
            <type>text/plain</type>
            <size>25868</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTgzOTdmZGY5MWMuLjBlYmYzN2I0NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTExLTMwICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBNb3ZlIERhdGVDb21wb25lbnRzIGludG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlZCBEYXRlQ29tcG9uZW50cyBmcm9tIFdlYkNvcmUv
cGxhdGZvcm0gaW50byBXVEYuCisgICAgICAgIFJlbW92ZWQgaXNMZWFwWWVhciBmcm9tIERhdGVD
b21wb25lbnRzIGFzIERhdGVNYXRoIGFscmVhZHkgaGFzIHRoYXQgZnVuY3Rpb24uCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGVDb21wb25lbnRzLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZVxXZWJDb3JlXHBsYXRmb3JtXERhdGVDb21wb25lbnRzLmNwcC4KKyAgICAgICAgKiB3
dGYvRGF0ZUNvbXBvbmVudHMuaDogUmVuYW1lZCBmcm9tIFNvdXJjZVxXZWJDb3JlXHBsYXRmb3Jt
XERhdGVDb21wb25lbnRzLmguCisKIDIwMTctMTEtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgSlNPTlZhbHVlcyB0byBXVEYgYW5k
IGNvbnZlcnQgdXNlcyBvZiBJbnNwZWN0b3JWYWx1ZXMuaCB0byBKU09OVmFsdWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI0Mjc4MDhlOTk4Li4yODVh
ZjBjZjBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
Miw2ICs4Miw3IEBACiAJCTkzRjE5OTNFMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNE
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZD
Mzc5RDAwMTAxREVDIC8qIEF0b21pY1N0cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBB
dG9taWNTdHJpbmdUYWJsZS5jcHAgKi87IH07CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAv
KiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87
IH07CisJCUEzQ0FCQTA4MUZEMDk1MTEwMDA3QTRERSAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0NBQkEwNjFGRDA5
NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4
MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVh
bS5jcHAgKi87IH07CiAJCUE1QkExNUYzMTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4
MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nTWFjLm1tICovOyB9OwogCQlBNUJBMTVGNTE4MjQzNDgw
MDBBODJFNjkgLyogU3RyaW5nSW1wbE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkExNUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBs
TWFjLm1tICovOyB9OwpAQCAtMzg1LDYgKzM4Niw4IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3
MTk1NCAvKiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b2Z0TGlua2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERF
MTNGMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBQjZF
NkExRjNFMUFENjAwOUMxNEIxIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBM0NBQkEwNjFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0REUgLyogRGF0
ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBv
bmVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAw
REVEMEI0IC8qIFRleHRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGV4dFN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRE
RDkyMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODA1LDYgKzgwOCw4IEBACiAJCQkJQThBNDcyNzYxNTFBODI1QTAwNDEyM0ZGIC8qIEN1
cnJlbnRUaW1lLmggKi8sCiAJCQkJQThBNDcyNzcxNTFBODI1QTAwNDEyM0ZGIC8qIERhdGFMb2cu
Y3BwICovLAogCQkJCUE4QTQ3Mjc4MTUxQTgyNUEwMDQxMjNGRiAvKiBEYXRhTG9nLmggKi8sCisJ
CQkJQTNDQUJBMDYxRkQwOTUxMTAwMDdBNERFIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKKwkJ
CQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQlB
OEE0NzI3OTE1MUE4MjVBMDA0MTIzRkYgLyogRGF0ZU1hdGguY3BwICovLAogCQkJCUE4QTQ3MjdB
MTUxQTgyNUEwMDQxMjNGRiAvKiBEYXRlTWF0aC5oICovLAogCQkJCTk5NkIxNzg0MUVCQTQ0MUMw
MDdFMTBFQiAvKiBEZWJ1Z1V0aWxpdGllcy5oICovLApAQCAtMTM3OSw2ICsxMzg0LDcgQEAKIAkJ
CQlBOEE0NzQzOTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzM5QzE1MUE4MjVCMDA0MTIzRkYgLyogQ3VycmVudFRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDczOUUxNTFBODI1QjAwNDEyM0ZGIC8qIERhdGFMb2cuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTNDQUJBMDgxRkQwOTUxMTAwMDdBNERFIC8qIERhdGVDb21wb25lbnRz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRl
TWF0aC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNBMjE1MUE4MjVCMDA0MTIzRkYgLyog
RGVjaW1hbE51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBE
OEI3MUQgLyogRGVwcmVjYXRlZFN5bWJvbHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZDM0NWE4NGYwNDkuLjk1OWZjNDg1YzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMjIyLDYgKzIyMiw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIENy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAogICAgIEN1cnJlbnRUaW1lLmNwcAogICAg
IERhdGFMb2cuY3BwCisgICAgRGF0ZUNvbXBvbmVudHMuY3BwCiAgICAgRGF0ZU1hdGguY3BwCiAg
ICAgRGVjaW1hbE51bWJlci5jcHAKICAgICBGYXN0Qml0VmVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwIGIvU291cmNlL1dURi93
dGYvRGF0ZUNvbXBvbmVudHMuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApyZW5hbWUgdG8gU291cmNl
L1dURi93dGYvRGF0ZUNvbXBvbmVudHMuY3BwCmluZGV4IGRiNzA3ODg2YTBiLi44MjEzZDA5NWU1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmNwcApAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXVEYgewogCiAvLyBIVE1M
NSBzcGVjaWZpY2F0aW9uIGRlZmluZXMgbWluaW11bSB3ZWVrIG9mIHllYXIgaXMgb25lLgogY29u
c3QgaW50IERhdGVDb21wb25lbnRzOjptaW5pbXVtV2Vla051bWJlciA9IDE7CkBAIC01MSwxNyAr
NTEsNiBAQCBzdGF0aWMgY29uc3QgaW50IG1heGltdW1XZWVrSW5NYXhpbXVtWWVhciA9IDM3OyAv
LyBUaGUgd2VlayBvZiAyNzU3NjAtMDktMTMKIAogc3RhdGljIGNvbnN0IGludCBkYXlzSW5Nb250
aFsxMl0gPSB7MzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMX07
CiAKLXN0YXRpYyBib29sIGlzTGVhcFllYXIoaW50IHllYXIpCi17Ci0gICAgaWYgKHllYXIgJSA0
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCEoeWVhciAlIDQwMCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmICghKHllYXIgJSAxMDApKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vICdtb250aCcgaXMgMC1iYXNlZC4KIHN0YXRp
YyBpbnQgbWF4RGF5T2ZNb250aChpbnQgeWVhciwgaW50IG1vbnRoKQogewpAQCAtMTk1LDcgKzE4
NCw4IEBAIGJvb2wgRGF0ZUNvbXBvbmVudHM6OmFkZERheShpbnQgZGF5RGlmZikKICAgICAgICAg
ICAgIGlmIChkYXkgPiBtYXhEYXkpIHsKICAgICAgICAgICAgICAgICBkYXkgPSAxOwogICAgICAg
ICAgICAgICAgICsrbW9udGg7Ci0gICAgICAgICAgICAgICAgaWYgKG1vbnRoID49IDEyKSB7IC8v
IG1vbnRoIGlzIDAtb3JpZ2luLgorICAgICAgICAgICAgICAgIC8vIG1vbnRoIGlzIDAtb3JpZ2lu
LgorICAgICAgICAgICAgICAgIGlmIChtb250aCA+PSAxMikgewogICAgICAgICAgICAgICAgICAg
ICBtb250aCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICsreWVhcjsKICAgICAgICAgICAgICAg
ICB9CkBAIC03MjUsNCArNzE1LDQgQEAgU3RyaW5nIERhdGVDb21wb25lbnRzOjp0b1N0cmluZyhT
ZWNvbmRGb3JtYXQgZm9ybWF0KSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoIihJbnZhbGlkIERh
dGVDb21wb25lbnRzKSIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlQ29tcG9uZW50cy5oCnNpbWlsYXJpdHkgaW5kZXgg
NzglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmgK
cmVuYW1lIHRvIFNvdXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmgKaW5kZXggMDRhZGUyYzM5
MTAuLjFjYWNhZmMyMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmgKQEAgLTI4
LDE0ICsyOCwxMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERhdGVDb21wb25l
bnRzX2gKLSNkZWZpbmUgRGF0ZUNvbXBvbmVudHNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV1RGIHsKIAogLy8gQSBE
YXRlQ29tcG9uZW50cyBpbnN0YW5jZSByZXByZXNlbnRzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGRh
dGUgYW5kIHRpbWUgY29tYmluYXRpb25zOgogLy8gKiBNb250aCB0eXBlOiB5ZWFyLW1vbnRoCkBA
IC02OCwxNSArNjcsMTUgQEAgcHVibGljOgogICAgICAgICBXZWVrLAogICAgIH07CiAKLSAgICBp
bnQgbWlsbGlzZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX21pbGxpc2Vjb25kOyB9Ci0gICAgaW50
IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9Ci0gICAgaW50IG1pbnV0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWludXRlOyB9Ci0gICAgaW50IGhvdXIoKSBjb25zdCB7IHJldHVybiBt
X2hvdXI7IH0KLSAgICBpbnQgbW9udGhEYXkoKSBjb25zdCB7IHJldHVybiBtX21vbnRoRGF5OyB9
Ci0gICAgaW50IG1vbnRoKCkgY29uc3QgeyByZXR1cm4gbV9tb250aDsgfQotICAgIGludCBmdWxs
WWVhcigpIGNvbnN0IHsgcmV0dXJuIG1feWVhcjsgfQotICAgIGludCB3ZWVrKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWVrOyB9Ci0gICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCBtaWxsaXNlY29uZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWlsbGlzZWNvbmQ7IH0KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHNlY29uZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vjb25kOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCBtaW51
dGUoKSBjb25zdCB7IHJldHVybiBtX21pbnV0ZTsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBp
bnQgaG91cigpIGNvbnN0IHsgcmV0dXJuIG1faG91cjsgfQorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBpbnQgbW9udGhEYXkoKSBjb25zdCB7IHJldHVybiBtX21vbnRoRGF5OyB9CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgaW50IGZ1bGxZZWFyKCkgY29uc3QgeyByZXR1cm4gbV95ZWFyOyB9
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCB3ZWVrKCkgY29uc3QgeyByZXR1cm4gbV93ZWVr
OyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogCiAgICAgZW51bSBTZWNvbmRGb3JtYXQgewogICAgICAgICBOb25lLCAvLyBTdXBw
cmVzcyB0aGUgc2Vjb25kIHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJl
IDAuCkBAIC04Niw3ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgYW4gSVNPIDg2
MDEgcmVwcmVzZW50YXRpb24gZm9yIHRoaXMgaW5zdGFuY2UuCiAgICAgLy8gVGhlIGZvcm1hdCBh
cmd1bWVudCBpcyB2YWxpZCBmb3IgRGF0ZVRpbWUsIERhdGVUaW1lTG9jYWwsIGFuZCBUaW1lIHR5
cGVzLgotICAgIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQgZm9ybWF0ID0gTm9uZSkgY29u
c3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmluZyhTZWNvbmRGb3JtYXQg
PSBOb25lKSBjb25zdDsKIAogICAgIC8vIHBhcnNlKigpIGFuZCBzZXRNaWxsaXNlY29uZHNTaW5j
ZSooKSBmdW5jdGlvbnMgYXJlIGluaXRpYWxpemVycyBmb3IgYW4KICAgICAvLyBEYXRlQ29tcG9u
ZW50cyBpbnN0YW5jZS4gSWYgdGhlc2UgZnVuY3Rpb25zIHJldHVybiBmYWxzZSwgdGhlIGluc3Rh
bmNlCkBAIC0xMDIsMTcgKzEwMSwxNyBAQCBwdWJsaWM6CiAgICAgLy8gZmFpbHVyZXMsIGFuZCB0
aGUgdHJhaWxpbmcgZXh0cmEgY2hhcmFjdGVycyBkb24ndCBjYXVzZSBwYXJzZSBmYWlsdXJlcy4K
IAogICAgIC8vIFNldHMgeWVhciBhbmQgbW9udGguCi0gICAgYm9vbCBwYXJzZU1vbnRoKGNvbnN0
IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBl
bmQpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBhcnNlTW9udGgoY29uc3QgVUNoYXIq
IHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CiAg
ICAgLy8gU2V0cyB5ZWFyLCBtb250aCBhbmQgbW9udGhEYXkuCi0gICAgYm9vbCBwYXJzZURhdGUo
Y29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQmIGVuZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcGFyc2VEYXRlKGNvbnN0IFVD
aGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQp
OwogICAgIC8vIFNldHMgeWVhciBhbmQgd2Vlay4KLSAgICBib29sIHBhcnNlV2Vlayhjb25zdCBV
Q2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5k
KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwYXJzZVdlZWsoY29uc3QgVUNoYXIqIHNy
YywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CiAgICAg
Ly8gU2V0cyBob3VyLCBtaW51dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQuCi0gICAgYm9vbCBw
YXJzZVRpbWUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQmIGVuZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcGFyc2VUaW1l
KGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkJiBlbmQpOwogICAgIC8vIFNldHMgeWVhciwgbW9udGgsIG1vbnRoRGF5LCBob3VyLCBtaW51
dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQuCi0gICAgYm9vbCBwYXJzZURhdGVUaW1lTG9jYWwo
Y29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQmIGVuZCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcGFyc2VEYXRlVGltZUxvY2Fs
KGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkJiBlbmQpOwogICAgIC8vIFNldHMgeWVhciwgbW9udGgsIG1vbnRoRGF5LCBob3VyLCBtaW51
dGUsIHNlY29uZCBhbmQgbWlsbGlzZWNvbmQsIGFuZCBhZGp1c3RzIHRpbWV6b25lLgotICAgIGJv
b2wgcGFyc2VEYXRlVGltZShjb25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
YXJzZURhdGVUaW1lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkJiBlbmQpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBzZXRNaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yKigpIGZ1bmN0aW9ucyB0YWtlCiAgICAgLy8gdGhlIG51bWJlciBv
ZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MC0wMS0wMSAwMDowMDowMC4wMDAgVVRDIGFzCkBAIC0x
MjEsMjkgKzEyMCwyOSBAQCBwdWJsaWM6CiAgICAgLy8gZmFsc2UgaWYgdGhleSBmYWlsLgogCiAg
ICAgLy8gRm9yIERhdGUgdHlwZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGggYW5kIG1fbW9udGhE
YXkuCi0gICAgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShkb3VibGUgbXMp
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hG
b3JEYXRlKGRvdWJsZSk7CiAgICAgLy8gRm9yIERhdGVUaW1lIHR5cGUuIFVwZGF0ZXMgbV95ZWFy
LCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCBhbmQgbV9t
aWxsaXNlY29uZC4KLSAgICBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGlt
ZShkb3VibGUgbXMpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25k
c1NpbmNlRXBvY2hGb3JEYXRlVGltZShkb3VibGUpOwogICAgIC8vIEZvciBEYXRlVGltZUxvY2Fs
IHR5cGUuIFVwZGF0ZXMgbV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIsIG1fbWlu
dXRlLCBtX3NlY29uZCBhbmQgbV9taWxsaXNlY29uZC4KLSAgICBib29sIHNldE1pbGxpc2Vjb25k
c1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKGRvdWJsZSBtcyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91
YmxlKTsKICAgICAvLyBGb3IgTW9udGggdHlwZS4gVXBkYXRlcyBtX3llYXIgYW5kIG1fbW9udGgu
Ci0gICAgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
TW9udGgoZG91YmxlKTsKICAgICAvLyBGb3IgV2VlayB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQg
bV93ZWVrLgotICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcldlZWsoZG91Ymxl
IG1zKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVw
b2NoRm9yV2Vlayhkb3VibGUpOwogCiAgICAgLy8gRm9yIFRpbWUgdHlwZS4gVXBkYXRlcyBtX2hv
dXIsIG1fbWludXRlLCBtX3NlY29uZCBhbmQgbV9taWxsaXNlY29uZC4KLSAgICBib29sIHNldE1p
bGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSk7CiAKICAgICAvLyBB
bm90aGVyIGluaXRpYWxpemVyIGZvciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQgbV9t
b250aC4KLSAgICBib29sIHNldE1vbnRoc1NpbmNlRXBvY2goZG91YmxlIG1vbnRocyk7CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0TW9udGhzU2luY2VFcG9jaChkb3VibGUpOwogCiAg
ICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIDE5NzAtMDEtMDEg
MDA6MDA6MDAgVVRDLgogICAgIC8vIEZvciBhIERhdGVDb21wb25lbnRzIGluaXRpYWxpemVkIHdp
dGggcGFyc2VEYXRlVGltZUxvY2FsKCksCiAgICAgLy8gbWlsbGlzZWNvbmRzU2luY2VFcG9jaCgp
IHJldHVybnMgYSB2YWx1ZSBmb3IgVVRDIHRpbWV6b25lLgotICAgIGRvdWJsZSBtaWxsaXNlY29u
ZHNTaW5jZUVwb2NoKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBtaWxs
aXNlY29uZHNTaW5jZUVwb2NoKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9m
IG1vbnRocyBmcm9tIDE5NzAtMDEuCiAgICAgLy8gRG8gbm90IGNhbGwgdGhpcyBmb3IgdHlwZXMg
b3RoZXIgdGhhbiBNb250aC4KLSAgICBkb3VibGUgbW9udGhzU2luY2VFcG9jaCgpIGNvbnN0Owor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgbW9udGhzU2luY2VFcG9jaCgpIGNvbnN0Owog
ICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIGludmFsaWRNaWxsaXNlY29uZHMoKSB7IHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyB9CiAKICAgICAvLyBNaW5p
bXVtIGFuZCBtYXhtaW11bSBsaW1pdHMgZm9yIHNldE1pbGxpc2Vjb25kc1NpbmNlKigpLApAQCAt
MTc5LDggKzE3OCw4IEBAIHByaXZhdGU6CiAgICAgLy8gSGVscGVyIGZvciBtaWxsaXNlY29uZHNT
aW5jZUVwb2NoKCkuCiAgICAgZG91YmxlIG1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JUaW1lKCkg
Y29uc3Q7CiAgICAgLy8gSGVscGVycyBmb3Igc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvcioo
KS4KLSAgICBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlSW50ZXJuYWwoZG91
YmxlIG1zKTsKLSAgICB2b2lkIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHRJbnRlcm5hbChk
b3VibGUgbXMpOworICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVJbnRl
cm5hbChkb3VibGUpOworICAgIHZvaWQgc2V0TWlsbGlzZWNvbmRzU2luY2VNaWRuaWdodEludGVy
bmFsKGRvdWJsZSk7CiAgICAgLy8gSGVscGVyIGZvciB0b1N0cmluZygpLgogICAgIFN0cmluZyB0
b1N0cmluZ0ZvclRpbWUoU2Vjb25kRm9ybWF0KSBjb25zdDsKIApAQCAtMjA4LDYgKzIwNyw2IEBA
IHByaXZhdGU6CiB9OwogCiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IFdURgogCi0jZW5kaWYgLy8gRGF0ZUNvbXBvbmVudHNfaAordXNpbmcgV1RGOjpEYXRlQ29tcG9u
ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBjNDgyZmY0ZWM5NS4uZTkzZTA4NjViZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxNy0xMS0zMCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJl
aWRAc29ueS5jb20+CisKKyAgICAgICAgTW92ZSBEYXRlQ29tcG9uZW50cyBpbnRvIFdURgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjExCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICBNb3ZlZCBEYXRlQ29tcG9uZW50cyBm
cm9tIHBsYXRmb3JtIGludG8gV1RGLgorCisgICAgICAgICogU291cmNlcy50eHQ6IFJlbW92ZWQg
RGF0ZUNvbXBvbmVudHMKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IFJlbW92ZWQgRGF0ZUNvbXBvbmVudHMKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRt
bC9EYXRlVGltZUlucHV0VHlwZS5oOiBGaXhlZCBhIGNhbGwgdG8gdGhlIHdyb25nIHBhcmVudCBj
b25zdHJ1Y3RvcgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvUGxhdGZvcm1Mb2NhbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2lvcy9Mb2Nh
bGl6ZWREYXRlQ2FjaGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKwogMjAxNy0xMS0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTW92ZSBKU09OVmFsdWVzIHRvIFdURiBhbmQgY29u
dmVydCB1c2VzIG9mIEluc3BlY3RvclZhbHVlcy5oIHRvIEpTT05WYWx1ZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAxYmRkNzgyY2ExOS4uNGRjNjRjNjdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMzg1
LDcgKzEzODUsNiBAQCBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRN
ZW51LmNwcAogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmNwcAogcGxhdGZvcm0vQ3Vyc29yLmNw
cAotcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCiBwbGF0Zm9ybS9EZWNpbWFsLmNwcAogcGxh
dGZvcm0vRHJhZ0RhdGEuY3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM2NmFhODg2
OWYuLjY3MmM1YTE4ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODMzLDcgKzI4MzMsNiBAQAogCQlBNTRBMEM2QzFEQjgz
MUY5MDAxN0E5MEIgLyogV29ya2VySW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NEEwQzZBMURCODMxRjIwMDE3QTkwQiAvKiBX
b3JrZXJJbnNwZWN0b3JQcm94eS5oICovOyB9OwogCQlBNTU0QjVGMzFFMzgzOTNBMDAxRDRFMDMg
LyogUGVyZm9ybWFuY2VVc2VyVGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTU0QjVGMTFFMzgzOTM2MDAxRDRFMDMgLyogUGVyZm9ybWFuY2VV
c2VyVGltaW5nLmggKi87IH07CiAJCUE1NTYzOUQxMUM2RjA5RTMwMDgwNkQ4RSAvKiBXb3JrZXJD
b25zb2xlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTU2MzlEMDFDNkVGRDU5MDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oICov
OyB9OwotCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzMyQjA5MTM2QTE2
MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NzhGNDM1MURFMDBFRUIwMDNERkM2QSAvKiBQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1NzhGNDMzMURFMDBFRDYwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZl
bnQuaCAqLzsgfTsKIAkJQTU3OEY0M0MxREUwMTQyMzAwM0RGQzZBIC8qIEpTUHJvbWlzZVJlamVj
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNTc4RjQzQTFERTAxM0ZCMDAzREZDNkEgLyogSlNQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCAq
LzsgfTsKIAkJQTU3OEY0M0YxREUwQjYzMDAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NzhG
NDNFMURFMEI2MkIwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNzEyLDggKzEwNzEx
LDYgQEAKIAkJQTU1NEI1RjExRTM4MzkzNjAwMUQ0RTAzIC8qIFBlcmZvcm1hbmNlVXNlclRpbWlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZVVzZXJUaW1p
bmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU1NjM5Q0YxQzZFRkQ1OTAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyQ29uc29sZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1NTYzOUQwMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJDb25zb2xlQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlckNvbnNvbGVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdD
IC8qIERhdGVDb21wb25lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERhdGVDb21wb25lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU3
MzJCMDkxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERhdGVDb21wb25lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE1NzhGNDMyMURFMDBFRDYwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvbWlzZVJlamVj
dGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3OEY0MzMxREUw
MEVENjAwM0RGQzZBIC8qIFByb21pc2VSZWplY3Rpb25FdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9taXNlUmVqZWN0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTU3OEY0MzQxREUwMEVENjAwM0RGQzZBIC8qIFByb21pc2VSZWplY3Rp
b25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUHJvbWlzZVJlamVjdGlvbkV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDU1LDggKzIzNDUyLDYgQEAK
IAkJCQk0NkM2OTZDOTFFNzIwNUU0MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5oICovLAogCQkJCUUx
MUFGMTUwMTFCOUExQTMwMDgwNTEwMyAvKiBDdXJzb3IuY3BwICovLAogCQkJCUY1ODc4Njg0MDJE
RTNCODYwMUVBNDEyMiAvKiBDdXJzb3IuaCAqLywKLQkJCQlBNTczMkIwODEzNkExNjFEMDA1QzhE
N0MgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovLAotCQkJCUE1NzMyQjA5MTM2QTE2MUQwMDVDOEQ3
QyAvKiBEYXRlQ29tcG9uZW50cy5oICovLAogCQkJCTM3QzczOEYxMUVEQkRFODcwMDNGMkIwQiAv
KiBEYXRlVGltZUNob29zZXIuaCAqLywKIAkJCQkzN0M3MzhGMjFFREJERTg3MDAzRjJCMEIgLyog
RGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmggKi8sCiAJCQkJNDVGRUE1Q0QxNTZEREU4QzAwNjU0MTAx
IC8qIERlY2ltYWwuY3BwICovLApAQCAtMjY1NTMsNyArMjY1NDgsNiBAQAogCQkJCTgxQUM1OTlB
MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCUE1NzMyQjBCMTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29t
cG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjYxMjUxRjEyRDAwM0VGMjY5IC8q
IERhdGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzczOEYzMUVEQkRFOEEwMDNG
MkIwQiAvKiBEYXRlVGltZUNob29zZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzczOEY0MUVE
QkRFOEQwMDNGMkIwQiAvKiBEYXRlVGltZUNob29zZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTI5NmVkMmIwYmEuLmU3OGRhZDFjMTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUzLDcgKzUzLDYgQEAKICNpbmNsdWRlICJDdXN0b21F
dmVudC5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJEZWJ1Z1BhZ2VP
dmVybGF5cy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuaAppbmRleCA2ZTE1ZjVkMTY0OS4uYjQxZTVmMzJkZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtMzMsOCAr
MzMsOCBAQAogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCiAKLSNpbmNs
dWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUg
PHd0Zi9EYXRlQ29tcG9uZW50cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAppbmRleCBjODdhYzdiMDhjZi4uZTFlNTYxYThh
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgKQEAgLTM5LDcgKzM5
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEYXRlVGltZUlucHV0VHlwZSBmaW5h
bCA6IHB1YmxpYyBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZSB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgRGF0ZVRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVu
dCkgOiBCYXNlRGF0ZVRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhwbGljaXQgRGF0
ZVRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKKyAgICAgICAgOiBCYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA0ZWM0OTQ2NjQzYi4u
ODFiYmRiYmQ5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAjaWYgUExBVEZPUk0oSU9TKQotI2lu
Y2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisjaW5jbHVkZSA8d3RmL0RhdGVDb21wb25lbnRzLmg+
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CmluZGV4IDEyMDNlZGFiOTBhLi40MDQ4YmZmM2I3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkNoZWNrYm94SW5wdXRUeXBlLmgiCiAj
aW5jbHVkZSAiQ29sb3JJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgotI2lu
Y2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRGF0ZUlucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIkRhdGVUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVMb2NhbElucHV0
VHlwZS5oIgpAQCAtNzUsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlZWtJbnB1dFR5cGUuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvRGF0ZUNvbXBvbmVudHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYzczOWE4ZjI0ZmMuLjY5NWVjYmI2
ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTM1LDIwICszNSwxNiBAQAogI2luY2x1
ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyUHRyLmgi
CiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCisjaW5jbHVkZSA8d3RmL0RhdGVDb21wb25lbnRzLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlICJE
YXRlQ29tcG9uZW50cy5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CiBjbGFzcyBDaHJvbWU7CiBjbGFzcyBET01Gb3JtRGF0
YTsKLWNsYXNzIERhdGVDb21wb25lbnRzOwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFdmVudDsK
IGNsYXNzIEZpbGVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybUxvY2FsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9y
bUxvY2FsZS5oCmluZGV4IGE5MWZlODNjYjc5Li41ZWQ5MDlhZDg3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaApAQCAtMjMsMTAgKzIzLDkgQEAK
ICAqIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFBsYXRmb3JtTG9jYWxlX2gKLSNkZWZpbmUgUGxh
dGZvcm1Mb2NhbGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5o
IgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29tcG9uZW50cy5oPgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFn
ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNTUsNCArMTU0LDMg
QEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxMb2NhbGU+IExvY2FsZTo6Y3JlYXRlRGVmYXVsdCgp
CiB9CiAKIH0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUuaAppbmRleCBjYTNiYTFmMDZmZC4uMjA5MGRhYjAzYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERh
dGVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXpl
ZERhdGVDYWNoZS5oCkBAIC0yOCw4ICsyOCw4IEBACiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgZmls
ZSB0byBMb2NhbGl6ZWREYXRhQ2FjaGVJT1MuaCBhbmQgcmVtb3ZlIHRoaXMgZ3VhcmQuCiAjaWYg
UExBVEZPUk0oSU9TKQogCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29tcG9uZW50cy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oCmluZGV4IDZmNGM5ZTJmY2IwLi5i
MTEyZGFiNzAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxl
TWFjLmgKQEAgLTI4LDggKzI4LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBM
b2NhbGVNYWNfaAotI2RlZmluZSBMb2NhbGVNYWNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSw5ICs0
MCwxMSBAQCBPQkpDX0NMQVNTIE5TQ2FsZW5kYXI7CiBPQkpDX0NMQVNTIE5TRGF0ZUZvcm1hdHRl
cjsKIE9CSkNfQ0xBU1MgTlNMb2NhbGU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNw
YWNlIFdURiB7CiBjbGFzcyBEYXRlQ29tcG9uZW50czsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBMb2NhbGVNYWMgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKQEAgLTk4LDQg
Kzk5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXgg
ZDE5NjkzYTEyYTMuLmJlYmNjZTM4NWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJMb2NhbGVXaW4uaCIKIAotI2luY2x1ZGUgIkRhdGVDb21wb25lbnRz
LmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVGb3JtYXQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L3dpbi9Mb2NhbGVXaW4uaAppbmRleCAwZmVkM2JiZjFhMy4uNTg0MGZhYjAxYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5oCkBAIC0yOCw4ICsyOCw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgTG9jYWxlV2luX2gKLSNkZWZpbmUg
TG9jYWxlV2luX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUGxhdGZvcm1Mb2NhbGUuaCIK
ICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zOSw3ICszOCw2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRGF0ZUNvbXBvbmVudHM7CiBzdHJ1Y3QgRGF0ZUZvcm1hdFRva2VuOwog
CiBjbGFzcyBMb2NhbGVXaW4gOiBwdWJsaWMgTG9jYWxlIHsKQEAgLTg4LDQgKzg2LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGQyZTY0MWU4MTNiLi5lYWY0ZGU0
ZDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
MzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbXBvcnQgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
LSNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9y
dCAiRmlsZS5oIgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtNzAsNiArNjksNyBA
QAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVU
ZXh0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2ltcG9ydCA8d3Rm
L0RhdGVDb21wb25lbnRzLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBv
cnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328143</attachid>
            <date>2017-12-01 13:13:00 -0800</date>
            <delta_ts>2017-12-01 16:21:01 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180211-20171201131259.patch</filename>
            <type>text/plain</type>
            <size>84569</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4Mzk3ZmRmOTFjZDg5NDFkZDY3NTJm
MGJlNWVjMjU0N2Q5NzRkZGQuLmFlYmMxZGMxYTZhYzNkNDZjODRjOGVlN2NkM2IyMmI1ODgyMTQ5
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTEtMzAgIENocmlzdG9waGVyIFJlaWQgIDxj
aHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIE1vdmUgRGF0ZUNvbXBvbmVudHMgaW50byBX
VEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDIx
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgIE1v
dmVkIERhdGVDb21wb25lbnRzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybSBpbnRvIFdURi4KKyAgICAg
ICAgUmVtb3ZlZCBpc0xlYXBZZWFyIGZyb20gRGF0ZUNvbXBvbmVudHMgYXMgRGF0ZU1hdGggYWxy
ZWFkeSBoYXMgdGhhdCBmdW5jdGlvbi4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
RGF0ZUNvbXBvbmVudHMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlXFdlYkNvcmVccGxhdGZvcm1c
RGF0ZUNvbXBvbmVudHMuY3BwLgorICAgICAgICAqIHd0Zi9EYXRlQ29tcG9uZW50cy5oOiBSZW5h
bWVkIGZyb20gU291cmNlXFdlYkNvcmVccGxhdGZvcm1cRGF0ZUNvbXBvbmVudHMuaC4KKwogMjAx
Ny0xMS0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgTW92ZSBKU09OVmFsdWVzIHRvIFdURiBhbmQgY29udmVydCB1c2VzIG9mIEluc3BlY3Rv
clZhbHVlcy5oIHRvIEpTT05WYWx1ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYjQyNzgwOGU5OThkNzhhNmFhNmI2MDU0ODM3MTdlMWYyMWI1Y2I3MC4u
Mjg1YWYwY2YwYzc4OWM1ZmU3Y2ViMTExZTFiNWY0MjE2ZDI3ZWFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04Miw2ICs4Miw3IEBACiAJCTkzRjE5OTNF
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJp
bmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21pY1N0
cmluZ1RhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCQzcwRjA0MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9taWNTdHJpbmdUYWJsZS5jcHAgKi87
IH07CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5kb21EZXZpY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3
RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87IH07CisJCUEzQ0FCQTA4MUZEMDk1MTEw
MDA3QTRERSAvKiBEYXRlQ29tcG9uZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0NBQkEwNjFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBv
bmVudHMuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVh
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0
REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUE1QkExNUYz
MTgyNDMzQTkwMEE4MkU2OSAvKiBTdHJpbmdNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5n
TWFjLm1tICovOyB9OwogCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QkEx
NUY0MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJpbmdJbXBsTWFjLm1tICovOyB9OwpAQCAtMzg1LDYg
KzM4Niw4IEBACiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAvKiBTb2Z0TGlua2luZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlua2luZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERFMTNGMDBCNzE5NTQgLyogU29mdExpbmtp
bmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBQjZFNkExRjNFMUFENjAwOUMxNEIxIC8qIFZh
bHVlVG9TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVUb1N0
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0NBQkEwNjFGRDA5NTExMDAw
N0E0REUgLyogRGF0ZUNvbXBvbmVudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0REUgLyogRGF0ZUNvbXBvbmVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0ZUNvbXBvbmVudHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkyMUYzQTgwMzQwMERFRDBCNCAvKiBU
ZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3
IC8qIFNhbmRib3hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJv
eFNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA1LDYgKzgwOCw4IEBACiAJ
CQkJQThBNDcyNzYxNTFBODI1QTAwNDEyM0ZGIC8qIEN1cnJlbnRUaW1lLmggKi8sCiAJCQkJQThB
NDcyNzcxNTFBODI1QTAwNDEyM0ZGIC8qIERhdGFMb2cuY3BwICovLAogCQkJCUE4QTQ3Mjc4MTUx
QTgyNUEwMDQxMjNGRiAvKiBEYXRhTG9nLmggKi8sCisJCQkJQTNDQUJBMDYxRkQwOTUxMTAwMDdB
NERFIC8qIERhdGVDb21wb25lbnRzLmNwcCAqLywKKwkJCQlBM0NBQkEwNzFGRDA5NTExMDAwN0E0
REUgLyogRGF0ZUNvbXBvbmVudHMuaCAqLywKIAkJCQlBOEE0NzI3OTE1MUE4MjVBMDA0MTIzRkYg
LyogRGF0ZU1hdGguY3BwICovLAogCQkJCUE4QTQ3MjdBMTUxQTgyNUEwMDQxMjNGRiAvKiBEYXRl
TWF0aC5oICovLAogCQkJCTk5NkIxNzg0MUVCQTQ0MUMwMDdFMTBFQiAvKiBEZWJ1Z1V0aWxpdGll
cy5oICovLApAQCAtMTM3OSw2ICsxMzg0LDcgQEAKIAkJCQlBOEE0NzQzOTE1MUE4MjVCMDA0MTIz
RkYgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzM5QzE1MUE4MjVCMDA0
MTIzRkYgLyogQ3VycmVudFRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczOUUxNTFB
ODI1QjAwNDEyM0ZGIC8qIERhdGFMb2cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTNDQUJBMDgx
RkQwOTUxMTAwMDdBNERFIC8qIERhdGVDb21wb25lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3M0EwMTUxQTgyNUIwMDQxMjNGRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzNBMjE1MUE4MjVCMDA0MTIzRkYgLyogRGVjaW1hbE51bWJlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUNBREQ4NDE4ODQ0ODAxMDBEOEI3MUQgLyogRGVwcmVjYXRlZFN5bWJv
bHNVc2VkQnlTYWZhcmkubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZDM0NWE4NGYwNDlmMDUxNjU3MGUwMDExODA1ZDc0NzllZWUxMmQxOS4uOTU5ZmM0ODVjMTBjYTBl
YzBiZThmNGZiZTEzNDM1YjNhNTA1NmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIyMiw2
ICsyMjIsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBDcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5jcHAKICAgICBDdXJyZW50VGltZS5jcHAKICAgICBEYXRhTG9nLmNwcAorICAgIERhdGVD
b21wb25lbnRzLmNwcAogICAgIERhdGVNYXRoLmNwcAogICAgIERlY2ltYWxOdW1iZXIuY3BwCiAg
ICAgRmFzdEJpdFZlY3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVDb21w
b25lbnRzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MjEzZDA5NWU1ZjI3NjcxZmMyYmRmZGQwZmMwZDI1M2Y5YTRlYWM3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0wLDAgKzEsNzE4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRhdGVDb21wb25lbnRzLmgiCisKKyNpbmNs
dWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0
Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBIVE1MNSBzcGVjaWZp
Y2F0aW9uIGRlZmluZXMgbWluaW11bSB3ZWVrIG9mIHllYXIgaXMgb25lLgorY29uc3QgaW50IERh
dGVDb21wb25lbnRzOjptaW5pbXVtV2Vla051bWJlciA9IDE7CisKKy8vIEhUTUw1IHNwZWNpZmlj
YXRpb24gZGVmaW5lcyBtYXhpbXVtIHdlZWsgb2YgeWVhciBpcyA1My4KK2NvbnN0IGludCBEYXRl
Q29tcG9uZW50czo6bWF4aW11bVdlZWtOdW1iZXIgPSA1MzsKKworc3RhdGljIGNvbnN0IGludCBt
YXhpbXVtTW9udGhJbk1heGltdW1ZZWFyID0gODsgLy8gVGhpcyBpcyBTZXB0ZW1iZXIsIHNpbmNl
IG1vbnRocyBhcmUgMCBiYXNlZC4KK3N0YXRpYyBjb25zdCBpbnQgbWF4aW11bURheUluTWF4aW11
bU1vbnRoID0gMTM7CitzdGF0aWMgY29uc3QgaW50IG1heGltdW1XZWVrSW5NYXhpbXVtWWVhciA9
IDM3OyAvLyBUaGUgd2VlayBvZiAyNzU3NjAtMDktMTMKKworc3RhdGljIGNvbnN0IGludCBkYXlz
SW5Nb250aFsxMl0gPSB7MzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMw
LCAzMX07CisKKy8vICdtb250aCcgaXMgMC1iYXNlZC4KK3N0YXRpYyBpbnQgbWF4RGF5T2ZNb250
aChpbnQgeWVhciwgaW50IG1vbnRoKQoreworICAgIGlmIChtb250aCAhPSAxKSAvLyBGZWJydWFy
eT8KKyAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoW21vbnRoXTsKKyAgICByZXR1cm4gaXNMZWFw
WWVhcih5ZWFyKSA/IDI5IDogMjg7Cit9CisKKy8vICdtb250aCcgaXMgMC1iYXNlZC4KK3N0YXRp
YyBpbnQgZGF5T2ZXZWVrKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAgaW50
IHNoaWZ0ZWRNb250aCA9IG1vbnRoICsgMjsKKyAgICAvLyAyOkphbnVhcnksIDM6RmVidXJ1YXJ5
LCA0Ok1hcmNoLCAuLi4KKworICAgIC8vIFplbGxlcidzIGNvbmdydWVuY2UKKyAgICBpZiAoc2hp
ZnRlZE1vbnRoIDw9IDMpIHsKKyAgICAgICAgc2hpZnRlZE1vbnRoICs9IDEyOworICAgICAgICB5
ZWFyLS07CisgICAgfQorICAgIC8vIDQ6TWFyY2gsIC4uLiwgMTQ6SmFudWFyeSwgMTU6RmVicnVh
cnkKKworICAgIGludCBoaWdoWWVhciA9IHllYXIgLyAxMDA7CisgICAgaW50IGxvd1llYXIgPSB5
ZWFyICUgMTAwOworICAgIC8vIFdlIGFkZCA2IHRvIG1ha2UgdGhlIHJlc3VsdCBTdW5kYXktb3Jp
Z2luLgorICAgIGludCByZXN1bHQgPSAoZGF5ICsgMTMgKiBzaGlmdGVkTW9udGggLyA1ICsgbG93
WWVhciArIGxvd1llYXIgLyA0ICsgaGlnaFllYXIgLyA0ICsgNSAqIGhpZ2hZZWFyICsgNikgJSA3
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludCBEYXRlQ29tcG9uZW50czo6bWF4V2Vla051
bWJlckluWWVhcigpIGNvbnN0Cit7CisgICAgaW50IGRheSA9IGRheU9mV2VlayhtX3llYXIsIDAs
IDEpOyAvLyBKYW51YXJ5IDEuCisgICAgcmV0dXJuIGRheSA9PSBUaHVyc2RheSB8fCAoZGF5ID09
IFdlZG5lc2RheSAmJiBpc0xlYXBZZWFyKG1feWVhcikpID8gbWF4aW11bVdlZWtOdW1iZXIgOiBt
YXhpbXVtV2Vla051bWJlciAtIDE7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjb3VudERpZ2l0cyhj
b25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0KQoreworICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhcnQ7CisgICAgZm9yICg7IGluZGV4IDwgbGVuZ3RoOyArK2lu
ZGV4KSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHNyY1tpbmRleF0pKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBpbmRleCAtIHN0YXJ0OworfQorCisvLyBWZXJ5
IHN0cmljdCBpbnRlZ2VyIHBhcnNlci4gRG8gbm90IGFsbG93IGxlYWRpbmcgb3IgdHJhaWxpbmcg
d2hpdGVzcGFjZSB1bmxpa2UgY2hhcmFjdGVyc1RvSW50U3RyaWN0KCkuCitzdGF0aWMgYm9vbCB0
b0ludChjb25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHBhcnNlU3Rh
cnQsIHVuc2lnbmVkIHBhcnNlTGVuZ3RoLCBpbnQmIG91dCkKK3sKKyAgICBpZiAocGFyc2VTdGFy
dCArIHBhcnNlTGVuZ3RoID4gbGVuZ3RoIHx8IHBhcnNlTGVuZ3RoIDw9IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50
ID0gc3JjICsgcGFyc2VTdGFydDsKKyAgICBjb25zdCBVQ2hhciogZW5kID0gY3VycmVudCArIHBh
cnNlTGVuZ3RoOworCisgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgbmVnYXRpdmUgbnVt
YmVycyBmb3IgSVNPIDg2MDEuCisgICAgZm9yICg7IGN1cnJlbnQgPCBlbmQ7ICsrY3VycmVudCkg
eworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqY3VycmVudCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGludCBkaWdpdCA9ICpjdXJyZW50IC0gJzAnOworICAgICAgICBp
ZiAodmFsdWUgPiAoSU5UX01BWCAtIGRpZ2l0KSAvIDEwKSAvLyBDaGVjayBmb3Igb3ZlcmZsb3cu
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHZhbHVlID0gdmFsdWUgKiAxMCAr
IGRpZ2l0OworICAgIH0KKyAgICBvdXQgPSB2YWx1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBEYXRlQ29tcG9uZW50czo6cGFyc2VZZWFyKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpCit7CisgICAgdW5zaWduZWQg
ZGlnaXRzTGVuZ3RoID0gY291bnREaWdpdHMoc3JjLCBsZW5ndGgsIHN0YXJ0KTsKKyAgICAvLyBO
ZWVkcyBhdCBsZWFzdCA0IGRpZ2l0cyBhY2NvcmRpbmcgdG8gdGhlIHN0YW5kYXJkLgorICAgIGlm
IChkaWdpdHNMZW5ndGggPCA0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW50IHllYXI7
CisgICAgaWYgKCF0b0ludChzcmMsIGxlbmd0aCwgc3RhcnQsIGRpZ2l0c0xlbmd0aCwgeWVhcikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoeWVhciA8IG1pbmltdW1ZZWFyKCkgfHwg
eWVhciA+IG1heGltdW1ZZWFyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3llYXIg
PSB5ZWFyOworICAgIGVuZCA9IHN0YXJ0ICsgZGlnaXRzTGVuZ3RoOworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0ZUxpbWl0cyhpbnQgeWVhciwgaW50IG1v
bnRoKQoreworICAgIGlmICh5ZWFyIDwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1ZZWFyKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoeWVhciA8IERhdGVDb21wb25lbnRzOjptYXhp
bXVtWWVhcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbW9udGggPD0gbWF4
aW11bU1vbnRoSW5NYXhpbXVtWWVhcjsKK30KKworc3RhdGljIGJvb2wgd2l0aGluSFRNTERhdGVM
aW1pdHMoaW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRoRGF5KQoreworICAgIGlmICh5ZWFy
IDwgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1ZZWFyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoeWVhciA8IERhdGVDb21wb25lbnRzOjptYXhpbXVtWWVhcigpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAobW9udGggPCBtYXhpbXVtTW9udGhJbk1heGltdW1ZZWFyKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbW9udGhEYXkgPD0gbWF4aW11bURheUlu
TWF4aW11bU1vbnRoOworfQorCitzdGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0ZUxpbWl0cyhpbnQg
eWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXksIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQg
c2Vjb25kLCBpbnQgbWlsbGlzZWNvbmQpCit7CisgICAgaWYgKHllYXIgPCBEYXRlQ29tcG9uZW50
czo6bWluaW11bVllYXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh5ZWFyIDwg
RGF0ZUNvbXBvbmVudHM6Om1heGltdW1ZZWFyKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChtb250aCA8IG1heGltdW1Nb250aEluTWF4aW11bVllYXIpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChtb250aERheSA8IG1heGltdW1EYXlJbk1heGltdW1Nb250aCkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1vbnRoRGF5ID4gbWF4aW11bURheUluTWF4aW11bU1v
bnRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgLy8gKHllYXIsIG1vbnRoLCBtb250aERh
eSkgPSAobWF4aW11bVllYXIsIG1heGltdW1Nb250aEluTWF4aW11bVllYXIsIG1heGltdW1EYXlJ
bk1heGltdW1Nb250aCkKKyAgICByZXR1cm4gIWhvdXIgJiYgIW1pbnV0ZSAmJiAhc2Vjb25kICYm
ICFtaWxsaXNlY29uZDsKK30KKworYm9vbCBEYXRlQ29tcG9uZW50czo6YWRkRGF5KGludCBkYXlE
aWZmKQoreworICAgIEFTU0VSVChtX21vbnRoRGF5KTsKKworICAgIGludCBkYXkgPSBtX21vbnRo
RGF5ICsgZGF5RGlmZjsKKyAgICBpZiAoZGF5ID4gbWF4RGF5T2ZNb250aChtX3llYXIsIG1fbW9u
dGgpKSB7CisgICAgICAgIGRheSA9IG1fbW9udGhEYXk7CisgICAgICAgIGludCB5ZWFyID0gbV95
ZWFyOworICAgICAgICBpbnQgbW9udGggPSBtX21vbnRoOworICAgICAgICBpbnQgbWF4RGF5ID0g
bWF4RGF5T2ZNb250aCh5ZWFyLCBtb250aCk7CisgICAgICAgIGZvciAoOyBkYXlEaWZmID4gMDsg
LS1kYXlEaWZmKSB7CisgICAgICAgICAgICArK2RheTsKKyAgICAgICAgICAgIGlmIChkYXkgPiBt
YXhEYXkpIHsKKyAgICAgICAgICAgICAgICBkYXkgPSAxOworICAgICAgICAgICAgICAgICsrbW9u
dGg7CisgICAgICAgICAgICAgICAgLy8gbW9udGggaXMgMC1vcmlnaW4uCisgICAgICAgICAgICAg
ICAgaWYgKG1vbnRoID49IDEyKSB7CisgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgKyt5ZWFyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBtYXhEYXkgPSBtYXhEYXlPZk1vbnRoKHllYXIsIG1vbnRoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKHllYXIsIG1vbnRo
LCBkYXkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX3llYXIgPSB5ZWFy
OworICAgICAgICBtX21vbnRoID0gbW9udGg7CisgICAgfSBlbHNlIGlmIChkYXkgPCAxKSB7Cisg
ICAgICAgIGludCBtb250aCA9IG1fbW9udGg7CisgICAgICAgIGludCB5ZWFyID0gbV95ZWFyOwor
ICAgICAgICBkYXkgPSBtX21vbnRoRGF5OworICAgICAgICBmb3IgKDsgZGF5RGlmZiA8IDA7ICsr
ZGF5RGlmZikgeworICAgICAgICAgICAgLS1kYXk7CisgICAgICAgICAgICBpZiAoZGF5IDwgMSkg
eworICAgICAgICAgICAgICAgIC0tbW9udGg7CisgICAgICAgICAgICAgICAgaWYgKG1vbnRoIDwg
MCkgeworICAgICAgICAgICAgICAgICAgICBtb250aCA9IDExOworICAgICAgICAgICAgICAgICAg
ICAtLXllYXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRheSA9IG1heERh
eU9mTW9udGgoeWVhciwgbW9udGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMoeWVhciwgbW9udGgsIGRheSkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1feWVhciA9IHllYXI7CisgICAgICAgIG1fbW9udGgg
PSBtb250aDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRz
KG1feWVhciwgbV9tb250aCwgZGF5KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgbV9tb250aERheSA9IGRheTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEYXRl
Q29tcG9uZW50czo6YWRkTWludXRlKGludCBtaW51dGUpCit7CisgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGFkanVzdCB0aW1lem9uZSBvZmZzZXQuIFNvIG1feWVhciwgbV9tb250aCwK
KyAgICAvLyBtX21vbnRoRGF5IGhhdmUgdmFsdWVzIGJldHdlZW4gdGhlIGxvd2VyIGFuZCBoaWdo
ZXIgbGltaXRzLgorICAgIEFTU0VSVCh3aXRoaW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9u
dGgsIG1fbW9udGhEYXkpKTsKKworICAgIGludCBjYXJyeTsKKyAgICAvLyBtaW51dGUgY2FuIGJl
IG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiA1OS4KKyAgICBtaW51dGUgKz0gbV9taW51dGU7Cisg
ICAgaWYgKG1pbnV0ZSA+IDU5KSB7CisgICAgICAgIGNhcnJ5ID0gbWludXRlIC8gNjA7CisgICAg
ICAgIG1pbnV0ZSA9IG1pbnV0ZSAlIDYwOworICAgIH0gZWxzZSBpZiAobWludXRlIDwgMCkgewor
ICAgICAgICBjYXJyeSA9ICg1OSAtIG1pbnV0ZSkgLyA2MDsKKyAgICAgICAgbWludXRlICs9IGNh
cnJ5ICogNjA7CisgICAgICAgIGNhcnJ5ID0gLWNhcnJ5OworICAgICAgICBBU1NFUlQobWludXRl
ID49IDAgJiYgbWludXRlIDw9IDU5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXdpdGhp
bkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgbV9ob3VyLCBtaW51
dGUsIG1fc2Vjb25kLCBtX21pbGxpc2Vjb25kKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgbV9taW51dGUgPSBtaW51dGU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIGludCBob3VyID0gbV9ob3VyICsgY2Fycnk7CisgICAgaWYgKGhvdXIgPiAyMykgewor
ICAgICAgICBjYXJyeSA9IGhvdXIgLyAyNDsKKyAgICAgICAgaG91ciA9IGhvdXIgJSAyNDsKKyAg
ICB9IGVsc2UgaWYgKGhvdXIgPCAwKSB7CisgICAgICAgIGNhcnJ5ID0gKDIzIC0gaG91cikgLyAy
NDsKKyAgICAgICAgaG91ciArPSBjYXJyeSAqIDI0OworICAgICAgICBjYXJyeSA9IC1jYXJyeTsK
KyAgICAgICAgQVNTRVJUKGhvdXIgPj0gMCAmJiBob3VyIDw9IDIzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250
aERheSwgaG91ciwgbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIG1fbWludXRlID0gbWludXRlOworICAgICAgICBtX2hv
dXIgPSBob3VyOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFhZGREYXko
Y2FycnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxp
bWl0cyhtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgbV9zZWNvbmQs
IG1fbWlsbGlzZWNvbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9taW51dGUgPSBt
aW51dGU7CisgICAgbV9ob3VyID0gaG91cjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gUGFy
c2VzIGEgdGltZXpvbmUgcGFydCwgYW5kIGFkanVzdCB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhv
dXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZC4KK2Jvb2wgRGF0ZUNvbXBvbmVudHM6OnBh
cnNlVGltZVpvbmUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQmIGVuZCkKK3sKKyAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGFydDsKKyAgICBpZiAoc3Jj
W2luZGV4XSA9PSAnWicpIHsKKyAgICAgICAgZW5kID0gaW5kZXggKyAxOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIG1pbnVzOworICAgIGlmIChzcmNbaW5kZXhdID09
ICcrJykKKyAgICAgICAgbWludXMgPSBmYWxzZTsKKyAgICBlbHNlIGlmIChzcmNbaW5kZXhdID09
ICctJykKKyAgICAgICAgbWludXMgPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICsraW5kZXg7CisKKyAgICBpbnQgaG91cjsKKyAgICBpbnQgbWludXRlOworICAg
IGlmICghdG9JbnQoc3JjLCBsZW5ndGgsIGluZGV4LCAyLCBob3VyKSB8fCBob3VyIDwgMCB8fCBo
b3VyID4gMjMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbmRleCArPSAyOworCisgICAg
aWYgKGluZGV4ID49IGxlbmd0aCB8fCBzcmNbaW5kZXhdICE9ICc6JykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICsraW5kZXg7CisKKyAgICBpZiAoIXRvSW50KHNyYywgbGVuZ3RoLCBpbmRl
eCwgMiwgbWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IDU5KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaW5kZXggKz0gMjsKKworICAgIGlmIChtaW51cykgeworICAgICAgICBo
b3VyID0gLWhvdXI7CisgICAgICAgIG1pbnV0ZSA9IC1taW51dGU7CisgICAgfQorCisgICAgLy8g
U3VidHJhY3QgdGhlIHRpbWV6b25lIG9mZnNldC4KKyAgICBpZiAoIWFkZE1pbnV0ZSgtKGhvdXIg
KiA2MCArIG1pbnV0ZSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZW5kID0gaW5kZXg7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlTW9udGgo
Y29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQmIGVuZCkKK3sKKyAgICBBU1NFUlQoc3JjKTsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBp
ZiAoIXBhcnNlWWVhcihzcmMsIGxlbmd0aCwgc3RhcnQsIGluZGV4KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChpbmRleCA+PSBsZW5ndGggfHwgc3JjW2luZGV4XSAhPSAnLScpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2luZGV4OworCisgICAgaW50IG1vbnRoOworICAg
IGlmICghdG9JbnQoc3JjLCBsZW5ndGgsIGluZGV4LCAyLCBtb250aCkgfHwgbW9udGggPCAxIHx8
IG1vbnRoID4gMTIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAtLW1vbnRoOworICAgIGlm
ICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtb250aCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX21vbnRoID0gbW9udGg7CisgICAgZW5kID0gaW5kZXggKyAyOworICAgIG1f
dHlwZSA9IE1vbnRoOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERhdGVDb21wb25lbnRz
OjpwYXJzZURhdGUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQmIGVuZCkKK3sKKyAgICBBU1NFUlQoc3JjKTsKKyAgICB1bnNpZ25lZCBp
bmRleDsKKyAgICBpZiAoIXBhcnNlTW9udGgoc3JjLCBsZW5ndGgsIHN0YXJ0LCBpbmRleCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyAnLScgYW5kIDItZGlnaXRzIGFyZSBuZWVkZWQu
CisgICAgaWYgKGluZGV4ICsgMiA+PSBsZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoc3JjW2luZGV4XSAhPSAnLScpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2lu
ZGV4OworCisgICAgaW50IGRheTsKKyAgICBpZiAoIXRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwg
MiwgZGF5KSB8fCBkYXkgPCAxIHx8IGRheSA+IG1heERheU9mTW9udGgobV95ZWFyLCBtX21vbnRo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMo
bV95ZWFyLCBtX21vbnRoLCBkYXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9tb250
aERheSA9IGRheTsKKyAgICBlbmQgPSBpbmRleCArIDI7CisgICAgbV90eXBlID0gRGF0ZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEYXRlQ29tcG9uZW50czo6cGFyc2VXZWVrKGNvbnN0
IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBl
bmQpCit7CisgICAgQVNTRVJUKHNyYyk7CisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgaWYgKCFw
YXJzZVllYXIoc3JjLCBsZW5ndGgsIHN0YXJ0LCBpbmRleCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIDQgY2hhcmFjdGVycyAoJy0nICdXJyBkaWdpdCBkaWdpdCkgYXJlIG5lZWRl
ZC4KKyAgICBpZiAoaW5kZXggKyAzID49IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChzcmNbaW5kZXhdICE9ICctJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICsr
aW5kZXg7CisgICAgaWYgKHNyY1tpbmRleF0gIT0gJ1cnKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgKytpbmRleDsKKworICAgIGludCB3ZWVrOworICAgIGlmICghdG9JbnQoc3JjLCBsZW5n
dGgsIGluZGV4LCAyLCB3ZWVrKSB8fCB3ZWVrIDwgbWluaW11bVdlZWtOdW1iZXIgfHwgd2VlayA+
IG1heFdlZWtOdW1iZXJJblllYXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X3llYXIgPT0gbWF4aW11bVllYXIoKSAmJiB3ZWVrID4gbWF4aW11bVdlZWtJbk1heGltdW1ZZWFy
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV93ZWVrID0gd2VlazsKKyAgICBlbmQgPSBp
bmRleCArIDI7CisgICAgbV90eXBlID0gV2VlazsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBEYXRlQ29tcG9uZW50czo6cGFyc2VUaW1lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpCit7CisgICAgQVNTRVJUKHNyYyk7
CisgICAgaW50IGhvdXI7CisgICAgaWYgKCF0b0ludChzcmMsIGxlbmd0aCwgc3RhcnQsIDIsIGhv
dXIpIHx8IGhvdXIgPCAwIHx8IGhvdXIgPiAyMykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHVuc2lnbmVkIGluZGV4ID0gc3RhcnQgKyAyOworICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3JjW2luZGV4XSAhPSAnOicpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICArK2luZGV4OworCisgICAgaW50IG1pbnV0ZTsKKyAgICBpZiAo
IXRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwgMiwgbWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1p
bnV0ZSA+IDU5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW5kZXggKz0gMjsKKworICAg
IGludCBzZWNvbmQgPSAwOworICAgIGludCBtaWxsaXNlY29uZCA9IDA7CisgICAgLy8gT3B0aW9u
YWwgc2Vjb25kIHBhcnQuCisgICAgLy8gRG8gbm90IHJldHVybiB3aXRoIGZhbHNlIGJlY2F1c2Ug
dGhlIHBhcnQgaXMgb3B0aW9uYWwuCisgICAgaWYgKGluZGV4ICsgMiA8IGxlbmd0aCAmJiBzcmNb
aW5kZXhdID09ICc6JykgeworICAgICAgICBpZiAodG9JbnQoc3JjLCBsZW5ndGgsIGluZGV4ICsg
MSwgMiwgc2Vjb25kKSAmJiBzZWNvbmQgPj0gMCAmJiBzZWNvbmQgPD0gNTkpIHsKKyAgICAgICAg
ICAgIGluZGV4ICs9IDM7CisKKyAgICAgICAgICAgIC8vIE9wdGlvbmFsIGZyYWN0aW9uYWwgc2Vj
b25kIHBhcnQuCisgICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgc3JjW2luZGV4XSA9
PSAnLicpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBkaWdpdHNMZW5ndGggPSBjb3VudERp
Z2l0cyhzcmMsIGxlbmd0aCwgaW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXRz
TGVuZ3RoID4gIDApIHsKKyAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAg
ICAgICAgICAgYm9vbCBvazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0c0xlbmd0aCA9
PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IHRvSW50KHNyYywgbGVuZ3RoLCBp
bmRleCwgMSwgbWlsbGlzZWNvbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzZWNv
bmQgKj0gMTAwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpZ2l0c0xlbmd0aCA9
PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IHRvSW50KHNyYywgbGVuZ3RoLCBp
bmRleCwgMiwgbWlsbGlzZWNvbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzZWNv
bmQgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAvLyBkaWdpdHNMZW5ndGggPj0g
MworICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSB0b0ludChzcmMsIGxlbmd0aCwgaW5kZXgs
IDMsIG1pbGxpc2Vjb25kKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywg
b2spOworICAgICAgICAgICAgICAgICAgICBpbmRleCArPSBkaWdpdHNMZW5ndGg7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIG1faG91ciA9
IGhvdXI7CisgICAgbV9taW51dGUgPSBtaW51dGU7CisgICAgbV9zZWNvbmQgPSBzZWNvbmQ7Cisg
ICAgbV9taWxsaXNlY29uZCA9IG1pbGxpc2Vjb25kOworICAgIGVuZCA9IGluZGV4OworICAgIG1f
dHlwZSA9IFRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGF0ZUNvbXBvbmVudHM6
OnBhcnNlRGF0ZVRpbWVMb2NhbChjb25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKQoreworICAgIEFTU0VSVChzcmMpOworICAgIHVu
c2lnbmVkIGluZGV4OworICAgIGlmICghcGFyc2VEYXRlKHNyYywgbGVuZ3RoLCBzdGFydCwgaW5k
ZXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGluZGV4ID49IGxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzcmNbaW5kZXhdICE9ICdUJykKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICsraW5kZXg7CisgICAgaWYgKCFwYXJzZVRpbWUoc3JjLCBsZW5n
dGgsIGluZGV4LCBlbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF3aXRoaW5I
VE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51
dGUsIG1fc2Vjb25kLCBtX21pbGxpc2Vjb25kKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IG1fdHlwZSA9IERhdGVUaW1lTG9jYWw7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGF0
ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCkKK3sKKyAgICBBU1NFUlQoc3JjKTsK
KyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBpZiAoIXBhcnNlRGF0ZShzcmMsIGxlbmd0aCwgc3Rh
cnQsIGluZGV4KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpbmRleCA+PSBsZW5n
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3JjW2luZGV4XSAhPSAnVCcpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICArK2luZGV4OworICAgIGlmICghcGFyc2VUaW1lKHNy
YywgbGVuZ3RoLCBpbmRleCwgaW5kZXgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFwYXJzZVRpbWVab25lKHNyYywgbGVuZ3RoLCBpbmRleCwgZW5kKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBt
X21vbnRoRGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3R5cGUgPSBEYXRlVGltZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBkb3VibGUgcG9zaXRpdmVGbW9kKGRvdWJsZSB2YWx1
ZSwgZG91YmxlIGRpdmlkZXIpCit7CisgICAgZG91YmxlIHJlbWFpbmRlciA9IGZtb2QodmFsdWUs
IGRpdmlkZXIpOworICAgIHJldHVybiByZW1haW5kZXIgPCAwID8gcmVtYWluZGVyICsgZGl2aWRl
ciA6IHJlbWFpbmRlcjsKK30KKwordm9pZCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRz
U2luY2VNaWRuaWdodEludGVybmFsKGRvdWJsZSBtc0luRGF5KQoreworICAgIEFTU0VSVChtc0lu
RGF5ID49IDAgJiYgbXNJbkRheSA8IG1zUGVyRGF5KTsKKyAgICBtX21pbGxpc2Vjb25kID0gc3Rh
dGljX2Nhc3Q8aW50PihmbW9kKG1zSW5EYXksIG1zUGVyU2Vjb25kKSk7CisgICAgZG91YmxlIHZh
bHVlID0gZmxvb3IobXNJbkRheSAvIG1zUGVyU2Vjb25kKTsKKyAgICBtX3NlY29uZCA9IHN0YXRp
Y19jYXN0PGludD4oZm1vZCh2YWx1ZSwgc2Vjb25kc1Blck1pbnV0ZSkpOworICAgIHZhbHVlID0g
Zmxvb3IodmFsdWUgLyBzZWNvbmRzUGVyTWludXRlKTsKKyAgICBtX21pbnV0ZSA9IHN0YXRpY19j
YXN0PGludD4oZm1vZCh2YWx1ZSwgbWludXRlc1BlckhvdXIpKTsKKyAgICBtX2hvdXIgPSBzdGF0
aWNfY2FzdDxpbnQ+KHZhbHVlIC8gbWludXRlc1BlckhvdXIpOworfQorCitib29sIERhdGVDb21w
b25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKGRvdWJsZSBt
cykKK3sKKyAgICBtX3llYXIgPSBtc1RvWWVhcihtcyk7CisgICAgaW50IHllYXJEYXkgPSBkYXlJ
blllYXIobXMsIG1feWVhcik7CisgICAgbV9tb250aCA9IG1vbnRoRnJvbURheUluWWVhcih5ZWFy
RGF5LCBpc0xlYXBZZWFyKG1feWVhcikpOworICAgIG1fbW9udGhEYXkgPSBkYXlJbk1vbnRoRnJv
bURheUluWWVhcih5ZWFyRGF5LCBpc0xlYXBZZWFyKG1feWVhcikpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
RGF0ZShkb3VibGUgbXMpCit7CisgICAgbV90eXBlID0gSW52YWxpZDsKKyAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUobXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFzZXRNaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKHJvdW5kKG1zKSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwg
bV9tb250aERheSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3R5cGUgPSBEYXRlOwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUoZG91YmxlIG1zKQoreworICAgIG1fdHlwZSA9IEludmFs
aWQ7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG1zID0gcm91bmQobXMpOworICAgIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHRJbnRl
cm5hbChwb3NpdGl2ZUZtb2QobXMsIG1zUGVyRGF5KSk7CisgICAgaWYgKCFzZXRNaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKG1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5
LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX3R5cGUgPSBEYXRlVGltZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lTG9jYWwoZG91YmxlIG1zKQoreworICAgIC8vIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9m
IERhdGVUaW1lTG9jYWwgaXMgdGhlIHNhbWUgYXMgRGF0ZVRpbWUgZXhjZXB0IG1fdHlwZS4KKyAg
ICBpZiAoIXNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShtcykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBtX3R5cGUgPSBEYXRlVGltZUxvY2FsOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2No
Rm9yTW9udGgoZG91YmxlIG1zKQoreworICAgIG1fdHlwZSA9IEludmFsaWQ7CisgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghc2V0TWls
bGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVJbnRlcm5hbChyb3VuZChtcykpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9u
dGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV90eXBlID0gTW9udGg7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNl
TWlkbmlnaHQoZG91YmxlIG1zKQoreworICAgIG1fdHlwZSA9IEludmFsaWQ7CisgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKG1zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHNldE1pbGxpc2Vj
b25kc1NpbmNlTWlkbmlnaHRJbnRlcm5hbChwb3NpdGl2ZUZtb2Qocm91bmQobXMpLCBtc1BlckRh
eSkpOworICAgIG1fdHlwZSA9IFRpbWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGF0
ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNlRXBvY2goZG91YmxlIG1vbnRocykKK3sKKyAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUobW9udGhzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1v
bnRocyA9IHJvdW5kKG1vbnRocyk7CisgICAgZG91YmxlIGRvdWJsZU1vbnRoID0gcG9zaXRpdmVG
bW9kKG1vbnRocywgMTIpOworICAgIGRvdWJsZSBkb3VibGVZZWFyID0gMTk3MCArIChtb250aHMg
LSBkb3VibGVNb250aCkgLyAxMjsKKyAgICBpZiAoZG91YmxlWWVhciA8IG1pbmltdW1ZZWFyKCkg
fHwgbWF4aW11bVllYXIoKSA8IGRvdWJsZVllYXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpbnQgeWVhciA9IHN0YXRpY19jYXN0PGludD4oZG91YmxlWWVhcik7CisgICAgaW50IG1vbnRo
ID0gc3RhdGljX2Nhc3Q8aW50Pihkb3VibGVNb250aCk7CisgICAgaWYgKCF3aXRoaW5IVE1MRGF0
ZUxpbWl0cyh5ZWFyLCBtb250aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3llYXIg
PSB5ZWFyOworICAgIG1fbW9udGggPSBtb250aDsKKyAgICBtX3R5cGUgPSBNb250aDsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworLy8gT2Zmc2V0IGZyb20gSmFudWFyeSAxc3QgdG8gTW9uZGF5IG9m
IHRoZSBJU08gODYwMSdzIGZpcnN0IHdlZWsuCisvLyAgIGV4LiBJZiBKYW51YXJ5IDFzdCBpcyBG
cmlkYXksIHN1Y2ggTW9uZGF5IGlzIDMgZGF5cyBsYXRlci4gUmV0dXJucyAzLgorc3RhdGljIGlu
dCBvZmZzZXRUbzFzdFdlZWtTdGFydChpbnQgeWVhcikKK3sKKyAgICBpbnQgb2Zmc2V0VG8xc3RX
ZWVrU3RhcnQgPSAxIC0gZGF5T2ZXZWVrKHllYXIsIDAsIDEpOworICAgIGlmIChvZmZzZXRUbzFz
dFdlZWtTdGFydCA8PSAtNCkKKyAgICAgICAgb2Zmc2V0VG8xc3RXZWVrU3RhcnQgKz0gNzsKKyAg
ICByZXR1cm4gb2Zmc2V0VG8xc3RXZWVrU3RhcnQ7Cit9CisKK2Jvb2wgRGF0ZUNvbXBvbmVudHM6
OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JXZWVrKGRvdWJsZSBtcykKK3sKKyAgICBtX3R5
cGUgPSBJbnZhbGlkOworICAgIGlmICghc3RkOjppc2Zpbml0ZShtcykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBtcyA9IHJvdW5kKG1zKTsKKworICAgIG1feWVhciA9IG1zVG9ZZWFyKG1z
KTsKKyAgICBpZiAobV95ZWFyIDwgbWluaW11bVllYXIoKSB8fCBtX3llYXIgPiBtYXhpbXVtWWVh
cigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgeWVhckRheSA9IGRheUluWWVh
cihtcywgbV95ZWFyKTsKKyAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0VG8xc3RXZWVrU3RhcnQobV95
ZWFyKTsKKyAgICBpZiAoeWVhckRheSA8IG9mZnNldCkgeworICAgICAgICAvLyBUaGUgZGF5IGJl
bG9uZ3MgdG8gdGhlIGxhc3Qgd2VlayBvZiB0aGUgcHJldmlvdXMgeWVhci4KKyAgICAgICAgbV95
ZWFyLS07CisgICAgICAgIGlmIChtX3llYXIgPD0gbWluaW11bVllYXIoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgbV93ZWVrID0gbWF4V2Vla051bWJlckluWWVhcigpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIG1fd2VlayA9ICgoeWVhckRheSAtIG9mZnNldCkgLyA3KSAr
IDE7CisgICAgICAgIGlmIChtX3dlZWsgPiBtYXhXZWVrTnVtYmVySW5ZZWFyKCkpIHsKKyAgICAg
ICAgICAgIG1feWVhcisrOworICAgICAgICAgICAgbV93ZWVrID0gMTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobV95ZWFyID4gbWF4aW11bVllYXIoKSB8fCAobV95ZWFyID09IG1heGltdW1ZZWFy
KCkgJiYgbV93ZWVrID4gbWF4aW11bVdlZWtJbk1heGltdW1ZZWFyKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgbV90eXBlID0gV2VlazsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworZG91YmxlIERhdGVDb21wb25lbnRzOjptaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGlt
ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBUaW1lIHx8IG1fdHlwZSA9PSBEYXRl
VGltZSB8fCBtX3R5cGUgPT0gRGF0ZVRpbWVMb2NhbCk7CisgICAgcmV0dXJuICgobV9ob3VyICog
bWludXRlc1BlckhvdXIgKyBtX21pbnV0ZSkgKiBzZWNvbmRzUGVyTWludXRlICsgbV9zZWNvbmQp
ICogbXNQZXJTZWNvbmQgKyBtX21pbGxpc2Vjb25kOworfQorCitkb3VibGUgRGF0ZUNvbXBvbmVu
dHM6Om1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdAoreworICAgIHN3aXRjaCAobV90eXBl
KSB7CisgICAgY2FzZSBEYXRlOgorICAgICAgICByZXR1cm4gZGF0ZVRvRGF5c0Zyb20xOTcwKG1f
eWVhciwgbV9tb250aCwgbV9tb250aERheSkgKiBtc1BlckRheTsKKyAgICBjYXNlIERhdGVUaW1l
OgorICAgIGNhc2UgRGF0ZVRpbWVMb2NhbDoKKyAgICAgICAgcmV0dXJuIGRhdGVUb0RheXNGcm9t
MTk3MChtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXkpICogbXNQZXJEYXkgKyBtaWxsaXNlY29u
ZHNTaW5jZUVwb2NoRm9yVGltZSgpOworICAgIGNhc2UgTW9udGg6CisgICAgICAgIHJldHVybiBk
YXRlVG9EYXlzRnJvbTE5NzAobV95ZWFyLCBtX21vbnRoLCAxKSAqIG1zUGVyRGF5OworICAgIGNh
c2UgVGltZToKKyAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JUaW1lKCk7
CisgICAgY2FzZSBXZWVrOgorICAgICAgICByZXR1cm4gKGRhdGVUb0RheXNGcm9tMTk3MChtX3ll
YXIsIDAsIDEpICsgb2Zmc2V0VG8xc3RXZWVrU3RhcnQobV95ZWFyKSArIChtX3dlZWsgLSAxKSAq
IDcpICogbXNQZXJEYXk7CisgICAgY2FzZSBJbnZhbGlkOgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGludmFsaWRNaWxsaXNlY29u
ZHMoKTsKK30KKworZG91YmxlIERhdGVDb21wb25lbnRzOjptb250aHNTaW5jZUVwb2NoKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IE1vbnRoKTsKKyAgICByZXR1cm4gKG1feWVhciAt
IDE5NzApICogMTIgKyBtX21vbnRoOworfQorCitTdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3Ry
aW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9ybWF0KSBjb25zdAoreworICAgIEFTU0VSVChtX3R5
cGUgPT0gRGF0ZVRpbWUgfHwgbV90eXBlID09IERhdGVUaW1lTG9jYWwgfHwgbV90eXBlID09IFRp
bWUpOworICAgIFNlY29uZEZvcm1hdCBlZmZlY3RpdmVGb3JtYXQgPSBmb3JtYXQ7CisgICAgaWYg
KG1fbWlsbGlzZWNvbmQpCisgICAgICAgIGVmZmVjdGl2ZUZvcm1hdCA9IE1pbGxpc2Vjb25kOwor
ICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBOb25lICYmIG1fc2Vjb25kKQorICAgICAgICBlZmZlY3Rp
dmVGb3JtYXQgPSBTZWNvbmQ7CisKKyAgICBzd2l0Y2ggKGVmZmVjdGl2ZUZvcm1hdCkgeworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2lmIEFTU0VSVF9ESVNB
QkxFRAorICAgICAgICBGQUxMVEhST1VHSDsgLy8gVG8gTm9uZS4KKyNlbmRpZgorICAgIGNhc2Ug
Tm9uZToKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlMDJkOiUwMmQiLCBtX2hvdXIs
IG1fbWludXRlKTsKKyAgICBjYXNlIFNlY29uZDoKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCIlMDJkOiUwMmQ6JTAyZCIsIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kKTsKKyAgICBj
YXNlIE1pbGxpc2Vjb25kOgorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwMmQ6JTAy
ZDolMDJkLiUwM2QiLCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCk7
CisgICAgfQorfQorCitTdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nKFNlY29uZEZvcm1h
dCBmb3JtYXQpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIERhdGU6
CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJTA0ZC0lMDJkLSUwMmQiLCBtX3llYXIs
IG1fbW9udGggKyAxLCBtX21vbnRoRGF5KTsKKyAgICBjYXNlIERhdGVUaW1lOgorICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwNGQtJTAyZC0lMDJkVCIsIG1feWVhciwgbV9tb250aCAr
IDEsIG1fbW9udGhEYXkpCisgICAgICAgICAgICArIHRvU3RyaW5nRm9yVGltZShmb3JtYXQpICsg
U3RyaW5nKCJaIik7CisgICAgY2FzZSBEYXRlVGltZUxvY2FsOgorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUwNGQtJTAyZC0lMDJkVCIsIG1feWVhciwgbV9tb250aCArIDEsIG1fbW9u
dGhEYXkpCisgICAgICAgICAgICArIHRvU3RyaW5nRm9yVGltZShmb3JtYXQpOworICAgIGNhc2Ug
TW9udGg6CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJTA0ZC0lMDJkIiwgbV95ZWFy
LCBtX21vbnRoICsgMSk7CisgICAgY2FzZSBUaW1lOgorICAgICAgICByZXR1cm4gdG9TdHJpbmdG
b3JUaW1lKGZvcm1hdCk7CisgICAgY2FzZSBXZWVrOgorICAgICAgICByZXR1cm4gU3RyaW5nOjpm
b3JtYXQoIiUwNGQtVyUwMmQiLCBtX3llYXIsIG1fd2Vlayk7CisgICAgY2FzZSBJbnZhbGlkOgor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIFN0cmluZygiKEludmFsaWQgRGF0ZUNvbXBvbmVudHMpIik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0ZUNvbXBvbmVudHMuaCBiL1Nv
dXJjZS9XVEYvd3RmL0RhdGVDb21wb25lbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAyNmM0NzllOTM3ZDg3
ZDYzYzAxOWNkYWIyMzI2MzE1NTI5MGQ1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0RhdGVDb21wb25lbnRzLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGxpbWl0cz4KKyNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBBIERhdGVDb21wb25lbnRzIGlu
c3RhbmNlIHJlcHJlc2VudHMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZGF0ZSBhbmQgdGltZSBjb21i
aW5hdGlvbnM6CisvLyAqIE1vbnRoIHR5cGU6IHllYXItbW9udGgKKy8vICogRGF0ZSB0eXBlOiB5
ZWFyLW1vbnRoLWRheQorLy8gKiBXZWVrIHR5cGU6IHllYXItd2VlaworLy8gKiBUaW1lIHR5cGU6
IGhvdXItbWludXRlLXNlY29uZC1taWxsaXNlY29uZAorLy8gKiBEYXRlVGltZSBvciBEYXRlVGlt
ZUxvY2FsIHR5cGU6IHllYXItbW9udGgtZGF5IGhvdXItbWludXRlLXNlY29uZC1taWxsaXNlY29u
ZAorY2xhc3MgRGF0ZUNvbXBvbmVudHMgeworcHVibGljOgorICAgIERhdGVDb21wb25lbnRzKCkK
KyAgICAgICAgOiBtX21pbGxpc2Vjb25kKDApCisgICAgICAgICwgbV9zZWNvbmQoMCkKKyAgICAg
ICAgLCBtX21pbnV0ZSgwKQorICAgICAgICAsIG1faG91cigwKQorICAgICAgICAsIG1fbW9udGhE
YXkoMCkKKyAgICAgICAgLCBtX21vbnRoKDApCisgICAgICAgICwgbV95ZWFyKDApCisgICAgICAg
ICwgbV93ZWVrKDApCisgICAgICAgICwgbV90eXBlKEludmFsaWQpCisgICAgeworICAgIH0KKwor
ICAgIGVudW0gVHlwZSB7CisgICAgICAgIEludmFsaWQsCisgICAgICAgIERhdGUsCisgICAgICAg
IERhdGVUaW1lLAorICAgICAgICBEYXRlVGltZUxvY2FsLAorICAgICAgICBNb250aCwKKyAgICAg
ICAgVGltZSwKKyAgICAgICAgV2VlaywKKyAgICB9OworCisgICAgaW50IG1pbGxpc2Vjb25kKCkg
Y29uc3QgeyByZXR1cm4gbV9taWxsaXNlY29uZDsgfQorICAgIGludCBzZWNvbmQoKSBjb25zdCB7
IHJldHVybiBtX3NlY29uZDsgfQorICAgIGludCBtaW51dGUoKSBjb25zdCB7IHJldHVybiBtX21p
bnV0ZTsgfQorICAgIGludCBob3VyKCkgY29uc3QgeyByZXR1cm4gbV9ob3VyOyB9CisgICAgaW50
IG1vbnRoRGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERheTsgfQorICAgIGludCBtb250aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KKyAgICBpbnQgZnVsbFllYXIoKSBjb25zdCB7IHJl
dHVybiBtX3llYXI7IH0KKyAgICBpbnQgd2VlaygpIGNvbnN0IHsgcmV0dXJuIG1fd2VlazsgfQor
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgZW51bSBTZWNv
bmRGb3JtYXQgeworICAgICAgICBOb25lLCAvLyBTdXBwcmVzcyB0aGUgc2Vjb25kIHBhcnQgYW5k
IHRoZSBtaWxsaXNlY29uZCBwYXJ0IGlmIHRoZXkgYXJlIDAuCisgICAgICAgIFNlY29uZCwgLy8g
QWx3YXlzIHNob3cgdGhlIHNlY29uZCBwYXJ0LCBhbmQgc3VwcHJlc3MgdGhlIG1pbGxpc2Vjb25k
IHBhcnQgaWYgaXQgaXMgMC4KKyAgICAgICAgTWlsbGlzZWNvbmQgLy8gQWx3YXlzIHNob3cgdGhl
IHNlY29uZCBwYXJ0IGFuZCB0aGUgbWlsbGlzZWNvbmQgcGFydC4KKyAgICB9OworCisgICAgLy8g
UmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBmb3IgdGhpcyBpbnN0YW5jZS4KKyAg
ICAvLyBUaGUgZm9ybWF0IGFyZ3VtZW50IGlzIHZhbGlkIGZvciBEYXRlVGltZSwgRGF0ZVRpbWVM
b2NhbCwgYW5kIFRpbWUgdHlwZXMuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0
cmluZyhTZWNvbmRGb3JtYXQgPSBOb25lKSBjb25zdDsKKworICAgIC8vIHBhcnNlKigpIGFuZCBz
ZXRNaWxsaXNlY29uZHNTaW5jZSooKSBmdW5jdGlvbnMgYXJlIGluaXRpYWxpemVycyBmb3IgYW4K
KyAgICAvLyBEYXRlQ29tcG9uZW50cyBpbnN0YW5jZS4gSWYgdGhlc2UgZnVuY3Rpb25zIHJldHVy
biBmYWxzZSwgdGhlIGluc3RhbmNlCisgICAgLy8gbWlnaHQgYmUgaW52YWxpZC4KKworICAgIC8v
IFRoZSBmb2xsb3dpbmcgc2l4IGZ1bmN0aW9ucyBwYXJzZSB0aGUgaW5wdXQgJ3NyYycgd2hvc2Ug
bGVuZ3RoIGlzCisgICAgLy8gJ2xlbmd0aCcsIGFuZCB1cGRhdGVzIHNvbWUgZmllbGRzIG9mIHRo
aXMgaW5zdGFuY2UuIFRoZSBwYXJzaW5nIHN0YXJ0cyBhdAorICAgIC8vIHNyY1tzdGFydF0gYW5k
IGV4YW1pbmVzIGNoYXJhY3RlcnMgYmVmb3JlIHNyY1tsZW5ndGhdLgorICAgIC8vICdzcmMnIG11
c3QgYmUgbm9uLW51bGwuIFRoZSAnc3JjJyBzdHJpbmcgZG9lc24ndCBuZWVkIHRvIGJlCisgICAg
Ly8gbnVsbC10ZXJtaW5hdGVkLgorICAgIC8vIFRoZSBmdW5jdGlvbnMgcmV0dXJuIHRydWUgaWYg
dGhlIHBhcnNpbmcgc3VjY2VlZHMsIGFuZCBzZXQgJ2VuZCcgdG8gdGhlCisgICAgLy8gbmV4dCBp
bmRleCBhZnRlciB0aGUgbGFzdCBjb25zdW1lZC4gRXh0cmEgbGVhZGluZyBjaGFyYWN0ZXJzIGNh
dXNlIHBhcnNlCisgICAgLy8gZmFpbHVyZXMsIGFuZCB0aGUgdHJhaWxpbmcgZXh0cmEgY2hhcmFj
dGVycyBkb24ndCBjYXVzZSBwYXJzZSBmYWlsdXJlcy4KKworICAgIC8vIFNldHMgeWVhciBhbmQg
bW9udGguCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcGFyc2VNb250aChjb25zdCBVQ2hh
ciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsK
KyAgICAvLyBTZXRzIHllYXIsIG1vbnRoIGFuZCBtb250aERheS4KKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgYm9vbCBwYXJzZURhdGUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CisgICAgLy8gU2V0cyB5ZWFyIGFuZCB3ZWVr
LgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBhcnNlV2Vlayhjb25zdCBVQ2hhciogc3Jj
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKKyAgICAv
LyBTZXRzIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWxsaXNlY29uZC4KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwYXJzZVRpbWUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7CisgICAgLy8gU2V0cyB5ZWFyLCBt
b250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWxsaXNlY29uZC4KKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwYXJzZURhdGVUaW1lTG9jYWwoY29uc3QgVUNoYXIq
IHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7Cisg
ICAgLy8gU2V0cyB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFu
ZCBtaWxsaXNlY29uZCwgYW5kIGFkanVzdHMgdGltZXpvbmUuCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgcGFyc2VEYXRlVGltZShjb25zdCBVQ2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcg
c2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvciooKSBmdW5jdGlvbnMgdGFrZQorICAgIC8vIHRo
ZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwIFVU
QyBhcworICAgIC8vIHRoZSBhcmd1bWVudCwgYW5kIHVwZGF0ZSBhbGwgZmllbGRzIGZvciB0aGUg
Y29ycmVzcG9uZGluZworICAgIC8vIERhdGVDb21wb25lbnRzIHR5cGUuIFRoZSBmdW5jdGlvbnMg
cmV0dXJuIHRydWUgaWYgaXQgc3VjY2VlZHMsIGFuZAorICAgIC8vIGZhbHNlIGlmIHRoZXkgZmFp
bC4KKworICAgIC8vIEZvciBEYXRlIHR5cGUuIFVwZGF0ZXMgbV95ZWFyLCBtX21vbnRoIGFuZCBt
X21vbnRoRGF5LgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHNldE1pbGxpc2Vjb25kc1Np
bmNlRXBvY2hGb3JEYXRlKGRvdWJsZSk7CisgICAgLy8gRm9yIERhdGVUaW1lIHR5cGUuIFVwZGF0
ZXMgbV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29u
ZCBhbmQgbV9taWxsaXNlY29uZC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUoZG91YmxlKTsKKyAgICAvLyBGb3IgRGF0ZVRp
bWVMb2NhbCB0eXBlLiBVcGRhdGVzIG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgbV9ob3Vy
LCBtX21pbnV0ZSwgbV9zZWNvbmQgYW5kIG1fbWlsbGlzZWNvbmQuCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91
YmxlKTsKKyAgICAvLyBGb3IgTW9udGggdHlwZS4gVXBkYXRlcyBtX3llYXIgYW5kIG1fbW9udGgu
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZv
ck1vbnRoKGRvdWJsZSk7CisgICAgLy8gRm9yIFdlZWsgdHlwZS4gVXBkYXRlcyBtX3llYXIgYW5k
IG1fd2Vlay4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5j
ZUVwb2NoRm9yV2Vlayhkb3VibGUpOworCisgICAgLy8gRm9yIFRpbWUgdHlwZS4gVXBkYXRlcyBt
X2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCBhbmQgbV9taWxsaXNlY29uZC4KKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KGRvdWJsZSk7CisK
KyAgICAvLyBBbm90aGVyIGluaXRpYWxpemVyIGZvciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVh
ciBhbmQgbV9tb250aC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRNb250aHNTaW5j
ZUVwb2NoKGRvdWJsZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNv
bmRzIGZyb20gMTk3MC0wMS0wMSAwMDowMDowMCBVVEMuCisgICAgLy8gRm9yIGEgRGF0ZUNvbXBv
bmVudHMgaW5pdGlhbGl6ZWQgd2l0aCBwYXJzZURhdGVUaW1lTG9jYWwoKSwKKyAgICAvLyBtaWxs
aXNlY29uZHNTaW5jZUVwb2NoKCkgcmV0dXJucyBhIHZhbHVlIGZvciBVVEMgdGltZXpvbmUuCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5jZUVwb2NoKCkgY29u
c3Q7CisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vbnRocyBmcm9tIDE5NzAtMDEuCisg
ICAgLy8gRG8gbm90IGNhbGwgdGhpcyBmb3IgdHlwZXMgb3RoZXIgdGhhbiBNb250aC4KKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIG1vbnRoc1NpbmNlRXBvY2goKSBjb25zdDsKKyAgICBz
dGF0aWMgaW5saW5lIGRvdWJsZSBpbnZhbGlkTWlsbGlzZWNvbmRzKCkgeyByZXR1cm4gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsgfQorCisgICAgLy8gTWluaW11bSBh
bmQgbWF4bWltdW0gbGltaXRzIGZvciBzZXRNaWxsaXNlY29uZHNTaW5jZSooKSwKKyAgICAvLyBz
ZXRNb250aHNTaW5jZUVwb2NoKCksIG1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKSwgYW5kIG1vbnRo
c1NpbmNlRXBvY2goKS4KKyAgICBzdGF0aWMgaW5saW5lIGRvdWJsZSBtaW5pbXVtRGF0ZSgpIHsg
cmV0dXJuIC02MjEzNTU5NjgwMDAwMC4wOyB9IC8vIDAwMDEtMDEtMDFUMDA6MDBaCisgICAgc3Rh
dGljIGlubGluZSBkb3VibGUgbWluaW11bURhdGVUaW1lKCkgeyByZXR1cm4gLTYyMTM1NTk2ODAw
MDAwLjA7IH0gLy8gZGl0dG8uCisgICAgc3RhdGljIGlubGluZSBkb3VibGUgbWluaW11bU1vbnRo
KCkgeyByZXR1cm4gKDEgLSAxOTcwKSAqIDEyLjAgKyAxIC0gMTsgfSAvLyAwMDAxLTAxCisgICAg
c3RhdGljIGlubGluZSBkb3VibGUgbWluaW11bVRpbWUoKSB7IHJldHVybiAwOyB9IC8vIDAwOjAw
OjAwLjAwMAorICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG1pbmltdW1XZWVrKCkgeyByZXR1cm4g
LTYyMTM1NTk2ODAwMDAwLjA7IH0gLy8gMDAwMS0wMS0wMSwgdGhlIGZpcnN0IE1vbmRheSBvZiAw
MDAxLgorICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG1heGltdW1EYXRlKCkgeyByZXR1cm4gODY0
MDAwMDAwMDAwMDAwMC4wOyB9IC8vIDI3NTc2MC0wOS0xM1QwMDowMFoKKyAgICBzdGF0aWMgaW5s
aW5lIGRvdWJsZSBtYXhpbXVtRGF0ZVRpbWUoKSB7IHJldHVybiA4NjQwMDAwMDAwMDAwMDAwLjA7
IH0gLy8gZGl0dG8uCisgICAgc3RhdGljIGlubGluZSBkb3VibGUgbWF4aW11bU1vbnRoKCkgeyBy
ZXR1cm4gKDI3NTc2MCAtIDE5NzApICogMTIuMCArIDkgLSAxOyB9IC8vIDI3NTc2MC0wOQorICAg
IHN0YXRpYyBpbmxpbmUgZG91YmxlIG1heGltdW1UaW1lKCkgeyByZXR1cm4gODYzOTk5OTk7IH0g
Ly8gMjM6NTk6NTkuOTk5CisgICAgc3RhdGljIGlubGluZSBkb3VibGUgbWF4aW11bVdlZWsoKSB7
IHJldHVybiA4NjM5OTk5NTY4MDAwMDAwLjA7IH0gLy8gMjc1NzYwLTA5LTA4LCB0aGUgTW9uZGF5
IG9mIHRoZSB3ZWVrIGluY2x1ZGluZyAyNzU3NjAtMDktMTMuCisKKyAgICAvLyBIVE1MNSB1c2Vz
IElTTy04NjAxIGZvcm1hdCB3aXRoIHllYXIgPj0gMS4gR3JlZ29yaWFuIGNhbGVuZGFyIHN0YXJ0
ZWQgaW4KKyAgICAvLyAxNTgyLiBIb3dldmVyLCB3ZSBuZWVkIHRvIHN1cHBvcnQgMDAwMS0wMS0w
MSBpbiBHcmVnb3JpYW4gY2FsZW5kYXIgcnVsZS4KKyAgICBzdGF0aWMgaW5saW5lIGludCBtaW5p
bXVtWWVhcigpIHsgcmV0dXJuIDE7IH0KKyAgICAvLyBEYXRlIGluIEVDTUFTY3JpcHQgY2FuJ3Qg
cmVwcmVzZW50IGRhdGVzIGxhdGVyIHRoYW4gMjc1NzYwLTA5LTEzVDAwOjAwWi4KKyAgICAvLyBT
bywgd2UgaGF2ZSB0aGUgc2FtZSB1cHBlciBsaW1pdCBpbiBIVE1MNSBkYXRlL3RpbWUgdHlwZXMu
CisgICAgc3RhdGljIGlubGluZSBpbnQgbWF4aW11bVllYXIoKSB7IHJldHVybiAyNzU3NjA7IH0K
KyAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1XZWVrTnVtYmVyOworICAgIHN0YXRpYyBjb25z
dCBpbnQgbWF4aW11bVdlZWtOdW1iZXI7CisKK3ByaXZhdGU6CisgICAgLy8gUmV0dXJucyB0aGUg
bWF4aW11bSB3ZWVrIG51bWJlciBpbiB0aGlzIERhdGVDb21wb25lbnRzJ3MgeWVhci4KKyAgICAv
LyBUaGUgcmVzdWx0IGlzIGVpdGhlciBvZiA1MiBhbmQgNTMuCisgICAgaW50IG1heFdlZWtOdW1i
ZXJJblllYXIoKSBjb25zdDsKKyAgICBib29sIHBhcnNlWWVhcihjb25zdCBVQ2hhciogc3JjLCB1
bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKKyAgICBib29s
IGFkZERheShpbnQpOworICAgIGJvb2wgYWRkTWludXRlKGludCk7CisgICAgYm9vbCBwYXJzZVRp
bWVab25lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkJiBlbmQpOworICAgIC8vIEhlbHBlciBmb3IgbWlsbGlzZWNvbmRzU2luY2VFcG9j
aCgpLgorICAgIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpIGNvbnN0Owor
ICAgIC8vIEhlbHBlcnMgZm9yIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3IqKCkuCisgICAg
Ym9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKGRvdWJsZSk7Cisg
ICAgdm9pZCBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0SW50ZXJuYWwoZG91YmxlKTsKKyAg
ICAvLyBIZWxwZXIgZm9yIHRvU3RyaW5nKCkuCisgICAgU3RyaW5nIHRvU3RyaW5nRm9yVGltZShT
ZWNvbmRGb3JtYXQpIGNvbnN0OworCisgICAgLy8gbV93ZWVrRGF5IHZhbHVlcworICAgIGVudW0g
eworICAgICAgICBTdW5kYXkgPSAwLAorICAgICAgICBNb25kYXksCisgICAgICAgIFR1ZXNkYXks
CisgICAgICAgIFdlZG5lc2RheSwKKyAgICAgICAgVGh1cnNkYXksCisgICAgICAgIEZyaWRheSwK
KyAgICAgICAgU2F0dXJkYXksCisgICAgfTsKKworICAgIGludCBtX21pbGxpc2Vjb25kOyAvLyAw
IC0gOTk5CisgICAgaW50IG1fc2Vjb25kOworICAgIGludCBtX21pbnV0ZTsKKyAgICBpbnQgbV9o
b3VyOworICAgIGludCBtX21vbnRoRGF5OyAvLyAxIC0gMzEKKyAgICBpbnQgbV9tb250aDsgLy8g
MDpKYW51YXJ5IC0gMTE6RGVjZW1iZXIKKyAgICBpbnQgbV95ZWFyOyAvLyAgMTU4MiAtCisgICAg
aW50IG1fd2VlazsgLy8gMSAtIDUzCisKKyAgICBUeXBlIG1fdHlwZTsKK307CisKKworfSAvLyBu
YW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6RGF0ZUNvbXBvbmVudHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzQ4MmZmNGVjOTU4NTE4ZWY4NTRkNzczN2E0MWI4YTE4ZGZkYmNmYS4uMDgzYzJmZGUyOWY0MDAy
NDJhZjEzYTIxZjk2NDQzZmU2ZTg3N2MwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDE3LTExLTMwICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAg
ICAgICBNb3ZlIERhdGVDb21wb25lbnRzIGludG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyMTEKKworICAgICAgICBSZXZpZXdlZCBieSBN
eWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgbm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgIE1vdmVkIERhdGVDb21wb25lbnRzIGZyb20gcGxhdGZvcm0gaW50
byBXVEYuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDogUmVtb3ZlZCBEYXRlQ29tcG9uZW50cwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBEYXRl
Q29tcG9uZW50cworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL0RhdGVUaW1lSW5wdXRU
eXBlLmg6IEZpeGVkIGEgY2FsbCB0byB0aGUgd3JvbmcgcGFyZW50IGNvbnN0cnVjdG9yCisgICAg
ICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUu
Y3BwOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9QbGF0Zm9ybUxvY2FsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxv
Y2FsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
CiAyMDE3LTExLTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBNb3ZlIEpTT05WYWx1ZXMgdG8gV1RGIGFuZCBjb252ZXJ0IHVzZXMgb2YgSW5z
cGVjdG9yVmFsdWVzLmggdG8gSlNPTlZhbHVlcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDFiZGQ3ODJj
YTE5ZmQxNDVhZWRiODI2OGEzY2VmMjRlYWVhMTI5ODUuLjRkYzY0YzY3ZTY0MjhhMWU1OGIyNjky
Y2Y2YmY3NzBlMWEyNTdkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMzg1LDcgKzEzODUsNiBAQCBw
bGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcAogcGxhdGZv
cm0vQ29udGV4dE1lbnVJdGVtLmNwcAogcGxhdGZvcm0vQ3Vyc29yLmNwcAotcGxhdGZvcm0vRGF0
ZUNvbXBvbmVudHMuY3BwCiBwbGF0Zm9ybS9EZWNpbWFsLmNwcAogcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwCiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM2NmFhODg2OWY2ZTJjYzMwMzk5NzYw
MWM2MDhhZjI4NjgyMWFlNy4uNjcyYzVhMThlZmM2ZWM0ZjBjNGRmOWUxNzg1YzU0ZjhhODk2Mzc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjgzMyw3ICsyODMzLDYgQEAKIAkJQTU0QTBDNkMxREI4MzFGOTAwMTdBOTBCIC8q
IFdvcmtlckluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTRBMEM2QTFEQjgzMUYyMDAxN0E5MEIgLyogV29ya2VySW5zcGVjdG9y
UHJveHkuaCAqLzsgfTsKIAkJQTU1NEI1RjMxRTM4MzkzQTAwMUQ0RTAzIC8qIFBlcmZvcm1hbmNl
VXNlclRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU1NEI1RjExRTM4MzkzNjAwMUQ0RTAzIC8qIFBlcmZvcm1hbmNlVXNlclRpbWluZy5oICov
OyB9OwogCQlBNTU2MzlEMTFDNkYwOUUzMDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1NjM5RDAx
QzZFRkQ1OTAwODA2RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCAqLzsgfTsKLQkJQTU3MzJC
MEIxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyog
RGF0ZUNvbXBvbmVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBNTc4RjQzNTFERTAwRUVCMDAzREZDNkEgLyogUHJvbWlzZVJlamVjdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4
RjQzMzFERTAwRUQ2MDAzREZDNkEgLyogUHJvbWlzZVJlamVjdGlvbkV2ZW50LmggKi87IH07CiAJ
CUE1NzhGNDNDMURFMDE0MjMwMDNERkM2QSAvKiBKU1Byb21pc2VSZWplY3Rpb25FdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0ExREUw
MTNGQjAwM0RGQzZBIC8qIEpTUHJvbWlzZVJlamVjdGlvbkV2ZW50LmggKi87IH07CiAJCUE1NzhG
NDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQzRTFERTBCNjJCMDAz
REZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDcxMiw4ICsxMDcxMSw2IEBACiAJCUE1NTRC
NUYxMUUzODM5MzYwMDFENEUwMyAvKiBQZXJmb3JtYW5jZVVzZXJUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyZm9ybWFuY2VVc2VyVGltaW5nLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NTYzOUNGMUM2RUZENTkwMDgwNkQ4RSAvKiBXb3JrZXJD
b25zb2xlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdv
cmtlckNvbnNvbGVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTU2
MzlEMDFDNkVGRDU5MDA4MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJDb25zb2xlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1NzMyQjA4MTM2QTE2MUQwMDVDOEQ3QyAvKiBEYXRlQ29tcG9u
ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRlQ29tcG9u
ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1NzMyQjA5MTM2QTE2MUQw
MDVDOEQ3QyAvKiBEYXRlQ29tcG9uZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRlQ29tcG9uZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTc4
RjQzMjFERTAwRUQ2MDAzREZDNkEgLyogUHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb21pc2VSZWplY3Rpb25FdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NzhGNDMzMURFMDBFRDYwMDNERkM2QSAv
KiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE1NzhGNDM0MURFMDBFRDYwMDNERkM2QSAvKiBQcm9taXNlUmVqZWN0aW9uRXZlbnQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFByb21pc2VSZWplY3Rpb25FdmVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQ1NSw4ICsyMzQ1Miw2IEBACiAJCQkJNDZDNjk2Qzkx
RTcyMDVFNDAwNTk3OTM3IC8qIENQVU1vbml0b3IuaCAqLywKIAkJCQlFMTFBRjE1MDExQjlBMUEz
MDA4MDUxMDMgLyogQ3Vyc29yLmNwcCAqLywKIAkJCQlGNTg3ODY4NDAyREUzQjg2MDFFQTQxMjIg
LyogQ3Vyc29yLmggKi8sCi0JCQkJQTU3MzJCMDgxMzZBMTYxRDAwNUM4RDdDIC8qIERhdGVDb21w
b25lbnRzLmNwcCAqLywKLQkJCQlBNTczMkIwOTEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBv
bmVudHMuaCAqLywKIAkJCQkzN0M3MzhGMTFFREJERTg3MDAzRjJCMEIgLyogRGF0ZVRpbWVDaG9v
c2VyLmggKi8sCiAJCQkJMzdDNzM4RjIxRURCREU4NzAwM0YyQjBCIC8qIERhdGVUaW1lQ2hvb3Nl
ckNsaWVudC5oICovLAogCQkJCTQ1RkVBNUNEMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmNw
cCAqLywKQEAgLTI2NTUzLDcgKzI2NTQ4LDYgQEAKIAkJCQk4MUFDNTk5QTEzMTYzNkU2MDAwOUE3
RTAgLyogRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgz
MUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBNTczMkIwQjEzNkExNjFEMDA1QzhEN0MgLyogRGF0ZUNvbXBvbmVudHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzREI2MTI1MUYxMkQwMDNFRjI2OSAvKiBEYXRlSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M3MzhGMzFFREJERThBMDAzRjJCMEIgLyogRGF0ZVRp
bWVDaG9vc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M3MzhGNDFFREJERThEMDAzRjJCMEIg
LyogRGF0ZVRpbWVDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGUyOTZlZDJiMGJhMjJiYjQwNmIyZWU3OGRiODVjYzIxNjY1NmQ2YmEuLmU3
OGRhZDFjMTFjYjk4MmNhZWM4YTA1ZDc0YzkyMWQxNDUzOTdlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNTMsNyArNTMsNiBAQAogI2luY2x1ZGUgIkN1c3RvbUV2ZW50LmgiCiAjaW5j
bHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNs
dWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZS5oCmluZGV4IDZlMTVmNWQxNjQ5Y2E3MGY3NjQzYzlkNThlOWYzODA1Mjg1YWQ4NDAuLmI0MWU1
ZjMyZGYwYjc1MTA3ZjNmN2NlYzVkM2E3ZWU2NTk1NGNkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtMzMsOCArMzMsOCBAQAogCiAj
aWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCiAKLSNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgogI2luY2x1ZGUgIklucHV0VHlwZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29t
cG9uZW50cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuaAppbmRleCBjODdhYzdiMDhjZjQ1NTg0YTBhZjQzNDliNWRkZGZmZWEz
MWM4YWI4Li5lMWU1NjFhOGE4Yzk2YWFhZjVjNWIwM2E2ZTgwMTc4YmJiN2I5ZWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGF0ZVRpbWVJbnB1dFR5cGUgZmluYWwgOiBwdWJsaWMg
QmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IERhdGVUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZURh
dGVUaW1lSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4cGxpY2l0IERhdGVUaW1lSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCisgICAgICAgIDogQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggNGVjNDk0NjY0M2IwOWI3OGYzN2QzMDUw
YWExZjFlYjY3ZmY4NDU5ZC4uODFiYmRiYmQ5YmMwODc4N2Q1OWJhNjcwMTVkZjc1MjEwZDMzNDA5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlIDxtZW1vcnk+CiAKICNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiRGF0
ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlIDx3dGYvRGF0ZUNvbXBvbmVudHMuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggMTIw
M2VkYWI5MGFhYTJjMzFjMjk5MjZjNzg0YWM5MzVjNDg0ODQyNy4uNDA0OGJmZjNiN2U3NmZmMTRh
MzVkNmVjN2Y0MGQwMzJiZTA3ZGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAt
MzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkNoZWNrYm94SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAi
Q29sb3JJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJET01Gb3JtRGF0YS5oIgotI2luY2x1ZGUgIkRh
dGVDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiRGF0ZUlucHV0VHlwZS5oIgogI2luY2x1ZGUgIkRh
dGVUaW1lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oIgpA
QCAtNzUsNiArNzQsNyBAQAogI2luY2x1ZGUgIldlZWtJbnB1dFR5cGUuaCIKICNpbmNsdWRlIDxs
aW1pdHM+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRGF0ZUNv
bXBvbmVudHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYzczOWE4ZjI0ZmMwMWE1ZTFiY2VhY2YxZmYzOWY1
MDI3Njg1OWIzYi4uNjk1ZWNiYjY4NjVhMmVlY2M3MDVkYjY1NDMzNjFlNWVlNGU1ZTg5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0zNSwyMCArMzUsMTYgQEAKICNpbmNsdWRlICJIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclB0ci5oIgogI2luY2x1
ZGUgIlN0ZXBSYW5nZS5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlQ29tcG9uZW50cy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiRGF0ZUNvbXBv
bmVudHMuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJlZm9yZVRl
eHRJbnNlcnRlZEV2ZW50OwogY2xhc3MgQ2hyb21lOwogY2xhc3MgRE9NRm9ybURhdGE7Ci1jbGFz
cyBEYXRlQ29tcG9uZW50czsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBG
aWxlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3MDc4ODZhMGJiMThlYjE5YTExZWZmYjY5MTMy
NDExOTA4MjY0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw3MjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJEYXRlQ29t
cG9uZW50cy5oIgotCi0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KLSNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLS8vIEhUTUw1IHNwZWNpZmljYXRpb24gZGVmaW5lcyBtaW5pbXVtIHdlZWsgb2YgeWVh
ciBpcyBvbmUuCi1jb25zdCBpbnQgRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1XZWVrTnVtYmVyID0g
MTsKLQotLy8gSFRNTDUgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIG1heGltdW0gd2VlayBvZiB5ZWFy
IGlzIDUzLgotY29uc3QgaW50IERhdGVDb21wb25lbnRzOjptYXhpbXVtV2Vla051bWJlciA9IDUz
OwotCi1zdGF0aWMgY29uc3QgaW50IG1heGltdW1Nb250aEluTWF4aW11bVllYXIgPSA4OyAvLyBU
aGlzIGlzIFNlcHRlbWJlciwgc2luY2UgbW9udGhzIGFyZSAwIGJhc2VkLgotc3RhdGljIGNvbnN0
IGludCBtYXhpbXVtRGF5SW5NYXhpbXVtTW9udGggPSAxMzsKLXN0YXRpYyBjb25zdCBpbnQgbWF4
aW11bVdlZWtJbk1heGltdW1ZZWFyID0gMzc7IC8vIFRoZSB3ZWVrIG9mIDI3NTc2MC0wOS0xMwot
Ci1zdGF0aWMgY29uc3QgaW50IGRheXNJbk1vbnRoWzEyXSA9IHszMSwgMjgsIDMxLCAzMCwgMzEs
IDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfTsKLQotc3RhdGljIGJvb2wgaXNMZWFwWWVhcihp
bnQgeWVhcikKLXsKLSAgICBpZiAoeWVhciAlIDQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoISh5ZWFyICUgNDAwKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKCEoeWVh
ciAlIDEwMCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ly8gJ21vbnRoJyBpcyAwLWJhc2VkLgotc3RhdGljIGludCBtYXhEYXlPZk1vbnRoKGludCB5ZWFy
LCBpbnQgbW9udGgpCi17Ci0gICAgaWYgKG1vbnRoICE9IDEpIC8vIEZlYnJ1YXJ5PwotICAgICAg
ICByZXR1cm4gZGF5c0luTW9udGhbbW9udGhdOwotICAgIHJldHVybiBpc0xlYXBZZWFyKHllYXIp
ID8gMjkgOiAyODsKLX0KLQotLy8gJ21vbnRoJyBpcyAwLWJhc2VkLgotc3RhdGljIGludCBkYXlP
ZldlZWsoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKLXsKLSAgICBpbnQgc2hpZnRlZE1v
bnRoID0gbW9udGggKyAyOwotICAgIC8vIDI6SmFudWFyeSwgMzpGZWJ1cnVhcnksIDQ6TWFyY2gs
IC4uLgotCi0gICAgLy8gWmVsbGVyJ3MgY29uZ3J1ZW5jZQotICAgIGlmIChzaGlmdGVkTW9udGgg
PD0gMykgewotICAgICAgICBzaGlmdGVkTW9udGggKz0gMTI7Ci0gICAgICAgIHllYXItLTsKLSAg
ICB9Ci0gICAgLy8gNDpNYXJjaCwgLi4uLCAxNDpKYW51YXJ5LCAxNTpGZWJydWFyeQotCi0gICAg
aW50IGhpZ2hZZWFyID0geWVhciAvIDEwMDsKLSAgICBpbnQgbG93WWVhciA9IHllYXIgJSAxMDA7
Ci0gICAgLy8gV2UgYWRkIDYgdG8gbWFrZSB0aGUgcmVzdWx0IFN1bmRheS1vcmlnaW4uCi0gICAg
aW50IHJlc3VsdCA9IChkYXkgKyAxMyAqIHNoaWZ0ZWRNb250aCAvIDUgKyBsb3dZZWFyICsgbG93
WWVhciAvIDQgKyBoaWdoWWVhciAvIDQgKyA1ICogaGlnaFllYXIgKyA2KSAlIDc7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotaW50IERhdGVDb21wb25lbnRzOjptYXhXZWVrTnVtYmVySW5ZZWFy
KCkgY29uc3QKLXsKLSAgICBpbnQgZGF5ID0gZGF5T2ZXZWVrKG1feWVhciwgMCwgMSk7IC8vIEph
bnVhcnkgMS4KLSAgICByZXR1cm4gZGF5ID09IFRodXJzZGF5IHx8IChkYXkgPT0gV2VkbmVzZGF5
ICYmIGlzTGVhcFllYXIobV95ZWFyKSkgPyBtYXhpbXVtV2Vla051bWJlciA6IG1heGltdW1XZWVr
TnVtYmVyIC0gMTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGNvdW50RGlnaXRzKGNvbnN0IFVDaGFy
KiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQpCi17Ci0gICAgdW5zaWduZWQg
aW5kZXggPSBzdGFydDsKLSAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKLSAg
ICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc3JjW2luZGV4XSkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIGluZGV4IC0gc3RhcnQ7Ci19Ci0KLS8vIFZlcnkgc3RyaWN0IGlu
dGVnZXIgcGFyc2VyLiBEbyBub3QgYWxsb3cgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNl
IHVubGlrZSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoKS4KLXN0YXRpYyBib29sIHRvSW50KGNvbnN0
IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgcGFyc2VTdGFydCwgdW5zaWdu
ZWQgcGFyc2VMZW5ndGgsIGludCYgb3V0KQotewotICAgIGlmIChwYXJzZVN0YXJ0ICsgcGFyc2VM
ZW5ndGggPiBsZW5ndGggfHwgcGFyc2VMZW5ndGggPD0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGludCB2YWx1ZSA9IDA7Ci0gICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSBzcmMgKyBw
YXJzZVN0YXJ0OwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBjdXJyZW50ICsgcGFyc2VMZW5ndGg7
Ci0KLSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzIGZvciBJ
U08gODYwMS4KLSAgICBmb3IgKDsgY3VycmVudCA8IGVuZDsgKytjdXJyZW50KSB7Ci0gICAgICAg
IGlmICghaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaW50IGRpZ2l0ID0gKmN1cnJlbnQgLSAnMCc7Ci0gICAgICAgIGlmICh2YWx1ZSA+
IChJTlRfTUFYIC0gZGlnaXQpIC8gMTApIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDEwICsgZGlnaXQ7Ci0g
ICAgfQotICAgIG91dCA9IHZhbHVlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERhdGVD
b21wb25lbnRzOjpwYXJzZVllYXIoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCkKLXsKLSAgICB1bnNpZ25lZCBkaWdpdHNMZW5n
dGggPSBjb3VudERpZ2l0cyhzcmMsIGxlbmd0aCwgc3RhcnQpOwotICAgIC8vIE5lZWRzIGF0IGxl
YXN0IDQgZGlnaXRzIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQuCi0gICAgaWYgKGRpZ2l0c0xl
bmd0aCA8IDQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgeWVhcjsKLSAgICBpZiAo
IXRvSW50KHNyYywgbGVuZ3RoLCBzdGFydCwgZGlnaXRzTGVuZ3RoLCB5ZWFyKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICh5ZWFyIDwgbWluaW11bVllYXIoKSB8fCB5ZWFyID4gbWF4
aW11bVllYXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1feWVhciA9IHllYXI7Ci0g
ICAgZW5kID0gc3RhcnQgKyBkaWdpdHNMZW5ndGg7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBib29sIHdpdGhpbkhUTUxEYXRlTGltaXRzKGludCB5ZWFyLCBpbnQgbW9udGgpCi17Ci0g
ICAgaWYgKHllYXIgPCBEYXRlQ29tcG9uZW50czo6bWluaW11bVllYXIoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICh5ZWFyIDwgRGF0ZUNvbXBvbmVudHM6Om1heGltdW1ZZWFyKCkp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtb250aCA8PSBtYXhpbXVtTW9udGhJ
bk1heGltdW1ZZWFyOwotfQotCi1zdGF0aWMgYm9vbCB3aXRoaW5IVE1MRGF0ZUxpbWl0cyhpbnQg
eWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXkpCi17Ci0gICAgaWYgKHllYXIgPCBEYXRlQ29t
cG9uZW50czo6bWluaW11bVllYXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICh5
ZWFyIDwgRGF0ZUNvbXBvbmVudHM6Om1heGltdW1ZZWFyKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChtb250aCA8IG1heGltdW1Nb250aEluTWF4aW11bVllYXIpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBtb250aERheSA8PSBtYXhpbXVtRGF5SW5NYXhpbXVtTW9u
dGg7Ci19Ci0KLXN0YXRpYyBib29sIHdpdGhpbkhUTUxEYXRlTGltaXRzKGludCB5ZWFyLCBpbnQg
bW9udGgsIGludCBtb250aERheSwgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGlu
dCBtaWxsaXNlY29uZCkKLXsKLSAgICBpZiAoeWVhciA8IERhdGVDb21wb25lbnRzOjptaW5pbXVt
WWVhcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHllYXIgPCBEYXRlQ29tcG9u
ZW50czo6bWF4aW11bVllYXIoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKG1vbnRo
IDwgbWF4aW11bU1vbnRoSW5NYXhpbXVtWWVhcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
aWYgKG1vbnRoRGF5IDwgbWF4aW11bURheUluTWF4aW11bU1vbnRoKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAobW9udGhEYXkgPiBtYXhpbXVtRGF5SW5NYXhpbXVtTW9udGgpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyAoeWVhciwgbW9udGgsIG1vbnRoRGF5KSA9IChtYXhp
bXVtWWVhciwgbWF4aW11bU1vbnRoSW5NYXhpbXVtWWVhciwgbWF4aW11bURheUluTWF4aW11bU1v
bnRoKQotICAgIHJldHVybiAhaG91ciAmJiAhbWludXRlICYmICFzZWNvbmQgJiYgIW1pbGxpc2Vj
b25kOwotfQotCi1ib29sIERhdGVDb21wb25lbnRzOjphZGREYXkoaW50IGRheURpZmYpCi17Ci0g
ICAgQVNTRVJUKG1fbW9udGhEYXkpOwotCi0gICAgaW50IGRheSA9IG1fbW9udGhEYXkgKyBkYXlE
aWZmOwotICAgIGlmIChkYXkgPiBtYXhEYXlPZk1vbnRoKG1feWVhciwgbV9tb250aCkpIHsKLSAg
ICAgICAgZGF5ID0gbV9tb250aERheTsKLSAgICAgICAgaW50IHllYXIgPSBtX3llYXI7Ci0gICAg
ICAgIGludCBtb250aCA9IG1fbW9udGg7Ci0gICAgICAgIGludCBtYXhEYXkgPSBtYXhEYXlPZk1v
bnRoKHllYXIsIG1vbnRoKTsKLSAgICAgICAgZm9yICg7IGRheURpZmYgPiAwOyAtLWRheURpZmYp
IHsKLSAgICAgICAgICAgICsrZGF5OwotICAgICAgICAgICAgaWYgKGRheSA+IG1heERheSkgewot
ICAgICAgICAgICAgICAgIGRheSA9IDE7Ci0gICAgICAgICAgICAgICAgKyttb250aDsKLSAgICAg
ICAgICAgICAgICBpZiAobW9udGggPj0gMTIpIHsgLy8gbW9udGggaXMgMC1vcmlnaW4uCi0gICAg
ICAgICAgICAgICAgICAgIG1vbnRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgKyt5ZWFyOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtYXhEYXkgPSBtYXhEYXlPZk1vbnRo
KHllYXIsIG1vbnRoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXdp
dGhpbkhUTUxEYXRlTGltaXRzKHllYXIsIG1vbnRoLCBkYXkpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBtX3llYXIgPSB5ZWFyOwotICAgICAgICBtX21vbnRoID0gbW9udGg7
Ci0gICAgfSBlbHNlIGlmIChkYXkgPCAxKSB7Ci0gICAgICAgIGludCBtb250aCA9IG1fbW9udGg7
Ci0gICAgICAgIGludCB5ZWFyID0gbV95ZWFyOwotICAgICAgICBkYXkgPSBtX21vbnRoRGF5Owot
ICAgICAgICBmb3IgKDsgZGF5RGlmZiA8IDA7ICsrZGF5RGlmZikgewotICAgICAgICAgICAgLS1k
YXk7Ci0gICAgICAgICAgICBpZiAoZGF5IDwgMSkgewotICAgICAgICAgICAgICAgIC0tbW9udGg7
Ci0gICAgICAgICAgICAgICAgaWYgKG1vbnRoIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBt
b250aCA9IDExOwotICAgICAgICAgICAgICAgICAgICAtLXllYXI7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGRheSA9IG1heERheU9mTW9udGgoeWVhciwgbW9udGgpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMo
eWVhciwgbW9udGgsIGRheSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
eWVhciA9IHllYXI7Ci0gICAgICAgIG1fbW9udGggPSBtb250aDsKLSAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgZGF5KSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgbV9tb250aERheSA9IGRheTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEYXRlQ29tcG9uZW50czo6YWRkTWludXRlKGludCBt
aW51dGUpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkanVzdCB0aW1lem9u
ZSBvZmZzZXQuIFNvIG1feWVhciwgbV9tb250aCwKLSAgICAvLyBtX21vbnRoRGF5IGhhdmUgdmFs
dWVzIGJldHdlZW4gdGhlIGxvd2VyIGFuZCBoaWdoZXIgbGltaXRzLgotICAgIEFTU0VSVCh3aXRo
aW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9udGgsIG1fbW9udGhEYXkpKTsKLQotICAgIGlu
dCBjYXJyeTsKLSAgICAvLyBtaW51dGUgY2FuIGJlIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiA1
OS4KLSAgICBtaW51dGUgKz0gbV9taW51dGU7Ci0gICAgaWYgKG1pbnV0ZSA+IDU5KSB7Ci0gICAg
ICAgIGNhcnJ5ID0gbWludXRlIC8gNjA7Ci0gICAgICAgIG1pbnV0ZSA9IG1pbnV0ZSAlIDYwOwot
ICAgIH0gZWxzZSBpZiAobWludXRlIDwgMCkgewotICAgICAgICBjYXJyeSA9ICg1OSAtIG1pbnV0
ZSkgLyA2MDsKLSAgICAgICAgbWludXRlICs9IGNhcnJ5ICogNjA7Ci0gICAgICAgIGNhcnJ5ID0g
LWNhcnJ5OwotICAgICAgICBBU1NFUlQobWludXRlID49IDAgJiYgbWludXRlIDw9IDU5KTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoIXdpdGhpbkhUTUxEYXRlTGltaXRzKG1feWVhciwgbV9t
b250aCwgbV9tb250aERheSwgbV9ob3VyLCBtaW51dGUsIG1fc2Vjb25kLCBtX21pbGxpc2Vjb25k
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9taW51dGUgPSBtaW51dGU7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGludCBob3VyID0gbV9ob3VyICsg
Y2Fycnk7Ci0gICAgaWYgKGhvdXIgPiAyMykgewotICAgICAgICBjYXJyeSA9IGhvdXIgLyAyNDsK
LSAgICAgICAgaG91ciA9IGhvdXIgJSAyNDsKLSAgICB9IGVsc2UgaWYgKGhvdXIgPCAwKSB7Ci0g
ICAgICAgIGNhcnJ5ID0gKDIzIC0gaG91cikgLyAyNDsKLSAgICAgICAgaG91ciArPSBjYXJyeSAq
IDI0OwotICAgICAgICBjYXJyeSA9IC1jYXJyeTsKLSAgICAgICAgQVNTRVJUKGhvdXIgPj0gMCAm
JiBob3VyIDw9IDIzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIXdpdGhpbkhUTUxEYXRl
TGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgaG91ciwgbWludXRlLCBtX3NlY29u
ZCwgbV9taWxsaXNlY29uZCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
bWludXRlID0gbWludXRlOwotICAgICAgICBtX2hvdXIgPSBob3VyOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgaWYgKCFhZGREYXkoY2FycnkpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9udGgsIG1fbW9u
dGhEYXksIGhvdXIsIG1pbnV0ZSwgbV9zZWNvbmQsIG1fbWlsbGlzZWNvbmQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9taW51dGUgPSBtaW51dGU7Ci0gICAgbV9ob3VyID0gaG91cjsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gUGFyc2VzIGEgdGltZXpvbmUgcGFydCwgYW5kIGFk
anVzdCB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNl
Y29uZC4KLWJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlVGltZVpvbmUoY29uc3QgVUNoYXIqIHNy
YywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCkKLXsKLSAg
ICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWdu
ZWQgaW5kZXggPSBzdGFydDsKLSAgICBpZiAoc3JjW2luZGV4XSA9PSAnWicpIHsKLSAgICAgICAg
ZW5kID0gaW5kZXggKyAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29s
IG1pbnVzOwotICAgIGlmIChzcmNbaW5kZXhdID09ICcrJykKLSAgICAgICAgbWludXMgPSBmYWxz
ZTsKLSAgICBlbHNlIGlmIChzcmNbaW5kZXhdID09ICctJykKLSAgICAgICAgbWludXMgPSB0cnVl
OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsraW5kZXg7Ci0KLSAgICBp
bnQgaG91cjsKLSAgICBpbnQgbWludXRlOwotICAgIGlmICghdG9JbnQoc3JjLCBsZW5ndGgsIGlu
ZGV4LCAyLCBob3VyKSB8fCBob3VyIDwgMCB8fCBob3VyID4gMjMpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpbmRleCArPSAyOwotCi0gICAgaWYgKGluZGV4ID49IGxlbmd0aCB8fCBzcmNb
aW5kZXhdICE9ICc6JykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsraW5kZXg7Ci0KLSAg
ICBpZiAoIXRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwgMiwgbWludXRlKSB8fCBtaW51dGUgPCAw
IHx8IG1pbnV0ZSA+IDU5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW5kZXggKz0gMjsK
LQotICAgIGlmIChtaW51cykgewotICAgICAgICBob3VyID0gLWhvdXI7Ci0gICAgICAgIG1pbnV0
ZSA9IC1taW51dGU7Ci0gICAgfQotCi0gICAgLy8gU3VidHJhY3QgdGhlIHRpbWV6b25lIG9mZnNl
dC4KLSAgICBpZiAoIWFkZE1pbnV0ZSgtKGhvdXIgKiA2MCArIG1pbnV0ZSkpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgZW5kID0gaW5kZXg7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlTW9udGgoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQg
bGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCkKLXsKLSAgICBBU1NFUlQoc3Jj
KTsKLSAgICB1bnNpZ25lZCBpbmRleDsKLSAgICBpZiAoIXBhcnNlWWVhcihzcmMsIGxlbmd0aCwg
c3RhcnQsIGluZGV4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChpbmRleCA+PSBs
ZW5ndGggfHwgc3JjW2luZGV4XSAhPSAnLScpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAr
K2luZGV4OwotCi0gICAgaW50IG1vbnRoOwotICAgIGlmICghdG9JbnQoc3JjLCBsZW5ndGgsIGlu
ZGV4LCAyLCBtb250aCkgfHwgbW9udGggPCAxIHx8IG1vbnRoID4gMTIpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAtLW1vbnRoOwotICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95
ZWFyLCBtb250aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX21vbnRoID0gbW9udGg7
Ci0gICAgZW5kID0gaW5kZXggKyAyOwotICAgIG1fdHlwZSA9IE1vbnRoOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIERhdGVDb21wb25lbnRzOjpwYXJzZURhdGUoY29uc3QgVUNoYXIqIHNy
YywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCkKLXsKLSAg
ICBBU1NFUlQoc3JjKTsKLSAgICB1bnNpZ25lZCBpbmRleDsKLSAgICBpZiAoIXBhcnNlTW9udGgo
c3JjLCBsZW5ndGgsIHN0YXJ0LCBpbmRleCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAv
LyAnLScgYW5kIDItZGlnaXRzIGFyZSBuZWVkZWQuCi0gICAgaWYgKGluZGV4ICsgMiA+PSBsZW5n
dGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoc3JjW2luZGV4XSAhPSAnLScpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICArK2luZGV4OwotCi0gICAgaW50IGRheTsKLSAgICBp
ZiAoIXRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwgMiwgZGF5KSB8fCBkYXkgPCAxIHx8IGRheSA+
IG1heERheU9mTW9udGgobV95ZWFyLCBtX21vbnRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBkYXkpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9tb250aERheSA9IGRheTsKLSAgICBlbmQgPSBpbmRl
eCArIDI7Ci0gICAgbV90eXBlID0gRGF0ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBE
YXRlQ29tcG9uZW50czo6cGFyc2VXZWVrKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0
aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpCi17Ci0gICAgQVNTRVJUKHNyYyk7Ci0g
ICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgaWYgKCFwYXJzZVllYXIoc3JjLCBsZW5ndGgsIHN0YXJ0
LCBpbmRleCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIDQgY2hhcmFjdGVycyAo
Jy0nICdXJyBkaWdpdCBkaWdpdCkgYXJlIG5lZWRlZC4KLSAgICBpZiAoaW5kZXggKyAzID49IGxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChzcmNbaW5kZXhdICE9ICctJykK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsraW5kZXg7Ci0gICAgaWYgKHNyY1tpbmRleF0g
IT0gJ1cnKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKytpbmRleDsKLQotICAgIGludCB3
ZWVrOwotICAgIGlmICghdG9JbnQoc3JjLCBsZW5ndGgsIGluZGV4LCAyLCB3ZWVrKSB8fCB3ZWVr
IDwgbWluaW11bVdlZWtOdW1iZXIgfHwgd2VlayA+IG1heFdlZWtOdW1iZXJJblllYXIoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3llYXIgPT0gbWF4aW11bVllYXIoKSAmJiB3
ZWVrID4gbWF4aW11bVdlZWtJbk1heGltdW1ZZWFyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgbV93ZWVrID0gd2VlazsKLSAgICBlbmQgPSBpbmRleCArIDI7Ci0gICAgbV90eXBlID0gV2Vl
azsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEYXRlQ29tcG9uZW50czo6cGFyc2VUaW1l
KGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkJiBlbmQpCi17Ci0gICAgQVNTRVJUKHNyYyk7Ci0gICAgaW50IGhvdXI7Ci0gICAgaWYgKCF0
b0ludChzcmMsIGxlbmd0aCwgc3RhcnQsIDIsIGhvdXIpIHx8IGhvdXIgPCAwIHx8IGhvdXIgPiAy
MykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhcnQgKyAy
OwotICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoc3JjW2luZGV4XSAhPSAnOicpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICArK2luZGV4
OwotCi0gICAgaW50IG1pbnV0ZTsKLSAgICBpZiAoIXRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwg
MiwgbWludXRlKSB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IDU5KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaW5kZXggKz0gMjsKLQotICAgIGludCBzZWNvbmQgPSAwOwotICAgIGludCBt
aWxsaXNlY29uZCA9IDA7Ci0gICAgLy8gT3B0aW9uYWwgc2Vjb25kIHBhcnQuCi0gICAgLy8gRG8g
bm90IHJldHVybiB3aXRoIGZhbHNlIGJlY2F1c2UgdGhlIHBhcnQgaXMgb3B0aW9uYWwuCi0gICAg
aWYgKGluZGV4ICsgMiA8IGxlbmd0aCAmJiBzcmNbaW5kZXhdID09ICc6JykgewotICAgICAgICBp
ZiAodG9JbnQoc3JjLCBsZW5ndGgsIGluZGV4ICsgMSwgMiwgc2Vjb25kKSAmJiBzZWNvbmQgPj0g
MCAmJiBzZWNvbmQgPD0gNTkpIHsKLSAgICAgICAgICAgIGluZGV4ICs9IDM7Ci0KLSAgICAgICAg
ICAgIC8vIE9wdGlvbmFsIGZyYWN0aW9uYWwgc2Vjb25kIHBhcnQuCi0gICAgICAgICAgICBpZiAo
aW5kZXggPCBsZW5ndGggJiYgc3JjW2luZGV4XSA9PSAnLicpIHsKLSAgICAgICAgICAgICAgICB1
bnNpZ25lZCBkaWdpdHNMZW5ndGggPSBjb3VudERpZ2l0cyhzcmMsIGxlbmd0aCwgaW5kZXggKyAx
KTsKLSAgICAgICAgICAgICAgICBpZiAoZGlnaXRzTGVuZ3RoID4gIDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgKytpbmRleDsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGRpZ2l0c0xlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvayA9IHRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwgMSwgbWlsbGlzZWNvbmQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbWlsbGlzZWNvbmQgKj0gMTAwOwotICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGRpZ2l0c0xlbmd0aCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvayA9IHRvSW50KHNyYywgbGVuZ3RoLCBpbmRleCwgMiwgbWlsbGlzZWNvbmQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgbWlsbGlzZWNvbmQgKj0gMTA7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSAvLyBkaWdpdHNMZW5ndGggPj0gMwotICAgICAgICAgICAgICAgICAgICAgICAg
b2sgPSB0b0ludChzcmMsIGxlbmd0aCwgaW5kZXgsIDMsIG1pbGxpc2Vjb25kKTsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOwotICAgICAgICAgICAgICAgICAgICBp
bmRleCArPSBkaWdpdHNMZW5ndGg7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIG1faG91ciA9IGhvdXI7Ci0gICAgbV9taW51dGUgPSBtaW51
dGU7Ci0gICAgbV9zZWNvbmQgPSBzZWNvbmQ7Ci0gICAgbV9taWxsaXNlY29uZCA9IG1pbGxpc2Vj
b25kOwotICAgIGVuZCA9IGluZGV4OwotICAgIG1fdHlwZSA9IFRpbWU7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWVMb2NhbChjb25zdCBV
Q2hhciogc3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5k
KQotewotICAgIEFTU0VSVChzcmMpOwotICAgIHVuc2lnbmVkIGluZGV4OwotICAgIGlmICghcGFy
c2VEYXRlKHNyYywgbGVuZ3RoLCBzdGFydCwgaW5kZXgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKGluZGV4ID49IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChzcmNbaW5kZXhdICE9ICdUJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsraW5kZXg7
Ci0gICAgaWYgKCFwYXJzZVRpbWUoc3JjLCBsZW5ndGgsIGluZGV4LCBlbmQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9u
dGgsIG1fbW9udGhEYXksIG1faG91ciwgbV9taW51dGUsIG1fc2Vjb25kLCBtX21pbGxpc2Vjb25k
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fdHlwZSA9IERhdGVUaW1lTG9jYWw7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGF0ZUNvbXBvbmVudHM6OnBhcnNlRGF0ZVRpbWUo
Y29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQmIGVuZCkKLXsKLSAgICBBU1NFUlQoc3JjKTsKLSAgICB1bnNpZ25lZCBpbmRleDsKLSAgICBp
ZiAoIXBhcnNlRGF0ZShzcmMsIGxlbmd0aCwgc3RhcnQsIGluZGV4KSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChpbmRleCA+PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoc3JjW2luZGV4XSAhPSAnVCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAr
K2luZGV4OwotICAgIGlmICghcGFyc2VUaW1lKHNyYywgbGVuZ3RoLCBpbmRleCwgaW5kZXgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwYXJzZVRpbWVab25lKHNyYywgbGVuZ3Ro
LCBpbmRleCwgZW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghd2l0aGluSFRN
TERhdGVMaW1pdHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIsIG1fbWludXRl
LCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBt
X3R5cGUgPSBEYXRlVGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGlubGluZSBk
b3VibGUgcG9zaXRpdmVGbW9kKGRvdWJsZSB2YWx1ZSwgZG91YmxlIGRpdmlkZXIpCi17Ci0gICAg
ZG91YmxlIHJlbWFpbmRlciA9IGZtb2QodmFsdWUsIGRpdmlkZXIpOwotICAgIHJldHVybiByZW1h
aW5kZXIgPCAwID8gcmVtYWluZGVyICsgZGl2aWRlciA6IHJlbWFpbmRlcjsKLX0KLQotdm9pZCBE
YXRlQ29tcG9uZW50czo6c2V0TWlsbGlzZWNvbmRzU2luY2VNaWRuaWdodEludGVybmFsKGRvdWJs
ZSBtc0luRGF5KQotewotICAgIEFTU0VSVChtc0luRGF5ID49IDAgJiYgbXNJbkRheSA8IG1zUGVy
RGF5KTsKLSAgICBtX21pbGxpc2Vjb25kID0gc3RhdGljX2Nhc3Q8aW50PihmbW9kKG1zSW5EYXks
IG1zUGVyU2Vjb25kKSk7Ci0gICAgZG91YmxlIHZhbHVlID0gZmxvb3IobXNJbkRheSAvIG1zUGVy
U2Vjb25kKTsKLSAgICBtX3NlY29uZCA9IHN0YXRpY19jYXN0PGludD4oZm1vZCh2YWx1ZSwgc2Vj
b25kc1Blck1pbnV0ZSkpOwotICAgIHZhbHVlID0gZmxvb3IodmFsdWUgLyBzZWNvbmRzUGVyTWlu
dXRlKTsKLSAgICBtX21pbnV0ZSA9IHN0YXRpY19jYXN0PGludD4oZm1vZCh2YWx1ZSwgbWludXRl
c1BlckhvdXIpKTsKLSAgICBtX2hvdXIgPSBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlIC8gbWludXRl
c1BlckhvdXIpOwotfQotCi1ib29sIERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5j
ZUVwb2NoRm9yRGF0ZUludGVybmFsKGRvdWJsZSBtcykKLXsKLSAgICBtX3llYXIgPSBtc1RvWWVh
cihtcyk7Ci0gICAgaW50IHllYXJEYXkgPSBkYXlJblllYXIobXMsIG1feWVhcik7Ci0gICAgbV9t
b250aCA9IG1vbnRoRnJvbURheUluWWVhcih5ZWFyRGF5LCBpc0xlYXBZZWFyKG1feWVhcikpOwot
ICAgIG1fbW9udGhEYXkgPSBkYXlJbk1vbnRoRnJvbURheUluWWVhcih5ZWFyRGF5LCBpc0xlYXBZ
ZWFyKG1feWVhcikpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERhdGVDb21wb25lbnRz
OjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShkb3VibGUgbXMpCi17Ci0gICAgbV90
eXBlID0gSW52YWxpZDsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobXMpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVy
bmFsKHJvdW5kKG1zKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXdpdGhpbkhU
TUxEYXRlTGltaXRzKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBtX3R5cGUgPSBEYXRlOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IERhdGVDb21wb25lbnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUoZG91
YmxlIG1zKQotewotICAgIG1fdHlwZSA9IEludmFsaWQ7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRl
KG1zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1zID0gcm91bmQobXMpOwotICAgIHNl
dE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHRJbnRlcm5hbChwb3NpdGl2ZUZtb2QobXMsIG1zUGVy
RGF5KSk7Ci0gICAgaWYgKCFzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFs
KG1zKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghd2l0aGluSFRNTERhdGVMaW1p
dHMobV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5LCBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29u
ZCwgbV9taWxsaXNlY29uZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUgPSBE
YXRlVGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEYXRlQ29tcG9uZW50czo6c2V0
TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVUaW1lTG9jYWwoZG91YmxlIG1zKQotewotICAg
IC8vIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIERhdGVUaW1lTG9jYWwgaXMgdGhlIHNhbWUg
YXMgRGF0ZVRpbWUgZXhjZXB0IG1fdHlwZS4KLSAgICBpZiAoIXNldE1pbGxpc2Vjb25kc1NpbmNl
RXBvY2hGb3JEYXRlVGltZShtcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3R5cGUg
PSBEYXRlVGltZUxvY2FsOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERhdGVDb21wb25l
bnRzOjpzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgoZG91YmxlIG1zKQotewotICAg
IG1fdHlwZSA9IEludmFsaWQ7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1zKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVJ
bnRlcm5hbChyb3VuZChtcykpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF3aXRo
aW5IVE1MRGF0ZUxpbWl0cyhtX3llYXIsIG1fbW9udGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgbV90eXBlID0gTW9udGg7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGF0ZUNv
bXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKQotewotICAg
IG1fdHlwZSA9IEludmFsaWQ7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKG1zKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHRJbnRlcm5hbChw
b3NpdGl2ZUZtb2Qocm91bmQobXMpLCBtc1BlckRheSkpOwotICAgIG1fdHlwZSA9IFRpbWU7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1vbnRoc1NpbmNl
RXBvY2goZG91YmxlIG1vbnRocykKLXsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobW9udGhzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1vbnRocyA9IHJvdW5kKG1vbnRocyk7Ci0gICAg
ZG91YmxlIGRvdWJsZU1vbnRoID0gcG9zaXRpdmVGbW9kKG1vbnRocywgMTIpOwotICAgIGRvdWJs
ZSBkb3VibGVZZWFyID0gMTk3MCArIChtb250aHMgLSBkb3VibGVNb250aCkgLyAxMjsKLSAgICBp
ZiAoZG91YmxlWWVhciA8IG1pbmltdW1ZZWFyKCkgfHwgbWF4aW11bVllYXIoKSA8IGRvdWJsZVll
YXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgeWVhciA9IHN0YXRpY19jYXN0PGlu
dD4oZG91YmxlWWVhcik7Ci0gICAgaW50IG1vbnRoID0gc3RhdGljX2Nhc3Q8aW50Pihkb3VibGVN
b250aCk7Ci0gICAgaWYgKCF3aXRoaW5IVE1MRGF0ZUxpbWl0cyh5ZWFyLCBtb250aCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3llYXIgPSB5ZWFyOwotICAgIG1fbW9udGggPSBtb250
aDsKLSAgICBtX3R5cGUgPSBNb250aDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy8gT2Zmc2V0
IGZyb20gSmFudWFyeSAxc3QgdG8gTW9uZGF5IG9mIHRoZSBJU08gODYwMSdzIGZpcnN0IHdlZWsu
Ci0vLyAgIGV4LiBJZiBKYW51YXJ5IDFzdCBpcyBGcmlkYXksIHN1Y2ggTW9uZGF5IGlzIDMgZGF5
cyBsYXRlci4gUmV0dXJucyAzLgotc3RhdGljIGludCBvZmZzZXRUbzFzdFdlZWtTdGFydChpbnQg
eWVhcikKLXsKLSAgICBpbnQgb2Zmc2V0VG8xc3RXZWVrU3RhcnQgPSAxIC0gZGF5T2ZXZWVrKHll
YXIsIDAsIDEpOwotICAgIGlmIChvZmZzZXRUbzFzdFdlZWtTdGFydCA8PSAtNCkKLSAgICAgICAg
b2Zmc2V0VG8xc3RXZWVrU3RhcnQgKz0gNzsKLSAgICByZXR1cm4gb2Zmc2V0VG8xc3RXZWVrU3Rh
cnQ7Ci19Ci0KLWJvb2wgRGF0ZUNvbXBvbmVudHM6OnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hG
b3JXZWVrKGRvdWJsZSBtcykKLXsKLSAgICBtX3R5cGUgPSBJbnZhbGlkOwotICAgIGlmICghc3Rk
Ojppc2Zpbml0ZShtcykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtcyA9IHJvdW5kKG1z
KTsKLQotICAgIG1feWVhciA9IG1zVG9ZZWFyKG1zKTsKLSAgICBpZiAobV95ZWFyIDwgbWluaW11
bVllYXIoKSB8fCBtX3llYXIgPiBtYXhpbXVtWWVhcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpbnQgeWVhckRheSA9IGRheUluWWVhcihtcywgbV95ZWFyKTsKLSAgICBpbnQgb2Zm
c2V0ID0gb2Zmc2V0VG8xc3RXZWVrU3RhcnQobV95ZWFyKTsKLSAgICBpZiAoeWVhckRheSA8IG9m
ZnNldCkgewotICAgICAgICAvLyBUaGUgZGF5IGJlbG9uZ3MgdG8gdGhlIGxhc3Qgd2VlayBvZiB0
aGUgcHJldmlvdXMgeWVhci4KLSAgICAgICAgbV95ZWFyLS07Ci0gICAgICAgIGlmIChtX3llYXIg
PD0gbWluaW11bVllYXIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV93
ZWVrID0gbWF4V2Vla051bWJlckluWWVhcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fd2Vl
ayA9ICgoeWVhckRheSAtIG9mZnNldCkgLyA3KSArIDE7Ci0gICAgICAgIGlmIChtX3dlZWsgPiBt
YXhXZWVrTnVtYmVySW5ZZWFyKCkpIHsKLSAgICAgICAgICAgIG1feWVhcisrOwotICAgICAgICAg
ICAgbV93ZWVrID0gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV95ZWFyID4gbWF4aW11bVll
YXIoKSB8fCAobV95ZWFyID09IG1heGltdW1ZZWFyKCkgJiYgbV93ZWVrID4gbWF4aW11bVdlZWtJ
bk1heGltdW1ZZWFyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgbV90
eXBlID0gV2VlazsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotZG91YmxlIERhdGVDb21wb25lbnRz
OjptaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1f
dHlwZSA9PSBUaW1lIHx8IG1fdHlwZSA9PSBEYXRlVGltZSB8fCBtX3R5cGUgPT0gRGF0ZVRpbWVM
b2NhbCk7Ci0gICAgcmV0dXJuICgobV9ob3VyICogbWludXRlc1BlckhvdXIgKyBtX21pbnV0ZSkg
KiBzZWNvbmRzUGVyTWludXRlICsgbV9zZWNvbmQpICogbXNQZXJTZWNvbmQgKyBtX21pbGxpc2Vj
b25kOwotfQotCi1kb3VibGUgRGF0ZUNvbXBvbmVudHM6Om1pbGxpc2Vjb25kc1NpbmNlRXBvY2go
KSBjb25zdAotewotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBEYXRlOgotICAgICAg
ICByZXR1cm4gZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVhciwgbV9tb250aCwgbV9tb250aERheSkg
KiBtc1BlckRheTsKLSAgICBjYXNlIERhdGVUaW1lOgotICAgIGNhc2UgRGF0ZVRpbWVMb2NhbDoK
LSAgICAgICAgcmV0dXJuIGRhdGVUb0RheXNGcm9tMTk3MChtX3llYXIsIG1fbW9udGgsIG1fbW9u
dGhEYXkpICogbXNQZXJEYXkgKyBtaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpOwotICAg
IGNhc2UgTW9udGg6Ci0gICAgICAgIHJldHVybiBkYXRlVG9EYXlzRnJvbTE5NzAobV95ZWFyLCBt
X21vbnRoLCAxKSAqIG1zUGVyRGF5OwotICAgIGNhc2UgVGltZToKLSAgICAgICAgcmV0dXJuIG1p
bGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JUaW1lKCk7Ci0gICAgY2FzZSBXZWVrOgotICAgICAgICBy
ZXR1cm4gKGRhdGVUb0RheXNGcm9tMTk3MChtX3llYXIsIDAsIDEpICsgb2Zmc2V0VG8xc3RXZWVr
U3RhcnQobV95ZWFyKSArIChtX3dlZWsgLSAxKSAqIDcpICogbXNQZXJEYXk7Ci0gICAgY2FzZSBJ
bnZhbGlkOgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGludmFsaWRNaWxsaXNlY29uZHMoKTsKLX0KLQotZG91YmxlIERhdGVDb21w
b25lbnRzOjptb250aHNTaW5jZUVwb2NoKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV90eXBlID09
IE1vbnRoKTsKLSAgICByZXR1cm4gKG1feWVhciAtIDE5NzApICogMTIgKyBtX21vbnRoOwotfQot
Ci1TdHJpbmcgRGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nRm9yVGltZShTZWNvbmRGb3JtYXQgZm9y
bWF0KSBjb25zdAotewotICAgIEFTU0VSVChtX3R5cGUgPT0gRGF0ZVRpbWUgfHwgbV90eXBlID09
IERhdGVUaW1lTG9jYWwgfHwgbV90eXBlID09IFRpbWUpOwotICAgIFNlY29uZEZvcm1hdCBlZmZl
Y3RpdmVGb3JtYXQgPSBmb3JtYXQ7Ci0gICAgaWYgKG1fbWlsbGlzZWNvbmQpCi0gICAgICAgIGVm
ZmVjdGl2ZUZvcm1hdCA9IE1pbGxpc2Vjb25kOwotICAgIGVsc2UgaWYgKGZvcm1hdCA9PSBOb25l
ICYmIG1fc2Vjb25kKQotICAgICAgICBlZmZlY3RpdmVGb3JtYXQgPSBTZWNvbmQ7Ci0KLSAgICBz
d2l0Y2ggKGVmZmVjdGl2ZUZvcm1hdCkgewotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICBGQUxMVEhST1VHSDsg
Ly8gVG8gTm9uZS4KLSNlbmRpZgotICAgIGNhc2UgTm9uZToKLSAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlMDJkOiUwMmQiLCBtX2hvdXIsIG1fbWludXRlKTsKLSAgICBjYXNlIFNlY29u
ZDoKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlMDJkOiUwMmQ6JTAyZCIsIG1faG91
ciwgbV9taW51dGUsIG1fc2Vjb25kKTsKLSAgICBjYXNlIE1pbGxpc2Vjb25kOgotICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwMmQ6JTAyZDolMDJkLiUwM2QiLCBtX2hvdXIsIG1fbWlu
dXRlLCBtX3NlY29uZCwgbV9taWxsaXNlY29uZCk7Ci0gICAgfQotfQotCi1TdHJpbmcgRGF0ZUNv
bXBvbmVudHM6OnRvU3RyaW5nKFNlY29uZEZvcm1hdCBmb3JtYXQpIGNvbnN0Ci17Ci0gICAgc3dp
dGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIERhdGU6Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiJTA0ZC0lMDJkLSUwMmQiLCBtX3llYXIsIG1fbW9udGggKyAxLCBtX21vbnRoRGF5KTsK
LSAgICBjYXNlIERhdGVUaW1lOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwNGQt
JTAyZC0lMDJkVCIsIG1feWVhciwgbV9tb250aCArIDEsIG1fbW9udGhEYXkpCi0gICAgICAgICAg
ICArIHRvU3RyaW5nRm9yVGltZShmb3JtYXQpICsgU3RyaW5nKCJaIik7Ci0gICAgY2FzZSBEYXRl
VGltZUxvY2FsOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwNGQtJTAyZC0lMDJk
VCIsIG1feWVhciwgbV9tb250aCArIDEsIG1fbW9udGhEYXkpCi0gICAgICAgICAgICArIHRvU3Ry
aW5nRm9yVGltZShmb3JtYXQpOwotICAgIGNhc2UgTW9udGg6Ci0gICAgICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiJTA0ZC0lMDJkIiwgbV95ZWFyLCBtX21vbnRoICsgMSk7Ci0gICAgY2FzZSBU
aW1lOgotICAgICAgICByZXR1cm4gdG9TdHJpbmdGb3JUaW1lKGZvcm1hdCk7Ci0gICAgY2FzZSBX
ZWVrOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUwNGQtVyUwMmQiLCBtX3llYXIs
IG1fd2Vlayk7Ci0gICAgY2FzZSBJbnZhbGlkOgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygiKEludmFsaWQgRGF0ZUNv
bXBvbmVudHMpIik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
NGFkZTJjMzkxMGQ3ZDQ4OWYzZTlmMzA0M2NkMTVlMWI1MTQ1OWU2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTMgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGF0
ZUNvbXBvbmVudHNfaAotI2RlZmluZSBEYXRlQ29tcG9uZW50c19oCi0KLSNpbmNsdWRlIDxsaW1p
dHM+Ci0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEEgRGF0ZUNvbXBvbmVudHMgaW5zdGFuY2Ug
cmVwcmVzZW50cyBvbmUgb2YgdGhlIGZvbGxvd2luZyBkYXRlIGFuZCB0aW1lIGNvbWJpbmF0aW9u
czoKLS8vICogTW9udGggdHlwZTogeWVhci1tb250aAotLy8gKiBEYXRlIHR5cGU6IHllYXItbW9u
dGgtZGF5Ci0vLyAqIFdlZWsgdHlwZTogeWVhci13ZWVrCi0vLyAqIFRpbWUgdHlwZTogaG91ci1t
aW51dGUtc2Vjb25kLW1pbGxpc2Vjb25kCi0vLyAqIERhdGVUaW1lIG9yIERhdGVUaW1lTG9jYWwg
dHlwZTogeWVhci1tb250aC1kYXkgaG91ci1taW51dGUtc2Vjb25kLW1pbGxpc2Vjb25kCi1jbGFz
cyBEYXRlQ29tcG9uZW50cyB7Ci1wdWJsaWM6Ci0gICAgRGF0ZUNvbXBvbmVudHMoKQotICAgICAg
ICA6IG1fbWlsbGlzZWNvbmQoMCkKLSAgICAgICAgLCBtX3NlY29uZCgwKQotICAgICAgICAsIG1f
bWludXRlKDApCi0gICAgICAgICwgbV9ob3VyKDApCi0gICAgICAgICwgbV9tb250aERheSgwKQot
ICAgICAgICAsIG1fbW9udGgoMCkKLSAgICAgICAgLCBtX3llYXIoMCkKLSAgICAgICAgLCBtX3dl
ZWsoMCkKLSAgICAgICAgLCBtX3R5cGUoSW52YWxpZCkKLSAgICB7Ci0gICAgfQotCi0gICAgZW51
bSBUeXBlIHsKLSAgICAgICAgSW52YWxpZCwKLSAgICAgICAgRGF0ZSwKLSAgICAgICAgRGF0ZVRp
bWUsCi0gICAgICAgIERhdGVUaW1lTG9jYWwsCi0gICAgICAgIE1vbnRoLAotICAgICAgICBUaW1l
LAotICAgICAgICBXZWVrLAotICAgIH07Ci0KLSAgICBpbnQgbWlsbGlzZWNvbmQoKSBjb25zdCB7
IHJldHVybiBtX21pbGxpc2Vjb25kOyB9Ci0gICAgaW50IHNlY29uZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vjb25kOyB9Ci0gICAgaW50IG1pbnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWludXRlOyB9
Ci0gICAgaW50IGhvdXIoKSBjb25zdCB7IHJldHVybiBtX2hvdXI7IH0KLSAgICBpbnQgbW9udGhE
YXkoKSBjb25zdCB7IHJldHVybiBtX21vbnRoRGF5OyB9Ci0gICAgaW50IG1vbnRoKCkgY29uc3Qg
eyByZXR1cm4gbV9tb250aDsgfQotICAgIGludCBmdWxsWWVhcigpIGNvbnN0IHsgcmV0dXJuIG1f
eWVhcjsgfQotICAgIGludCB3ZWVrKCkgY29uc3QgeyByZXR1cm4gbV93ZWVrOyB9Ci0gICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBlbnVtIFNlY29uZEZvcm1h
dCB7Ci0gICAgICAgIE5vbmUsIC8vIFN1cHByZXNzIHRoZSBzZWNvbmQgcGFydCBhbmQgdGhlIG1p
bGxpc2Vjb25kIHBhcnQgaWYgdGhleSBhcmUgMC4KLSAgICAgICAgU2Vjb25kLCAvLyBBbHdheXMg
c2hvdyB0aGUgc2Vjb25kIHBhcnQsIGFuZCBzdXBwcmVzcyB0aGUgbWlsbGlzZWNvbmQgcGFydCBp
ZiBpdCBpcyAwLgotICAgICAgICBNaWxsaXNlY29uZCAvLyBBbHdheXMgc2hvdyB0aGUgc2Vjb25k
IHBhcnQgYW5kIHRoZSBtaWxsaXNlY29uZCBwYXJ0LgotICAgIH07Ci0KLSAgICAvLyBSZXR1cm5z
IGFuIElTTyA4NjAxIHJlcHJlc2VudGF0aW9uIGZvciB0aGlzIGluc3RhbmNlLgotICAgIC8vIFRo
ZSBmb3JtYXQgYXJndW1lbnQgaXMgdmFsaWQgZm9yIERhdGVUaW1lLCBEYXRlVGltZUxvY2FsLCBh
bmQgVGltZSB0eXBlcy4KLSAgICBTdHJpbmcgdG9TdHJpbmcoU2Vjb25kRm9ybWF0IGZvcm1hdCA9
IE5vbmUpIGNvbnN0OwotCi0gICAgLy8gcGFyc2UqKCkgYW5kIHNldE1pbGxpc2Vjb25kc1NpbmNl
KigpIGZ1bmN0aW9ucyBhcmUgaW5pdGlhbGl6ZXJzIGZvciBhbgotICAgIC8vIERhdGVDb21wb25l
bnRzIGluc3RhbmNlLiBJZiB0aGVzZSBmdW5jdGlvbnMgcmV0dXJuIGZhbHNlLCB0aGUgaW5zdGFu
Y2UKLSAgICAvLyBtaWdodCBiZSBpbnZhbGlkLgotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBzaXgg
ZnVuY3Rpb25zIHBhcnNlIHRoZSBpbnB1dCAnc3JjJyB3aG9zZSBsZW5ndGggaXMKLSAgICAvLyAn
bGVuZ3RoJywgYW5kIHVwZGF0ZXMgc29tZSBmaWVsZHMgb2YgdGhpcyBpbnN0YW5jZS4gVGhlIHBh
cnNpbmcgc3RhcnRzIGF0Ci0gICAgLy8gc3JjW3N0YXJ0XSBhbmQgZXhhbWluZXMgY2hhcmFjdGVy
cyBiZWZvcmUgc3JjW2xlbmd0aF0uCi0gICAgLy8gJ3NyYycgbXVzdCBiZSBub24tbnVsbC4gVGhl
ICdzcmMnIHN0cmluZyBkb2Vzbid0IG5lZWQgdG8gYmUKLSAgICAvLyBudWxsLXRlcm1pbmF0ZWQu
Ci0gICAgLy8gVGhlIGZ1bmN0aW9ucyByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyc2luZyBzdWNjZWVk
cywgYW5kIHNldCAnZW5kJyB0byB0aGUKLSAgICAvLyBuZXh0IGluZGV4IGFmdGVyIHRoZSBsYXN0
IGNvbnN1bWVkLiBFeHRyYSBsZWFkaW5nIGNoYXJhY3RlcnMgY2F1c2UgcGFyc2UKLSAgICAvLyBm
YWlsdXJlcywgYW5kIHRoZSB0cmFpbGluZyBleHRyYSBjaGFyYWN0ZXJzIGRvbid0IGNhdXNlIHBh
cnNlIGZhaWx1cmVzLgotCi0gICAgLy8gU2V0cyB5ZWFyIGFuZCBtb250aC4KLSAgICBib29sIHBh
cnNlTW9udGgoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQmIGVuZCk7Ci0gICAgLy8gU2V0cyB5ZWFyLCBtb250aCBhbmQgbW9udGhEYXku
Ci0gICAgYm9vbCBwYXJzZURhdGUoY29uc3QgVUNoYXIqIHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7Ci0gICAgLy8gU2V0cyB5ZWFyIGFuZCB3ZWVr
LgotICAgIGJvb2wgcGFyc2VXZWVrKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpOwotICAgIC8vIFNldHMgaG91ciwgbWludXRl
LCBzZWNvbmQgYW5kIG1pbGxpc2Vjb25kLgotICAgIGJvb2wgcGFyc2VUaW1lKGNvbnN0IFVDaGFy
KiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkJiBlbmQpOwot
ICAgIC8vIFNldHMgeWVhciwgbW9udGgsIG1vbnRoRGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCBh
bmQgbWlsbGlzZWNvbmQuCi0gICAgYm9vbCBwYXJzZURhdGVUaW1lTG9jYWwoY29uc3QgVUNoYXIq
IHNyYywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQmIGVuZCk7Ci0g
ICAgLy8gU2V0cyB5ZWFyLCBtb250aCwgbW9udGhEYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFu
ZCBtaWxsaXNlY29uZCwgYW5kIGFkanVzdHMgdGltZXpvbmUuCi0gICAgYm9vbCBwYXJzZURhdGVU
aW1lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkJiBlbmQpOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBzZXRNaWxsaXNlY29uZHNTaW5j
ZUVwb2NoRm9yKigpIGZ1bmN0aW9ucyB0YWtlCi0gICAgLy8gdGhlIG51bWJlciBvZiBtaWxsaXNl
Y29uZHMgc2luY2UgMTk3MC0wMS0wMSAwMDowMDowMC4wMDAgVVRDIGFzCi0gICAgLy8gdGhlIGFy
Z3VtZW50LCBhbmQgdXBkYXRlIGFsbCBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nCi0gICAg
Ly8gRGF0ZUNvbXBvbmVudHMgdHlwZS4gVGhlIGZ1bmN0aW9ucyByZXR1cm4gdHJ1ZSBpZiBpdCBz
dWNjZWVkcywgYW5kCi0gICAgLy8gZmFsc2UgaWYgdGhleSBmYWlsLgotCi0gICAgLy8gRm9yIERh
dGUgdHlwZS4gVXBkYXRlcyBtX3llYXIsIG1fbW9udGggYW5kIG1fbW9udGhEYXkuCi0gICAgYm9v
bCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZShkb3VibGUgbXMpOwotICAgIC8vIEZv
ciBEYXRlVGltZSB0eXBlLiBVcGRhdGVzIG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwgbV9o
b3VyLCBtX21pbnV0ZSwgbV9zZWNvbmQgYW5kIG1fbWlsbGlzZWNvbmQuCi0gICAgYm9vbCBzZXRN
aWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUoZG91YmxlIG1zKTsKLSAgICAvLyBGb3Ig
RGF0ZVRpbWVMb2NhbCB0eXBlLiBVcGRhdGVzIG1feWVhciwgbV9tb250aCwgbV9tb250aERheSwg
bV9ob3VyLCBtX21pbnV0ZSwgbV9zZWNvbmQgYW5kIG1fbWlsbGlzZWNvbmQuCi0gICAgYm9vbCBz
ZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWVMb2NhbChkb3VibGUgbXMpOwotICAg
IC8vIEZvciBNb250aCB0eXBlLiBVcGRhdGVzIG1feWVhciBhbmQgbV9tb250aC4KLSAgICBib29s
IHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JNb250aChkb3VibGUgbXMpOwotICAgIC8vIEZv
ciBXZWVrIHR5cGUuIFVwZGF0ZXMgbV95ZWFyIGFuZCBtX3dlZWsuCi0gICAgYm9vbCBzZXRNaWxs
aXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayhkb3VibGUgbXMpOwotCi0gICAgLy8gRm9yIFRpbWUg
dHlwZS4gVXBkYXRlcyBtX2hvdXIsIG1fbWludXRlLCBtX3NlY29uZCBhbmQgbV9taWxsaXNlY29u
ZC4KLSAgICBib29sIHNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoZG91YmxlIG1zKTsKLQot
ICAgIC8vIEFub3RoZXIgaW5pdGlhbGl6ZXIgZm9yIE1vbnRoIHR5cGUuIFVwZGF0ZXMgbV95ZWFy
IGFuZCBtX21vbnRoLgotICAgIGJvb2wgc2V0TW9udGhzU2luY2VFcG9jaChkb3VibGUgbW9udGhz
KTsKLQotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgZnJvbSAxOTcw
LTAxLTAxIDAwOjAwOjAwIFVUQy4KLSAgICAvLyBGb3IgYSBEYXRlQ29tcG9uZW50cyBpbml0aWFs
aXplZCB3aXRoIHBhcnNlRGF0ZVRpbWVMb2NhbCgpLAotICAgIC8vIG1pbGxpc2Vjb25kc1NpbmNl
RXBvY2goKSByZXR1cm5zIGEgdmFsdWUgZm9yIFVUQyB0aW1lem9uZS4KLSAgICBkb3VibGUgbWls
bGlzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0OwotICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBv
ZiBtb250aHMgZnJvbSAxOTcwLTAxLgotICAgIC8vIERvIG5vdCBjYWxsIHRoaXMgZm9yIHR5cGVz
IG90aGVyIHRoYW4gTW9udGguCi0gICAgZG91YmxlIG1vbnRoc1NpbmNlRXBvY2goKSBjb25zdDsK
LSAgICBzdGF0aWMgaW5saW5lIGRvdWJsZSBpbnZhbGlkTWlsbGlzZWNvbmRzKCkgeyByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsgfQotCi0gICAgLy8gTWlu
aW11bSBhbmQgbWF4bWltdW0gbGltaXRzIGZvciBzZXRNaWxsaXNlY29uZHNTaW5jZSooKSwKLSAg
ICAvLyBzZXRNb250aHNTaW5jZUVwb2NoKCksIG1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKSwgYW5k
IG1vbnRoc1NpbmNlRXBvY2goKS4KLSAgICBzdGF0aWMgaW5saW5lIGRvdWJsZSBtaW5pbXVtRGF0
ZSgpIHsgcmV0dXJuIC02MjEzNTU5NjgwMDAwMC4wOyB9IC8vIDAwMDEtMDEtMDFUMDA6MDBaCi0g
ICAgc3RhdGljIGlubGluZSBkb3VibGUgbWluaW11bURhdGVUaW1lKCkgeyByZXR1cm4gLTYyMTM1
NTk2ODAwMDAwLjA7IH0gLy8gZGl0dG8uCi0gICAgc3RhdGljIGlubGluZSBkb3VibGUgbWluaW11
bU1vbnRoKCkgeyByZXR1cm4gKDEgLSAxOTcwKSAqIDEyLjAgKyAxIC0gMTsgfSAvLyAwMDAxLTAx
Ci0gICAgc3RhdGljIGlubGluZSBkb3VibGUgbWluaW11bVRpbWUoKSB7IHJldHVybiAwOyB9IC8v
IDAwOjAwOjAwLjAwMAotICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG1pbmltdW1XZWVrKCkgeyBy
ZXR1cm4gLTYyMTM1NTk2ODAwMDAwLjA7IH0gLy8gMDAwMS0wMS0wMSwgdGhlIGZpcnN0IE1vbmRh
eSBvZiAwMDAxLgotICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG1heGltdW1EYXRlKCkgeyByZXR1
cm4gODY0MDAwMDAwMDAwMDAwMC4wOyB9IC8vIDI3NTc2MC0wOS0xM1QwMDowMFoKLSAgICBzdGF0
aWMgaW5saW5lIGRvdWJsZSBtYXhpbXVtRGF0ZVRpbWUoKSB7IHJldHVybiA4NjQwMDAwMDAwMDAw
MDAwLjA7IH0gLy8gZGl0dG8uCi0gICAgc3RhdGljIGlubGluZSBkb3VibGUgbWF4aW11bU1vbnRo
KCkgeyByZXR1cm4gKDI3NTc2MCAtIDE5NzApICogMTIuMCArIDkgLSAxOyB9IC8vIDI3NTc2MC0w
OQotICAgIHN0YXRpYyBpbmxpbmUgZG91YmxlIG1heGltdW1UaW1lKCkgeyByZXR1cm4gODYzOTk5
OTk7IH0gLy8gMjM6NTk6NTkuOTk5Ci0gICAgc3RhdGljIGlubGluZSBkb3VibGUgbWF4aW11bVdl
ZWsoKSB7IHJldHVybiA4NjM5OTk5NTY4MDAwMDAwLjA7IH0gLy8gMjc1NzYwLTA5LTA4LCB0aGUg
TW9uZGF5IG9mIHRoZSB3ZWVrIGluY2x1ZGluZyAyNzU3NjAtMDktMTMuCi0KLSAgICAvLyBIVE1M
NSB1c2VzIElTTy04NjAxIGZvcm1hdCB3aXRoIHllYXIgPj0gMS4gR3JlZ29yaWFuIGNhbGVuZGFy
IHN0YXJ0ZWQgaW4KLSAgICAvLyAxNTgyLiBIb3dldmVyLCB3ZSBuZWVkIHRvIHN1cHBvcnQgMDAw
MS0wMS0wMSBpbiBHcmVnb3JpYW4gY2FsZW5kYXIgcnVsZS4KLSAgICBzdGF0aWMgaW5saW5lIGlu
dCBtaW5pbXVtWWVhcigpIHsgcmV0dXJuIDE7IH0KLSAgICAvLyBEYXRlIGluIEVDTUFTY3JpcHQg
Y2FuJ3QgcmVwcmVzZW50IGRhdGVzIGxhdGVyIHRoYW4gMjc1NzYwLTA5LTEzVDAwOjAwWi4KLSAg
ICAvLyBTbywgd2UgaGF2ZSB0aGUgc2FtZSB1cHBlciBsaW1pdCBpbiBIVE1MNSBkYXRlL3RpbWUg
dHlwZXMuCi0gICAgc3RhdGljIGlubGluZSBpbnQgbWF4aW11bVllYXIoKSB7IHJldHVybiAyNzU3
NjA7IH0KLSAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1XZWVrTnVtYmVyOwotICAgIHN0YXRp
YyBjb25zdCBpbnQgbWF4aW11bVdlZWtOdW1iZXI7Ci0KLXByaXZhdGU6Ci0gICAgLy8gUmV0dXJu
cyB0aGUgbWF4aW11bSB3ZWVrIG51bWJlciBpbiB0aGlzIERhdGVDb21wb25lbnRzJ3MgeWVhci4K
LSAgICAvLyBUaGUgcmVzdWx0IGlzIGVpdGhlciBvZiA1MiBhbmQgNTMuCi0gICAgaW50IG1heFdl
ZWtOdW1iZXJJblllYXIoKSBjb25zdDsKLSAgICBib29sIHBhcnNlWWVhcihjb25zdCBVQ2hhciog
c3JjLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCYgZW5kKTsKLSAg
ICBib29sIGFkZERheShpbnQpOwotICAgIGJvb2wgYWRkTWludXRlKGludCk7Ci0gICAgYm9vbCBw
YXJzZVRpbWVab25lKGNvbnN0IFVDaGFyKiBzcmMsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkJiBlbmQpOwotICAgIC8vIEhlbHBlciBmb3IgbWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaCgpLgotICAgIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yVGltZSgpIGNv
bnN0OwotICAgIC8vIEhlbHBlcnMgZm9yIHNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3IqKCku
Ci0gICAgYm9vbCBzZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZUludGVybmFsKGRvdWJs
ZSBtcyk7Ci0gICAgdm9pZCBzZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0SW50ZXJuYWwoZG91
YmxlIG1zKTsKLSAgICAvLyBIZWxwZXIgZm9yIHRvU3RyaW5nKCkuCi0gICAgU3RyaW5nIHRvU3Ry
aW5nRm9yVGltZShTZWNvbmRGb3JtYXQpIGNvbnN0OwotCi0gICAgLy8gbV93ZWVrRGF5IHZhbHVl
cwotICAgIGVudW0gewotICAgICAgICBTdW5kYXkgPSAwLAotICAgICAgICBNb25kYXksCi0gICAg
ICAgIFR1ZXNkYXksCi0gICAgICAgIFdlZG5lc2RheSwKLSAgICAgICAgVGh1cnNkYXksCi0gICAg
ICAgIEZyaWRheSwKLSAgICAgICAgU2F0dXJkYXksCi0gICAgfTsKLQotICAgIGludCBtX21pbGxp
c2Vjb25kOyAvLyAwIC0gOTk5Ci0gICAgaW50IG1fc2Vjb25kOwotICAgIGludCBtX21pbnV0ZTsK
LSAgICBpbnQgbV9ob3VyOwotICAgIGludCBtX21vbnRoRGF5OyAvLyAxIC0gMzEKLSAgICBpbnQg
bV9tb250aDsgLy8gMDpKYW51YXJ5IC0gMTE6RGVjZW1iZXIKLSAgICBpbnQgbV95ZWFyOyAvLyAg
MTU4MiAtCi0gICAgaW50IG1fd2VlazsgLy8gMSAtIDUzCi0KLSAgICBUeXBlIG1fdHlwZTsKLX07
Ci0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRGF0ZUNvbXBvbmVudHNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2Fs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5oCmluZGV4
IGE5MWZlODNjYjc5NmY0ZThjOTI1NzFhYjViOWZiNTE2MTg3MDExYTUuLjVlZDkwOWFkODc2NjNh
OWYwMDliYzVhNzFiNzFkMjQ5ZWU4YWVjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvUGxhdGZvcm1Mb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1BsYXRmb3JtTG9jYWxlLmgKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBQbGF0Zm9ybUxvY2FsZV9oCi0jZGVmaW5lIFBsYXRmb3JtTG9jYWxlX2gK
KyNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRGF0ZUNvbXBvbmVudHMuaCIKKyNpbmNsdWRlIDx3
dGYvRGF0ZUNvbXBvbmVudHMuaD4KICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTU1LDQgKzE1NCwzIEBAIGlubGluZSBzdGQ6
OnVuaXF1ZV9wdHI8TG9jYWxlPiBMb2NhbGU6OmNyZWF0ZURlZmF1bHQoKQogfQogCiB9Ci0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXpl
ZERhdGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVk
RGF0ZUNhY2hlLmgKaW5kZXggY2EzYmExZjA2ZmRkYjBiMTQ5MTcyOGU5YWE5OGIwZDg0YjhkYTk3
Yi4uMjA5MGRhYjAzYWYyYTM3NjBiYmU2ZWUyODUzYTU1OTc1MjRmNmZhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgK
QEAgLTI4LDggKzI4LDggQEAKIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyBmaWxlIHRvIExvY2FsaXpl
ZERhdGFDYWNoZUlPUy5oIGFuZCByZW1vdmUgdGhpcyBndWFyZC4KICNpZiBQTEFURk9STShJT1Mp
CiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgi
CisjaW5jbHVkZSA8d3RmL0RhdGVDb21wb25lbnRzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKaW5kZXggNmY0YzllMmZjYjBkMjljOWUyMmIxYjg4ZWU1
MmEyZmI2ZjE3YTBhYy4uYjExMmRhYjcwMGUwY2U1YjljM2Y5ZDRhYzNmMzE1ZDY0ZTY0YWRjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKQEAgLTI4
LDggKzI4LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMb2NhbGVNYWNfaAot
I2RlZmluZSBMb2NhbGVNYWNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbGF0Zm9ybUxv
Y2FsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSw5ICs0MCwxMSBAQCBPQkpD
X0NMQVNTIE5TQ2FsZW5kYXI7CiBPQkpDX0NMQVNTIE5TRGF0ZUZvcm1hdHRlcjsKIE9CSkNfQ0xB
U1MgTlNMb2NhbGU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQorbmFtZXNwYWNlIFdURiB7CiBj
bGFzcyBEYXRlQ29tcG9uZW50czsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBM
b2NhbGVNYWMgOiBwdWJsaWMgTG9jYWxlIHsKIHB1YmxpYzoKQEAgLTk4LDQgKzk5LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKaW5kZXggZDE5NjkzYTEyYTM0
NDkzMjU3MzY2YWE3OGM0OTcwMDUxOTg0ZGVkZS4uYmViY2NlMzg1ZWJmMjJhOWYyMzEyMDk4Yjhi
ZmQ3OTA5ZDQ0NDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiTG9jYWxlV2luLmgiCiAKLSNpbmNsdWRlICJEYXRlQ29tcG9uZW50cy5oIgogI2luY2x1
ZGUgIkRhdGVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2lu
Y2x1ZGUgPGxpbWl0cz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
d2luL0xvY2FsZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxl
V2luLmgKaW5kZXggMGZlZDNiYmYxYTMxNzQyNmIyMjc1ODVjMjljMmU0YWNiMGE4MzFmMy4uNTg0
MGZhYjAxYWZlMjExZjQ5NGVhYzVlYTYzYTk5YmM0ZDIwNTg1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKQEAgLTI4LDggKzI4LDcgQEAKICAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBMb2NhbGVXaW5faAotI2RlZmluZSBMb2NhbGVXaW5f
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQbGF0Zm9ybUxvY2FsZS5oIgogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KQEAgLTM5LDcgKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBEYXRlQ29tcG9uZW50czsKIHN0cnVjdCBEYXRlRm9ybWF0VG9rZW47CiAKIGNsYXNzIExv
Y2FsZVdpbiA6IHB1YmxpYyBMb2NhbGUgewpAQCAtODgsNCArODYsMyBAQCBwcml2YXRlOgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZDJlNjQxZTgxM2IwZDE4NTcwODdiNDhmNjBjYzc1
Mjc1NTQ4ZTZlNC4uZWFmNGRlNGQ3NTRiNTk1OWE0NjNjZmYzMjkzZGY3NmZhNGZmNDU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzIsNyArMzIs
NiBAQAogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuaCIKICNpbXBvcnQgIkNTU1ZhbHVlS2V5d29yZHMuaCIKLSNpbXBvcnQg
IkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRmlsZS5o
IgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5oIgpAQCAtNzAsNiArNjksNyBAQAogI2ltcG9y
dCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0NvcmVUZXh0U1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorI2ltcG9ydCA8d3RmL0RhdGVDb21w
b25lbnRzLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9S
ZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>